diff --git a/CMakeLists.txt b/CMakeLists.txt index 261c975ee1..66aae9967c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,6 +113,10 @@ if (MSVC) add_compile_options(/wd4244 /wd4267) endif () +if (${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15) + add_compile_definitions(BOOST_NO_CXX98_FUNCTION_BASE _HAS_AUTO_PTR_ETC=0) +endif() + if (MINGW) add_compile_options(-Wa,-mbig-obj) endif () diff --git a/README.md b/README.md index 01dcbc12a2..eb0fc4d9cb 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # Orca Slicer Orca Slicer is an open source slicer for FDM printers. You can download Orca Slicer here: [github releases page](https://github.com/SoftFever/OrcaSlicer/releases/). -![discord-mark-blue](https://github.com/SoftFever/OrcaSlicer/assets/103989404/b97d5ffc-072d-4d0a-bbda-e67ef373876f) Join community: [OrcaSlicer Official Discord Server](https://discord.gg/WTEkCR6SnV) +![discord-mark-blue](https://github.com/SoftFever/OrcaSlicer/assets/103989404/b97d5ffc-072d-4d0a-bbda-e67ef373876f) Join community: [OrcaSlicer Official Discord Server](https://discord.gg/P4VE9UY9gJ) # Main features - Auto calibrations for all printers diff --git a/deps/CURL/CURL.cmake b/deps/CURL/CURL.cmake index 4c82a12f7d..b8d18be9c8 100644 --- a/deps/CURL/CURL.cmake +++ b/deps/CURL/CURL.cmake @@ -70,7 +70,7 @@ orcaslicer_add_cmake_project(CURL ${_curl_platform_flags} ) -if (CMAKE_SYSTEM_NAME STREQUAL "Linux") +if (APPLE OR (CMAKE_SYSTEM_NAME STREQUAL "Linux")) add_dependencies(dep_CURL dep_OpenSSL) endif () diff --git a/deps/EXPAT/expat/CMakeLists.txt b/deps/EXPAT/expat/CMakeLists.txt index fa54c098f2..585a678b80 100644 --- a/deps/EXPAT/expat/CMakeLists.txt +++ b/deps/EXPAT/expat/CMakeLists.txt @@ -2,6 +2,65 @@ cmake_minimum_required(VERSION 3.0) project(EXPAT) +include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake) + +macro(expat_shy_set var default cache type desc) + # Macro expat_shy_set came into life because: + # - Expat was previously using an inconsistent mix of CMake's native set() + # and option() to define public build time options. + # - option() is more friendly than set() with regard to configuring an + # external project that is pulled in by means of add_subdirectory() -- + # see comments in issue #597 -- so we wanted to get away from set(). + # - option() auto-converts non-bool values to bool when writing to the CMake + # cache, so we needed something that supports non-bool better and hence + # wanted to get away from plain option(), too. + # + # As a result, this function serves as a hybrid between CMake's regular set() + # and option(): from set() it takes support for non-bool types and the function + # name and signature whereas from option() (with policy CMP0077 mode NEW) it + # takes being shy when a value has previously been defined for that variable. + # + # So that resolves all need for set(.. FORCE) when pulling in Expat by means of + # add_subdirectory(). + # + if(NOT ${cache} STREQUAL "CACHE") + message(SEND_ERROR "Macro usage is: expat_shy_set(var default CACHE type desc)") + endif() + + if(DEFINED ${var}) + # NOTE: The idea is to (ideally) only add to the cache if + # there is no cache entry, yet. "if(DEFINED CACHE{var})" + # requires CMake >=3.14. + if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.14" AND NOT DEFINED "CACHE{${var}}") + set("${var}" "${${var}}" CACHE "${type}" "${desc}") + endif() + else() + set("${var}" "${default}" CACHE "${type}" "${desc}") + endif() +endmacro() + +if(NOT WIN32) + expat_shy_set(EXPAT_WITH_GETRANDOM "AUTO" CACHE STRING "Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]") + expat_shy_set(EXPAT_WITH_SYS_GETRANDOM "AUTO" CACHE STRING "Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]") +endif() + +macro(evaluate_detection_results use_ref have_ref thing_lower thing_title) + if(${use_ref} AND NOT (${use_ref} STREQUAL "AUTO") AND NOT ${have_ref}) + message(SEND_ERROR + "Use of ${thing_lower} was enforced by ${use_ref}=ON but it could not be found.") + elseif(NOT ${use_ref} AND ${have_ref}) + message("${thing_title} was found but it will not be used due to ${use_ref}=OFF.") + set(${have_ref} 0) + endif() +endmacro() + +if(NOT WIN32) + evaluate_detection_results(EXPAT_WITH_GETRANDOM HAVE_GETRANDOM "function getrandom" "Function getrandom") + evaluate_detection_results(EXPAT_WITH_SYS_GETRANDOM HAVE_SYSCALL_GETRANDOM "syscall SYS_getrandom" "Syscall SYS_getrandom") +endif() + +configure_file(expat_configure.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/expat_configure.h") + if (BUILD_SHARED_LIBS AND MSVC) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) endif() @@ -12,7 +71,7 @@ add_library(expat xmltok.c ) -target_include_directories(expat PRIVATE ${PROJECT_SOURCE_DIR}) +target_include_directories(expat PRIVATE ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) include(GNUInstallDirs) diff --git a/deps/EXPAT/expat/COPYING b/deps/EXPAT/expat/COPYING index 092c83baee..ce9e593929 100644 --- a/deps/EXPAT/expat/COPYING +++ b/deps/EXPAT/expat/COPYING @@ -1,5 +1,5 @@ Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper -Copyright (c) 2001-2016 Expat maintainers +Copyright (c) 2001-2022 Expat maintainers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/deps/EXPAT/expat/ConfigureChecks.cmake b/deps/EXPAT/expat/ConfigureChecks.cmake new file mode 100644 index 0000000000..638f0aa282 --- /dev/null +++ b/deps/EXPAT/expat/ConfigureChecks.cmake @@ -0,0 +1,69 @@ +include(CheckCCompilerFlag) +include(CheckCSourceCompiles) +include(CheckIncludeFile) +include(CheckIncludeFiles) +include(CheckLibraryExists) +include(CheckSymbolExists) +include(TestBigEndian) + +check_include_file("dlfcn.h" HAVE_DLFCN_H) +check_include_file("fcntl.h" HAVE_FCNTL_H) +check_include_file("inttypes.h" HAVE_INTTYPES_H) +check_include_file("memory.h" HAVE_MEMORY_H) +check_include_file("stdint.h" HAVE_STDINT_H) +check_include_file("stdlib.h" HAVE_STDLIB_H) +check_include_file("strings.h" HAVE_STRINGS_H) +check_include_file("string.h" HAVE_STRING_H) +check_include_file("sys/stat.h" HAVE_SYS_STAT_H) +check_include_file("sys/types.h" HAVE_SYS_TYPES_H) +check_include_file("unistd.h" HAVE_UNISTD_H) + +check_symbol_exists("getpagesize" "unistd.h" HAVE_GETPAGESIZE) +check_symbol_exists("mmap" "sys/mman.h" HAVE_MMAP) +check_symbol_exists("getrandom" "sys/random.h" HAVE_GETRANDOM) + +if(EXPAT_WITH_LIBBSD) + set(CMAKE_REQUIRED_LIBRARIES "${LIB_BSD}") + set(_bsd "bsd/") +else() + set(_bsd "") +endif() +check_symbol_exists("arc4random_buf" "${_bsd}stdlib.h" HAVE_ARC4RANDOM_BUF) +if(NOT HAVE_ARC4RANDOM_BUF) + check_symbol_exists("arc4random" "${_bsd}stdlib.h" HAVE_ARC4RANDOM) +endif() +set(CMAKE_REQUIRED_LIBRARIES) + +#/* Define to 1 if you have the ANSI C header files. */ +check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) + +test_big_endian(WORDS_BIGENDIAN) +#/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +if(WORDS_BIGENDIAN) + set(BYTEORDER 4321) +else(WORDS_BIGENDIAN) + set(BYTEORDER 1234) +endif(WORDS_BIGENDIAN) + +if(HAVE_SYS_TYPES_H) + check_symbol_exists("off_t" "sys/types.h" OFF_T) + check_symbol_exists("size_t" "sys/types.h" SIZE_T) +else(HAVE_SYS_TYPES_H) + set(OFF_T "long") + set(SIZE_T "unsigned") +endif(HAVE_SYS_TYPES_H) + +check_c_source_compiles(" + #include /* for NULL */ + #include /* for syscall */ + #include /* for SYS_getrandom */ + int main() { + syscall(SYS_getrandom, NULL, 0, 0); + return 0; + }" + HAVE_SYSCALL_GETRANDOM) + +check_c_compiler_flag("-fno-strict-aliasing" FLAG_NO_STRICT_ALIASING) +check_c_compiler_flag("-fvisibility=hidden" FLAG_VISIBILITY) + +check_library_exists(m cos "" _EXPAT_LIBM_FOUND) diff --git a/deps/EXPAT/expat/README b/deps/EXPAT/expat/README deleted file mode 100644 index 40873a6f8b..0000000000 --- a/deps/EXPAT/expat/README +++ /dev/null @@ -1,146 +0,0 @@ -Expat, Release 2.2.0, stripped and modified for inclusion into Slic3r. -Only the library sources needed for static linking were left. - -The original README follows: ---------------------------------------------------------------------- - - - - Expat, Release 2.2.0 - -This is Expat, a C library for parsing XML, written by James Clark. -Expat is a stream-oriented XML parser. This means that you register -handlers with the parser before starting the parse. These handlers -are called when the parser discovers the associated structures in the -document being parsed. A start tag is an example of the kind of -structures for which you may register handlers. - -Windows users should use the expat_win32bin package, which includes -both precompiled libraries and executables, and source code for -developers. - -Expat is free software. You may copy, distribute, and modify it under -the terms of the License contained in the file COPYING distributed -with this package. This license is the same as the MIT/X Consortium -license. - -Versions of Expat that have an odd minor version (the middle number in -the release above), are development releases and should be considered -as beta software. Releases with even minor version numbers are -intended to be production grade software. - -If you are building Expat from a check-out from the CVS repository, -you need to run a script that generates the configure script using the -GNU autoconf and libtool tools. To do this, you need to have -autoconf 2.58 or newer. Run the script like this: - - ./buildconf.sh - -Once this has been done, follow the same instructions as for building -from a source distribution. - -To build Expat from a source distribution, you first run the -configuration shell script in the top level distribution directory: - - ./configure - -There are many options which you may provide to configure (which you -can discover by running configure with the --help option). But the -one of most interest is the one that sets the installation directory. -By default, the configure script will set things up to install -libexpat into /usr/local/lib, expat.h into /usr/local/include, and -xmlwf into /usr/local/bin. If, for example, you'd prefer to install -into /home/me/mystuff/lib, /home/me/mystuff/include, and -/home/me/mystuff/bin, you can tell configure about that with: - - ./configure --prefix=/home/me/mystuff - -Another interesting option is to enable 64-bit integer support for -line and column numbers and the over-all byte index: - - ./configure CPPFLAGS=-DXML_LARGE_SIZE - -However, such a modification would be a breaking change to the ABI -and is therefore not recommended for general use - e.g. as part of -a Linux distribution - but rather for builds with special requirements. - -After running the configure script, the "make" command will build -things and "make install" will install things into their proper -location. Have a look at the "Makefile" to learn about additional -"make" options. Note that you need to have write permission into -the directories into which things will be installed. - -If you are interested in building Expat to provide document -information in UTF-16 encoding rather than the default UTF-8, follow -these instructions (after having run "make distclean"): - - 1. For UTF-16 output as unsigned short (and version/error - strings as char), run: - - ./configure CPPFLAGS=-DXML_UNICODE - - For UTF-16 output as wchar_t (incl. version/error strings), - run: - - ./configure CFLAGS="-g -O2 -fshort-wchar" \ - CPPFLAGS=-DXML_UNICODE_WCHAR_T - - 2. Edit the MakeFile, changing: - - LIBRARY = libexpat.la - - to: - - LIBRARY = libexpatw.la - - (Note the additional "w" in the library name.) - - 3. Run "make buildlib" (which builds the library only). - Or, to save step 2, run "make buildlib LIBRARY=libexpatw.la". - - 4. Run "make installlib" (which installs the library only). - Or, if step 2 was omitted, run "make installlib LIBRARY=libexpatw.la". - -Using DESTDIR or INSTALL_ROOT is enabled, with INSTALL_ROOT being the default -value for DESTDIR, and the rest of the make file using only DESTDIR. -It works as follows: - $ make install DESTDIR=/path/to/image -overrides the in-makefile set DESTDIR, while both - $ INSTALL_ROOT=/path/to/image make install - $ make install INSTALL_ROOT=/path/to/image -use DESTDIR=$(INSTALL_ROOT), even if DESTDIR eventually is defined in the -environment, because variable-setting priority is -1) commandline -2) in-makefile -3) environment - -Note: This only applies to the Expat library itself, building UTF-16 versions -of xmlwf and the tests is currently not supported. - -Note for Solaris users: The "ar" command is usually located in -"/usr/ccs/bin", which is not in the default PATH. You will need to -add this to your path for the "make" command, and probably also switch -to GNU make (the "make" found in /usr/ccs/bin does not seem to work -properly -- apparently it does not understand .PHONY directives). If -you're using ksh or bash, use this command to build: - - PATH=/usr/ccs/bin:$PATH make - -When using Expat with a project using autoconf for configuration, you -can use the probing macro in conftools/expat.m4 to determine how to -include Expat. See the comments at the top of that file for more -information. - -A reference manual is available in the file doc/reference.html in this -distribution. - -The homepage for this project is http://www.libexpat.org/. There -are links there to connect you to the bug reports page. If you need -to report a bug when you don't have access to a browser, you may also -send a bug report by email to expat-bugs@mail.libexpat.org. - -Discussion related to the direction of future expat development takes -place on expat-discuss@mail.libexpat.org. Archives of this list and -other Expat-related lists may be found at: - - http://mail.libexpat.org/mailman/listinfo/ diff --git a/deps/EXPAT/expat/README.md b/deps/EXPAT/expat/README.md new file mode 100644 index 0000000000..72e46a5af7 --- /dev/null +++ b/deps/EXPAT/expat/README.md @@ -0,0 +1,274 @@ +Expat, Release 2.5.0, only picked the lib related files into Bambu Studio, built as static library + +The original README: +--------------------------------------------------------------------- + +[![Run Linux Travis CI tasks](https://github.com/libexpat/libexpat/actions/workflows/linux.yml/badge.svg)](https://github.com/libexpat/libexpat/actions/workflows/linux.yml) +[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/libexpat/libexpat?svg=true)](https://ci.appveyor.com/project/libexpat/libexpat) +[![Packaging status](https://repology.org/badge/tiny-repos/expat.svg)](https://repology.org/metapackage/expat/versions) +[![Downloads SourceForge](https://img.shields.io/sourceforge/dt/expat?label=Downloads%20SourceForge)](https://sourceforge.net/projects/expat/files/) +[![Downloads GitHub](https://img.shields.io/github/downloads/libexpat/libexpat/total?label=Downloads%20GitHub)](https://github.com/libexpat/libexpat/releases) + + +# Expat, Release 2.5.0 + +This is Expat, a C library for parsing XML, started by +[James Clark](https://en.wikipedia.org/wiki/James_Clark_%28programmer%29) in 1997. +Expat is a stream-oriented XML parser. This means that you register +handlers with the parser before starting the parse. These handlers +are called when the parser discovers the associated structures in the +document being parsed. A start tag is an example of the kind of +structures for which you may register handlers. + +Expat supports the following compilers: + +- GNU GCC >=4.5 +- LLVM Clang >=3.5 +- Microsoft Visual Studio >=15.0/2017 (rolling `${today} minus 5 years`) + +Windows users can use the +[`expat-win32bin-*.*.*.{exe,zip}` download](https://github.com/libexpat/libexpat/releases), +which includes both pre-compiled libraries and executables, and source code for +developers. + +Expat is [free software](https://www.gnu.org/philosophy/free-sw.en.html). +You may copy, distribute, and modify it under the terms of the License +contained in the file +[`COPYING`](https://github.com/libexpat/libexpat/blob/master/expat/COPYING) +distributed with this package. +This license is the same as the MIT/X Consortium license. + + +## Using libexpat in your CMake-Based Project + +There are two ways of using libexpat with CMake: + +### a) Module Mode + +This approach leverages CMake's own [module `FindEXPAT`](https://cmake.org/cmake/help/latest/module/FindEXPAT.html). + +Notice the *uppercase* `EXPAT` in the following example: + +```cmake +cmake_minimum_required(VERSION 3.0) # or 3.10, see below + +project(hello VERSION 1.0.0) + +find_package(EXPAT 2.2.8 MODULE REQUIRED) + +add_executable(hello + hello.c +) + +# a) for CMake >=3.10 (see CMake's FindEXPAT docs) +target_link_libraries(hello PUBLIC EXPAT::EXPAT) + +# b) for CMake >=3.0 +target_include_directories(hello PRIVATE ${EXPAT_INCLUDE_DIRS}) +target_link_libraries(hello PUBLIC ${EXPAT_LIBRARIES}) +``` + +### b) Config Mode + +This approach requires files from… + +- libexpat >=2.2.8 where packaging uses the CMake build system +or +- libexpat >=2.3.0 where packaging uses the GNU Autotools build system + on Linux +or +- libexpat >=2.4.0 where packaging uses the GNU Autotools build system + on macOS or MinGW. + +Notice the *lowercase* `expat` in the following example: + +```cmake +cmake_minimum_required(VERSION 3.0) + +project(hello VERSION 1.0.0) + +find_package(expat 2.2.8 CONFIG REQUIRED char dtd ns) + +add_executable(hello + hello.c +) + +target_link_libraries(hello PUBLIC expat::expat) +``` + + +## Building from a Git Clone + +If you are building Expat from a check-out from the +[Git repository](https://github.com/libexpat/libexpat/), +you need to run a script that generates the configure script using the +GNU autoconf and libtool tools. To do this, you need to have +autoconf 2.58 or newer. Run the script like this: + +```console +./buildconf.sh +``` + +Once this has been done, follow the same instructions as for building +from a source distribution. + + +## Building from a Source Distribution + +### a) Building with the configure script (i.e. GNU Autotools) + +To build Expat from a source distribution, you first run the +configuration shell script in the top level distribution directory: + +```console +./configure +``` + +There are many options which you may provide to configure (which you +can discover by running configure with the `--help` option). But the +one of most interest is the one that sets the installation directory. +By default, the configure script will set things up to install +libexpat into `/usr/local/lib`, `expat.h` into `/usr/local/include`, and +`xmlwf` into `/usr/local/bin`. If, for example, you'd prefer to install +into `/home/me/mystuff/lib`, `/home/me/mystuff/include`, and +`/home/me/mystuff/bin`, you can tell `configure` about that with: + +```console +./configure --prefix=/home/me/mystuff +``` + +Another interesting option is to enable 64-bit integer support for +line and column numbers and the over-all byte index: + +```console +./configure CPPFLAGS=-DXML_LARGE_SIZE +``` + +However, such a modification would be a breaking change to the ABI +and is therefore not recommended for general use — e.g. as part of +a Linux distribution — but rather for builds with special requirements. + +After running the configure script, the `make` command will build +things and `make install` will install things into their proper +location. Have a look at the `Makefile` to learn about additional +`make` options. Note that you need to have write permission into +the directories into which things will be installed. + +If you are interested in building Expat to provide document +information in UTF-16 encoding rather than the default UTF-8, follow +these instructions (after having run `make distclean`). +Please note that we configure with `--without-xmlwf` as xmlwf does not +support this mode of compilation (yet): + +1. Mass-patch `Makefile.am` files to use `libexpatw.la` for a library name: +
+ `find -name Makefile.am -exec sed + -e 's,libexpat\.la,libexpatw.la,' + -e 's,libexpat_la,libexpatw_la,' + -i {} +` + +1. Run `automake` to re-write `Makefile.in` files:
+ `automake` + +1. For UTF-16 output as unsigned short (and version/error strings as char), + run:
+ `./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf`
+ For UTF-16 output as `wchar_t` (incl. version/error strings), run:
+ `./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T + --without-xmlwf` +
Note: The latter requires libc compiled with `-fshort-wchar`, as well. + +1. Run `make` (which excludes xmlwf). + +1. Run `make install` (again, excludes xmlwf). + +Using `DESTDIR` is supported. It works as follows: + +```console +make install DESTDIR=/path/to/image +``` + +overrides the in-makefile set `DESTDIR`, because variable-setting priority is + +1. commandline +1. in-makefile +1. environment + +Note: This only applies to the Expat library itself, building UTF-16 versions +of xmlwf and the tests is currently not supported. + +When using Expat with a project using autoconf for configuration, you +can use the probing macro in `conftools/expat.m4` to determine how to +include Expat. See the comments at the top of that file for more +information. + +A reference manual is available in the file `doc/reference.html` in this +distribution. + + +### b) Building with CMake + +The CMake build system is still *experimental* and may replace the primary +build system based on GNU Autotools at some point when it is ready. + + +#### Available Options + +For an idea of the available (non-advanced) options for building with CMake: + +```console +# rm -f CMakeCache.txt ; cmake -D_EXPAT_HELP=ON -LH . | grep -B1 ':.*=' | sed 's,^--$,,' +// Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +// Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +// Path to a program. +DOCBOOK_TO_MAN:FILEPATH=/usr/bin/docbook2x-man + +// Build man page for xmlwf +EXPAT_BUILD_DOCS:BOOL=ON + +// Build the examples for expat library +EXPAT_BUILD_EXAMPLES:BOOL=ON + +// Build fuzzers for the expat library +EXPAT_BUILD_FUZZERS:BOOL=OFF + +// Build pkg-config file +EXPAT_BUILD_PKGCONFIG:BOOL=ON + +// Build the tests for expat library +EXPAT_BUILD_TESTS:BOOL=ON + +// Build the xmlwf tool for expat library +EXPAT_BUILD_TOOLS:BOOL=ON + +// Character type to use (char|ushort|wchar_t) [default=char] +EXPAT_CHAR_TYPE:STRING=char + +// Install expat files in cmake install target +EXPAT_ENABLE_INSTALL:BOOL=ON + +// Use /MT flag (static CRT) when compiling in MSVC +EXPAT_MSVC_STATIC_CRT:BOOL=OFF + +// Build fuzzers via ossfuzz for the expat library +EXPAT_OSSFUZZ_BUILD:BOOL=OFF + +// Build a shared expat library +EXPAT_SHARED_LIBS:BOOL=ON + +// Treat all compiler warnings as errors +EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF + +// Make use of getrandom function (ON|OFF|AUTO) [default=AUTO] +EXPAT_WITH_GETRANDOM:STRING=AUTO + +// Utilize libbsd (for arc4random_buf) +EXPAT_WITH_LIBBSD:BOOL=OFF + +// Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO] +EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO +``` diff --git a/deps/EXPAT/expat/ascii.h b/deps/EXPAT/expat/ascii.h index d10530b09b..1f594d2e54 100644 --- a/deps/EXPAT/expat/ascii.h +++ b/deps/EXPAT/expat/ascii.h @@ -1,5 +1,36 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1999-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2002 Fred L. Drake, Jr. + Copyright (c) 2007 Karl Waclawek + Copyright (c) 2017 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ #define ASCII_A 0x41 diff --git a/deps/EXPAT/expat/asciitab.h b/deps/EXPAT/expat/asciitab.h index 79a15c28ca..af766fb247 100644 --- a/deps/EXPAT/expat/asciitab.h +++ b/deps/EXPAT/expat/asciitab.h @@ -1,36 +1,66 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2002 Fred L. Drake, Jr. + Copyright (c) 2017 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, -/* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML, -/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, -/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, -/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, -/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, -/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, -/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, -/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, -/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, -/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, + /* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML, + /* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, + /* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, + /* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, + /* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, + /* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, + /* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, + /* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, + /* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, + /* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, + /* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, + /* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, + /* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, + /* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, + /* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, + /* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, + /* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/deps/EXPAT/expat/config.cmake.in b/deps/EXPAT/expat/config.cmake.in index 8edb5bbbd5..42c0116b1b 100644 --- a/deps/EXPAT/expat/config.cmake.in +++ b/deps/EXPAT/expat/config.cmake.in @@ -1,4 +1,4 @@ -include(${CMAKE_CURRENT_LIST_DIR}/EXPATTargets.cmake) -set(EXPAT_LIBRARIES EXPAT::expat) -set(EXPAT_INCLUDE_DIRS ${_IMPORT_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) - +include(${CMAKE_CURRENT_LIST_DIR}/EXPATTargets.cmake) +set(EXPAT_LIBRARIES EXPAT::expat) +set(EXPAT_INCLUDE_DIRS ${_IMPORT_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) + diff --git a/deps/EXPAT/expat/expat.h b/deps/EXPAT/expat/expat.h index 086e24b39c..1c83563cbf 100644 --- a/deps/EXPAT/expat/expat.h +++ b/deps/EXPAT/expat/expat.h @@ -1,19 +1,46 @@ -/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2000-2005 Fred L. Drake, Jr. + Copyright (c) 2001-2002 Greg Stein + Copyright (c) 2002-2016 Karl Waclawek + Copyright (c) 2016-2022 Sebastian Pipping + Copyright (c) 2016 Cristian Rodríguez + Copyright (c) 2016 Thomas Beutlich + Copyright (c) 2017 Rhodri James + Copyright (c) 2022 Thijs Schreijer + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef Expat_INCLUDED #define Expat_INCLUDED 1 -#ifdef __VMS -/* 0 1 2 3 0 1 2 3 - 1234567890123456789012345678901 1234567890123456789012345678901 */ -#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler -#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler -#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler -#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg -#endif - #include #include "expat_external.h" @@ -24,10 +51,9 @@ extern "C" { struct XML_ParserStruct; typedef struct XML_ParserStruct *XML_Parser; -/* Should this be defined using stdbool.h when C99 is available? */ typedef unsigned char XML_Bool; -#define XML_TRUE ((XML_Bool) 1) -#define XML_FALSE ((XML_Bool) 0) +#define XML_TRUE ((XML_Bool)1) +#define XML_FALSE ((XML_Bool)0) /* The XML_Status enum gives the possible return values for several API functions. The preprocessor #defines are included so this @@ -95,7 +121,13 @@ enum XML_Error { /* Added in 2.0. */ XML_ERROR_RESERVED_PREFIX_XML, XML_ERROR_RESERVED_PREFIX_XMLNS, - XML_ERROR_RESERVED_NAMESPACE_URI + XML_ERROR_RESERVED_NAMESPACE_URI, + /* Added in 2.2.1. */ + XML_ERROR_INVALID_ARGUMENT, + /* Added in 2.3.0. */ + XML_ERROR_NO_BUFFER, + /* Added in 2.4.0. */ + XML_ERROR_AMPLIFICATION_LIMIT_BREACH }; enum XML_Content_Type { @@ -135,25 +167,25 @@ enum XML_Content_Quant { typedef struct XML_cp XML_Content; struct XML_cp { - enum XML_Content_Type type; - enum XML_Content_Quant quant; - XML_Char * name; - unsigned int numchildren; - XML_Content * children; + enum XML_Content_Type type; + enum XML_Content_Quant quant; + XML_Char *name; + unsigned int numchildren; + XML_Content *children; }; - /* This is called for an element declaration. See above for - description of the model argument. It's the caller's responsibility - to free model when finished with it. + description of the model argument. It's the user code's responsibility + to free model when finished with it. See XML_FreeContentModel. + There is no need to free the model from the handler, it can be kept + around and freed at a later stage. */ -typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData, - const XML_Char *name, - XML_Content *model); +typedef void(XMLCALL *XML_ElementDeclHandler)(void *userData, + const XML_Char *name, + XML_Content *model); XMLPARSEAPI(void) -XML_SetElementDeclHandler(XML_Parser parser, - XML_ElementDeclHandler eldecl); +XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl); /* The Attlist declaration handler is called for *each* attribute. So a single Attlist declaration with multiple attributes declared will @@ -163,17 +195,12 @@ XML_SetElementDeclHandler(XML_Parser parser, value will be NULL in the case of "#REQUIRED". If "isrequired" is true and default is non-NULL, then this is a "#FIXED" default. */ -typedef void (XMLCALL *XML_AttlistDeclHandler) ( - void *userData, - const XML_Char *elname, - const XML_Char *attname, - const XML_Char *att_type, - const XML_Char *dflt, - int isrequired); +typedef void(XMLCALL *XML_AttlistDeclHandler)( + void *userData, const XML_Char *elname, const XML_Char *attname, + const XML_Char *att_type, const XML_Char *dflt, int isrequired); XMLPARSEAPI(void) -XML_SetAttlistDeclHandler(XML_Parser parser, - XML_AttlistDeclHandler attdecl); +XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl); /* The XML declaration handler is called for *both* XML declarations and text declarations. The way to distinguish is that the version @@ -183,15 +210,13 @@ XML_SetAttlistDeclHandler(XML_Parser parser, was no standalone parameter in the declaration, that it was given as no, or that it was given as yes. */ -typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData, - const XML_Char *version, - const XML_Char *encoding, - int standalone); +typedef void(XMLCALL *XML_XmlDeclHandler)(void *userData, + const XML_Char *version, + const XML_Char *encoding, + int standalone); XMLPARSEAPI(void) -XML_SetXmlDeclHandler(XML_Parser parser, - XML_XmlDeclHandler xmldecl); - +XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler xmldecl); typedef struct { void *(*malloc_fcn)(size_t size); @@ -215,11 +240,21 @@ XML_ParserCreate(const XML_Char *encoding); and the local part will be concatenated without any separator. It is a programming error to use the separator '\0' with namespace triplets (see XML_SetReturnNSTriplet). + If a namespace separator is chosen that can be part of a URI or + part of an XML name, splitting an expanded name back into its + 1, 2 or 3 original parts on application level in the element handler + may end up vulnerable, so these are advised against; sane choices for + a namespace separator are e.g. '\n' (line feed) and '|' (pipe). + + Note that Expat does not validate namespace URIs (beyond encoding) + against RFC 3986 today (and is not required to do so with regard to + the XML 1.0 namespaces specification) but it may start doing that + in future releases. Before that, an application using Expat must + be ready to receive namespace URIs containing non-URI characters. */ XMLPARSEAPI(XML_Parser) XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); - /* Constructs a new parser using the memory management suite referred to by memsuite. If memsuite is NULL, then use the standard library memory suite. If namespaceSeparator is non-NULL it creates a parser with @@ -235,7 +270,7 @@ XML_ParserCreate_MM(const XML_Char *encoding, const XML_Char *namespaceSeparator); /* Prepare a parser object to be re-used. This is particularly - valuable when memory allocation overhead is disproportionatly high, + valuable when memory allocation overhead is disproportionately high, such as when a large number of small documnents need to be parsed. All handlers are cleared from the parser, except for the unknownEncodingHandler. The parser's external state is re-initialized @@ -249,31 +284,27 @@ XML_ParserReset(XML_Parser parser, const XML_Char *encoding); /* atts is array of name/value pairs, terminated by 0; names and values are 0 terminated. */ -typedef void (XMLCALL *XML_StartElementHandler) (void *userData, - const XML_Char *name, - const XML_Char **atts); - -typedef void (XMLCALL *XML_EndElementHandler) (void *userData, - const XML_Char *name); +typedef void(XMLCALL *XML_StartElementHandler)(void *userData, + const XML_Char *name, + const XML_Char **atts); +typedef void(XMLCALL *XML_EndElementHandler)(void *userData, + const XML_Char *name); /* s is not 0 terminated. */ -typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData, - const XML_Char *s, - int len); +typedef void(XMLCALL *XML_CharacterDataHandler)(void *userData, + const XML_Char *s, int len); /* target and data are 0 terminated */ -typedef void (XMLCALL *XML_ProcessingInstructionHandler) ( - void *userData, - const XML_Char *target, - const XML_Char *data); +typedef void(XMLCALL *XML_ProcessingInstructionHandler)(void *userData, + const XML_Char *target, + const XML_Char *data); /* data is 0 terminated */ -typedef void (XMLCALL *XML_CommentHandler) (void *userData, - const XML_Char *data); +typedef void(XMLCALL *XML_CommentHandler)(void *userData, const XML_Char *data); -typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData); -typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData); +typedef void(XMLCALL *XML_StartCdataSectionHandler)(void *userData); +typedef void(XMLCALL *XML_EndCdataSectionHandler)(void *userData); /* This is called for any characters in the XML document for which there is no applicable handler. This includes both characters that @@ -288,25 +319,23 @@ typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData); default handler: for example, a comment might be split between multiple calls. */ -typedef void (XMLCALL *XML_DefaultHandler) (void *userData, - const XML_Char *s, - int len); +typedef void(XMLCALL *XML_DefaultHandler)(void *userData, const XML_Char *s, + int len); /* This is called for the start of the DOCTYPE declaration, before any DTD or internal subset is parsed. */ -typedef void (XMLCALL *XML_StartDoctypeDeclHandler) ( - void *userData, - const XML_Char *doctypeName, - const XML_Char *sysid, - const XML_Char *pubid, - int has_internal_subset); +typedef void(XMLCALL *XML_StartDoctypeDeclHandler)(void *userData, + const XML_Char *doctypeName, + const XML_Char *sysid, + const XML_Char *pubid, + int has_internal_subset); -/* This is called for the start of the DOCTYPE declaration when the +/* This is called for the end of the DOCTYPE declaration when the closing > is encountered, but after processing any external subset. */ -typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); +typedef void(XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); /* This is called for entity declarations. The is_parameter_entity argument will be non-zero if the entity is a parameter entity, zero @@ -314,7 +343,7 @@ typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); For internal entities (), value will be non-NULL and systemId, publicID, and notationName will be NULL. - The value string is NOT nul-terminated; the length is provided in + The value string is NOT null-terminated; the length is provided in the value_length argument. Since it is legal to have zero-length values, do not use this argument to test for internal entities. @@ -326,20 +355,14 @@ typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); Note that is_parameter_entity can't be changed to XML_Bool, since that would break binary compatibility. */ -typedef void (XMLCALL *XML_EntityDeclHandler) ( - void *userData, - const XML_Char *entityName, - int is_parameter_entity, - const XML_Char *value, - int value_length, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); +typedef void(XMLCALL *XML_EntityDeclHandler)( + void *userData, const XML_Char *entityName, int is_parameter_entity, + const XML_Char *value, int value_length, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName); XMLPARSEAPI(void) -XML_SetEntityDeclHandler(XML_Parser parser, - XML_EntityDeclHandler handler); +XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler); /* OBSOLETE -- OBSOLETE -- OBSOLETE This handler has been superseded by the EntityDeclHandler above. @@ -350,24 +373,20 @@ XML_SetEntityDeclHandler(XML_Parser parser, entityName, systemId and notationName arguments will never be NULL. The other arguments may be. */ -typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) ( - void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); +typedef void(XMLCALL *XML_UnparsedEntityDeclHandler)( + void *userData, const XML_Char *entityName, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName); /* This is called for a declaration of notation. The base argument is whatever was set by XML_SetBase. The notationName will never be NULL. The other arguments can be. */ -typedef void (XMLCALL *XML_NotationDeclHandler) ( - void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); +typedef void(XMLCALL *XML_NotationDeclHandler)(void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); /* When namespace processing is enabled, these are called once for each namespace declaration. The call to the start and end element @@ -375,14 +394,12 @@ typedef void (XMLCALL *XML_NotationDeclHandler) ( declaration handlers. For an xmlns attribute, prefix will be NULL. For an xmlns="" attribute, uri will be NULL. */ -typedef void (XMLCALL *XML_StartNamespaceDeclHandler) ( - void *userData, - const XML_Char *prefix, - const XML_Char *uri); +typedef void(XMLCALL *XML_StartNamespaceDeclHandler)(void *userData, + const XML_Char *prefix, + const XML_Char *uri); -typedef void (XMLCALL *XML_EndNamespaceDeclHandler) ( - void *userData, - const XML_Char *prefix); +typedef void(XMLCALL *XML_EndNamespaceDeclHandler)(void *userData, + const XML_Char *prefix); /* This is called if the document is not standalone, that is, it has an external subset or a reference to a parameter entity, but does not @@ -393,7 +410,7 @@ typedef void (XMLCALL *XML_EndNamespaceDeclHandler) ( conditions above this handler will only be called if the referenced entity was actually read. */ -typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData); +typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData); /* This is called for a reference to an external parsed general entity. The referenced entity is not automatically parsed. The @@ -429,12 +446,11 @@ typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData); Note that unlike other handlers the first argument is the parser, not userData. */ -typedef int (XMLCALL *XML_ExternalEntityRefHandler) ( - XML_Parser parser, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); +typedef int(XMLCALL *XML_ExternalEntityRefHandler)(XML_Parser parser, + const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); /* This is called in two situations: 1) An entity reference is encountered for which no declaration @@ -446,10 +462,9 @@ typedef int (XMLCALL *XML_ExternalEntityRefHandler) ( the event would be out of sync with the reporting of the declarations or attribute values */ -typedef void (XMLCALL *XML_SkippedEntityHandler) ( - void *userData, - const XML_Char *entityName, - int is_parameter_entity); +typedef void(XMLCALL *XML_SkippedEntityHandler)(void *userData, + const XML_Char *entityName, + int is_parameter_entity); /* This structure is filled in by the XML_UnknownEncodingHandler to provide information to the parser about encodings that are unknown @@ -506,8 +521,8 @@ typedef void (XMLCALL *XML_SkippedEntityHandler) ( typedef struct { int map[256]; void *data; - int (XMLCALL *convert)(void *data, const char *s); - void (XMLCALL *release)(void *data); + int(XMLCALL *convert)(void *data, const char *s); + void(XMLCALL *release)(void *data); } XML_Encoding; /* This is called for an encoding that is unknown to the parser. @@ -523,25 +538,21 @@ typedef struct { Otherwise it must return XML_STATUS_ERROR. If info does not describe a suitable encoding, then the parser will - return an XML_UNKNOWN_ENCODING error. + return an XML_ERROR_UNKNOWN_ENCODING error. */ -typedef int (XMLCALL *XML_UnknownEncodingHandler) ( - void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info); +typedef int(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info); XMLPARSEAPI(void) -XML_SetElementHandler(XML_Parser parser, - XML_StartElementHandler start, +XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end); XMLPARSEAPI(void) -XML_SetStartElementHandler(XML_Parser parser, - XML_StartElementHandler handler); +XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler handler); XMLPARSEAPI(void) -XML_SetEndElementHandler(XML_Parser parser, - XML_EndElementHandler handler); +XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler handler); XMLPARSEAPI(void) XML_SetCharacterDataHandler(XML_Parser parser, @@ -551,8 +562,7 @@ XMLPARSEAPI(void) XML_SetProcessingInstructionHandler(XML_Parser parser, XML_ProcessingInstructionHandler handler); XMLPARSEAPI(void) -XML_SetCommentHandler(XML_Parser parser, - XML_CommentHandler handler); +XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler); XMLPARSEAPI(void) XML_SetCdataSectionHandler(XML_Parser parser, @@ -572,20 +582,17 @@ XML_SetEndCdataSectionHandler(XML_Parser parser, default handler, or to the skipped entity handler, if one is set. */ XMLPARSEAPI(void) -XML_SetDefaultHandler(XML_Parser parser, - XML_DefaultHandler handler); +XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler); /* This sets the default handler but does not inhibit expansion of internal entities. The entity reference will not be passed to the default handler. */ XMLPARSEAPI(void) -XML_SetDefaultHandlerExpand(XML_Parser parser, - XML_DefaultHandler handler); +XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler); XMLPARSEAPI(void) -XML_SetDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start, +XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end); XMLPARSEAPI(void) @@ -593,16 +600,14 @@ XML_SetStartDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start); XMLPARSEAPI(void) -XML_SetEndDoctypeDeclHandler(XML_Parser parser, - XML_EndDoctypeDeclHandler end); +XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end); XMLPARSEAPI(void) XML_SetUnparsedEntityDeclHandler(XML_Parser parser, XML_UnparsedEntityDeclHandler handler); XMLPARSEAPI(void) -XML_SetNotationDeclHandler(XML_Parser parser, - XML_NotationDeclHandler handler); +XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler); XMLPARSEAPI(void) XML_SetNamespaceDeclHandler(XML_Parser parser, @@ -630,8 +635,7 @@ XML_SetExternalEntityRefHandler(XML_Parser parser, instead of the parser object. */ XMLPARSEAPI(void) -XML_SetExternalEntityRefHandlerArg(XML_Parser parser, - void *arg); +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg); XMLPARSEAPI(void) XML_SetSkippedEntityHandler(XML_Parser parser, @@ -706,11 +710,11 @@ XML_UseParserAsHandlerArg(XML_Parser parser); be called, despite an external subset being parsed. Note: If XML_DTD is not defined when Expat is compiled, returns XML_ERROR_FEATURE_REQUIRES_XML_DTD. + Note: If parser == NULL, returns XML_ERROR_INVALID_ARGUMENT. */ XMLPARSEAPI(enum XML_Error) XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); - /* Sets the base to be used for resolving relative URIs in system identifiers in declarations. Resolving relative identifiers is left to the application: this value will be passed through as the @@ -728,16 +732,17 @@ XML_GetBase(XML_Parser parser); /* Returns the number of the attribute/value pairs passed in last call to the XML_StartElementHandler that were specified in the start-tag rather than defaulted. Each attribute/value pair counts as 2; thus - this correspondds to an index into the atts array passed to the - XML_StartElementHandler. + this corresponds to an index into the atts array passed to the + XML_StartElementHandler. Returns -1 if parser == NULL. */ XMLPARSEAPI(int) XML_GetSpecifiedAttributeCount(XML_Parser parser); /* Returns the index of the ID attribute passed in the last call to - XML_StartElementHandler, or -1 if there is no ID attribute. Each - attribute/value pair counts as 2; thus this correspondds to an - index into the atts array passed to the XML_StartElementHandler. + XML_StartElementHandler, or -1 if there is no ID attribute or + parser == NULL. Each attribute/value pair counts as 2; thus this + corresponds to an index into the atts array passed to the + XML_StartElementHandler. */ XMLPARSEAPI(int) XML_GetIdAttributeIndex(XML_Parser parser); @@ -749,10 +754,10 @@ XML_GetIdAttributeIndex(XML_Parser parser); info->valueEnd - info->valueStart = 4 bytes. */ typedef struct { - XML_Index nameStart; /* Offset to beginning of the attribute name. */ - XML_Index nameEnd; /* Offset after the attribute name's last byte. */ - XML_Index valueStart; /* Offset to beginning of the attribute value. */ - XML_Index valueEnd; /* Offset after the attribute value's last byte. */ + XML_Index nameStart; /* Offset to beginning of the attribute name. */ + XML_Index nameEnd; /* Offset after the attribute name's last byte. */ + XML_Index valueStart; /* Offset to beginning of the attribute value. */ + XML_Index valueEnd; /* Offset after the attribute value's last byte. */ } XML_AttrInfo; /* Returns an array of XML_AttrInfo structures for the attribute/value pairs @@ -788,20 +793,20 @@ XML_ParseBuffer(XML_Parser parser, int len, int isFinal); (resumable = 0) an already suspended parser. Some call-backs may still follow because they would otherwise get lost. Examples: - endElementHandler() for empty elements when stopped in - startElementHandler(), - - endNameSpaceDeclHandler() when stopped in endElementHandler(), + startElementHandler(), + - endNameSpaceDeclHandler() when stopped in endElementHandler(), and possibly others. Can be called from most handlers, including DTD related call-backs, except when parsing an external parameter entity and resumable != 0. Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. - Possible error codes: + Possible error codes: - XML_ERROR_SUSPENDED: when suspending an already suspended parser. - XML_ERROR_FINISHED: when the parser has already finished. - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE. - When resumable != 0 (true) then parsing is suspended, that is, - XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. + When resumable != 0 (true) then parsing is suspended, that is, + XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. @@ -812,7 +817,7 @@ XML_ParseBuffer(XML_Parser parser, int len, int isFinal); the externalEntityRefHandler() to call XML_StopParser() on the parent parser (recursively), if one wants to stop parsing altogether. - When suspended, parsing can be resumed by calling XML_ResumeParser(). + When suspended, parsing can be resumed by calling XML_ResumeParser(). */ XMLPARSEAPI(enum XML_Status) XML_StopParser(XML_Parser parser, XML_Bool resumable); @@ -820,7 +825,7 @@ XML_StopParser(XML_Parser parser, XML_Bool resumable); /* Resumes parsing after it has been suspended with XML_StopParser(). Must not be called from within a handler call-back. Returns same status codes as XML_Parse() or XML_ParseBuffer(). - Additional error code XML_ERROR_NOT_SUSPENDED possible. + Additional error code XML_ERROR_NOT_SUSPENDED possible. *Note*: This must be called on the most deeply nested child parser instance @@ -832,12 +837,7 @@ XML_StopParser(XML_Parser parser, XML_Bool resumable); XMLPARSEAPI(enum XML_Status) XML_ResumeParser(XML_Parser parser); -enum XML_Parsing { - XML_INITIALIZED, - XML_PARSING, - XML_FINISHED, - XML_SUSPENDED -}; +enum XML_Parsing { XML_INITIALIZED, XML_PARSING, XML_FINISHED, XML_SUSPENDED }; typedef struct { enum XML_Parsing parsing; @@ -869,8 +869,7 @@ XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); Otherwise returns a new XML_Parser object. */ XMLPARSEAPI(XML_Parser) -XML_ExternalEntityParserCreate(XML_Parser parser, - const XML_Char *context, +XML_ExternalEntityParserCreate(XML_Parser parser, const XML_Char *context, const XML_Char *encoding); enum XML_ParamEntityParsing { @@ -901,6 +900,7 @@ enum XML_ParamEntityParsing { entities is requested; otherwise it will return non-zero. Note: If XML_SetParamEntityParsing is called after XML_Parse or XML_ParseBuffer, then it has no effect and will always return 0. + Note: If parser == NULL, the function will do nothing and return 0. */ XMLPARSEAPI(int) XML_SetParamEntityParsing(XML_Parser parser, @@ -910,10 +910,10 @@ XML_SetParamEntityParsing(XML_Parser parser, Helps in preventing DoS attacks based on predicting hash function behavior. This must be called before parsing is started. Returns 1 if successful, 0 when called after parsing has started. + Note: If parser == NULL, the function will do nothing and return 0. */ XMLPARSEAPI(int) -XML_SetHashSalt(XML_Parser parser, - unsigned long hash_salt); +XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt); /* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then XML_GetErrorCode returns information about the error. @@ -930,12 +930,16 @@ XML_GetErrorCode(XML_Parser parser); be within the relevant markup. When called outside of the callback functions, the position indicated will be just past the last parse event (regardless of whether there was an associated callback). - + They may also be called after returning from a call to XML_Parse or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then the location is the location of the character at which the error was detected; otherwise the location is the location of the last parse event, as described above. + + Note: XML_GetCurrentLineNumber and XML_GetCurrentColumnNumber + return 0 to indicate an error. + Note: XML_GetCurrentByteIndex returns -1 to indicate an error. */ XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); @@ -958,14 +962,12 @@ XML_GetCurrentByteCount(XML_Parser parser); the handler that makes the call. */ XMLPARSEAPI(const char *) -XML_GetInputContext(XML_Parser parser, - int *offset, - int *size); +XML_GetInputContext(XML_Parser parser, int *offset, int *size); /* For backwards compatibility with previous versions. */ -#define XML_GetErrorLineNumber XML_GetCurrentLineNumber +#define XML_GetErrorLineNumber XML_GetCurrentLineNumber #define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber -#define XML_GetErrorByteIndex XML_GetCurrentByteIndex +#define XML_GetErrorByteIndex XML_GetCurrentByteIndex /* Frees the content model passed to the element declaration handler */ XMLPARSEAPI(void) @@ -1020,25 +1022,39 @@ enum XML_FeatureEnum { XML_FEATURE_SIZEOF_XML_LCHAR, XML_FEATURE_NS, XML_FEATURE_LARGE_SIZE, - XML_FEATURE_ATTR_INFO + XML_FEATURE_ATTR_INFO, + /* Added in Expat 2.4.0. */ + XML_FEATURE_BILLION_LAUGHS_ATTACK_PROTECTION_MAXIMUM_AMPLIFICATION_DEFAULT, + XML_FEATURE_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT /* Additional features must be added to the end of this enum. */ }; typedef struct { - enum XML_FeatureEnum feature; - const XML_LChar *name; - long int value; + enum XML_FeatureEnum feature; + const XML_LChar *name; + long int value; } XML_Feature; XMLPARSEAPI(const XML_Feature *) XML_GetFeatureList(void); +#ifdef XML_DTD +/* Added in Expat 2.4.0. */ +XMLPARSEAPI(XML_Bool) +XML_SetBillionLaughsAttackProtectionMaximumAmplification( + XML_Parser parser, float maximumAmplificationFactor); + +/* Added in Expat 2.4.0. */ +XMLPARSEAPI(XML_Bool) +XML_SetBillionLaughsAttackProtectionActivationThreshold( + XML_Parser parser, unsigned long long activationThresholdBytes); +#endif /* Expat follows the semantic versioning convention. See http://semver.org. */ #define XML_MAJOR_VERSION 2 -#define XML_MINOR_VERSION 2 +#define XML_MINOR_VERSION 5 #define XML_MICRO_VERSION 0 #ifdef __cplusplus diff --git a/deps/EXPAT/expat/expat_config.h b/deps/EXPAT/expat/expat_config.h index 8aa80db0d6..e138db987f 100644 --- a/deps/EXPAT/expat/expat_config.h +++ b/deps/EXPAT/expat/expat_config.h @@ -1,28 +1,40 @@ -/*================================================================ -** Copyright 2000, Clark Cooper -** All rights reserved. -** -** This is free software. You are permitted to copy, distribute, or modify -** it under the terms of the MIT/X license (contained in the COPYING file -** with this distribution.) +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 2000 Clark Cooper + Copyright (c) 2002 Greg Stein + Copyright (c) 2005 Karl Waclawek + Copyright (c) 2017-2021 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef EXPATCONFIG_H #define EXPATCONFIG_H -#include -#include - -#define XML_NS 1 -#define XML_DTD 1 -#define XML_CONTEXT_BYTES 1024 - -/* we will assume all Windows platforms are little endian */ -#define BYTEORDER 1234 - -/* Windows has memmove() available. */ -#define HAVE_MEMMOVE - #ifdef WIN32 #define WIN32_LEAN_AND_MEAN #include @@ -30,4 +42,8 @@ #else #endif -#endif /* ifndef EXPATCONFIG_H */ +#include "expat_configure.h" +#include +#include + +#endif /* ndef EXPATCONFIG_H */ diff --git a/deps/EXPAT/expat/expat_configure.h.cmake b/deps/EXPAT/expat/expat_configure.h.cmake new file mode 100644 index 0000000000..78fcb4cad5 --- /dev/null +++ b/deps/EXPAT/expat/expat_configure.h.cmake @@ -0,0 +1,120 @@ +/* expat_config.h.cmake. Based upon generated expat_config.h.in. */ + +#ifndef EXPAT_CONFIG_H +#define EXPAT_CONFIG_H 1 + +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#cmakedefine BYTEORDER @BYTEORDER@ + +/* Define to 1 if you have the `arc4random' function. */ +#cmakedefine HAVE_ARC4RANDOM + +/* Define to 1 if you have the `arc4random_buf' function. */ +#cmakedefine HAVE_ARC4RANDOM_BUF + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_FCNTL_H + +/* Define to 1 if you have the `getpagesize' function. */ +#cmakedefine HAVE_GETPAGESIZE + +/* Define to 1 if you have the `getrandom' function. */ +#cmakedefine HAVE_GETRANDOM + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H + +/* Define to 1 if you have the `bsd' library (-lbsd). */ +#cmakedefine HAVE_LIBBSD + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MEMORY_H + +/* Define to 1 if you have a working `mmap' system call. */ +#cmakedefine HAVE_MMAP + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRING_H + +/* Define to 1 if you have `syscall' and `SYS_getrandom'. */ +#cmakedefine HAVE_SYSCALL_GETRANDOM + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H + +/* Name of package */ +#define PACKAGE "@PACKAGE_NAME@" + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@" + +/* Define to the full name of this package. */ +#cmakedefine PACKAGE_NAME "@PACKAGE_NAME@" + +/* Define to the full name and version of this package. */ +#cmakedefine PACKAGE_STRING "@PACKAGE_STRING@" + +/* Define to the one symbol short name of this package. */ +#cmakedefine PACKAGE_TARNAME "@PACKAGE_TARNAME@" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@" + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS + +/* whether byteorder is bigendian */ +#cmakedefine WORDS_BIGENDIAN + +/* Define to allow retrieving the byte offsets for attribute names and values. + */ +#cmakedefine XML_ATTR_INFO + +/* Define to specify how much context to retain around the current parse + point. */ +#cmakedefine XML_CONTEXT_BYTES @XML_CONTEXT_BYTES@ + +#if ! defined(_WIN32) +/* Define to include code reading entropy from `/dev/urandom'. */ +#cmakedefine XML_DEV_URANDOM +#endif + +/* Define to make parameter entity parsing functionality available. */ +#cmakedefine XML_DTD + +/* Define to make XML Namespaces functionality available. */ +#cmakedefine XML_NS + +/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ +#ifdef _MSC_VER +# define __func__ __FUNCTION__ +#endif + +/* Define to `long' if does not define. */ +#cmakedefine off_t @OFF_T@ + +/* Define to `unsigned' if does not define. */ +#cmakedefine size_t @SIZE_T@ + +#endif // ndef EXPAT_CONFIG_H diff --git a/deps/EXPAT/expat/expat_external.h b/deps/EXPAT/expat/expat_external.h index 56cd843670..5894f1dc9b 100644 --- a/deps/EXPAT/expat/expat_external.h +++ b/deps/EXPAT/expat/expat_external.h @@ -1,5 +1,40 @@ -/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2000-2004 Fred L. Drake, Jr. + Copyright (c) 2001-2002 Greg Stein + Copyright (c) 2002-2006 Karl Waclawek + Copyright (c) 2016 Cristian Rodríguez + Copyright (c) 2016-2019 Sebastian Pipping + Copyright (c) 2017 Rhodri James + Copyright (c) 2018 Yury Gribov + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef Expat_External_INCLUDED @@ -7,10 +42,6 @@ /* External API definitions */ -#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__) -#define XML_USE_MSC_EXTENSIONS 1 -#endif - /* Expat tries very hard to make the API boundary very specifically defined. There are two macros defined to control this boundary; each of these can be defined before including this header to @@ -34,11 +65,11 @@ system headers may assume the cdecl convention. */ #ifndef XMLCALL -#if defined(_MSC_VER) -#define XMLCALL __cdecl -#elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER) -#define XMLCALL __attribute__((cdecl)) -#else +# if defined(_MSC_VER) +# define XMLCALL __cdecl +# elif defined(__GNUC__) && defined(__i386) && ! defined(__INTEL_COMPILER) +# define XMLCALL __attribute__((cdecl)) +# else /* For any platform which uses this definition and supports more than one calling convention, we need to extend this definition to declare the convention used on that platform, if it's possible to @@ -49,41 +80,46 @@ pre-processor and how to specify the same calling convention as the platform's malloc() implementation. */ -#define XMLCALL -#endif -#endif /* not defined XMLCALL */ +# define XMLCALL +# endif +#endif /* not defined XMLCALL */ - -#if !defined(XML_STATIC) && !defined(XMLIMPORT) -#ifndef XML_BUILDING_EXPAT +#if ! defined(XML_STATIC) && ! defined(XMLIMPORT) +# ifndef XML_BUILDING_EXPAT /* using Expat from an application */ -#ifdef XML_USE_MSC_EXTENSIONS -// #define XMLIMPORT __declspec(dllimport) +# if defined(_MSC_EXTENSIONS) && ! defined(__BEOS__) && ! defined(__CYGWIN__) +//# define XMLIMPORT __declspec(dllimport) +# endif + +# endif +#endif /* not defined XML_STATIC */ + +#ifndef XML_ENABLE_VISIBILITY +# define XML_ENABLE_VISIBILITY 0 #endif -#endif -#endif /* not defined XML_STATIC */ - -#if !defined(XMLIMPORT) && defined(__GNUC__) && (__GNUC__ >= 4) -#define XMLIMPORT __attribute__ ((visibility ("default"))) +#if ! defined(XMLIMPORT) && XML_ENABLE_VISIBILITY +# define XMLIMPORT __attribute__((visibility("default"))) #endif /* If we didn't define it above, define it away: */ #ifndef XMLIMPORT -#define XMLIMPORT +# define XMLIMPORT #endif -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) -#define XML_ATTR_MALLOC __attribute__((__malloc__)) +#if defined(__GNUC__) \ + && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) +# define XML_ATTR_MALLOC __attribute__((__malloc__)) #else -#define XML_ATTR_MALLOC +# define XML_ATTR_MALLOC #endif -#if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) -#define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) +#if defined(__GNUC__) \ + && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) #else -#define XML_ATTR_ALLOC_SIZE(x) +# define XML_ATTR_ALLOC_SIZE(x) #endif #define XMLPARSEAPI(type) XMLIMPORT type XMLCALL @@ -93,30 +129,30 @@ extern "C" { #endif #ifdef XML_UNICODE_WCHAR_T -#define XML_UNICODE +# ifndef XML_UNICODE +# define XML_UNICODE +# endif +# if defined(__SIZEOF_WCHAR_T__) && (__SIZEOF_WCHAR_T__ != 2) +# error "sizeof(wchar_t) != 2; Need -fshort-wchar for both Expat and libc" +# endif #endif -#ifdef XML_UNICODE /* Information is UTF-16 encoded. */ -#ifdef XML_UNICODE_WCHAR_T +#ifdef XML_UNICODE /* Information is UTF-16 encoded. */ +# ifdef XML_UNICODE_WCHAR_T typedef wchar_t XML_Char; typedef wchar_t XML_LChar; -#else +# else typedef unsigned short XML_Char; typedef char XML_LChar; -#endif /* XML_UNICODE_WCHAR_T */ -#else /* Information is UTF-8 encoded. */ +# endif /* XML_UNICODE_WCHAR_T */ +#else /* Information is UTF-8 encoded. */ typedef char XML_Char; typedef char XML_LChar; -#endif /* XML_UNICODE */ +#endif /* XML_UNICODE */ -#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ -#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 -typedef __int64 XML_Index; -typedef unsigned __int64 XML_Size; -#else +#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ typedef long long XML_Index; typedef unsigned long long XML_Size; -#endif #else typedef long XML_Index; typedef unsigned long XML_Size; diff --git a/deps/EXPAT/expat/iasciitab.h b/deps/EXPAT/expat/iasciitab.h index 24a1d5ccc9..5d8646f2a3 100644 --- a/deps/EXPAT/expat/iasciitab.h +++ b/deps/EXPAT/expat/iasciitab.h @@ -1,37 +1,67 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2002 Fred L. Drake, Jr. + Copyright (c) 2017 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */ /* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, -/* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML, -/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, -/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, -/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, -/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, -/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, -/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, -/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, -/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, -/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, + /* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML, + /* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, + /* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, + /* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, + /* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, + /* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, + /* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, + /* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, + /* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, + /* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, + /* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, + /* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, + /* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, + /* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, + /* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, + /* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, + /* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/deps/EXPAT/expat/internal.h b/deps/EXPAT/expat/internal.h index 94cb98e15c..e09f533b23 100644 --- a/deps/EXPAT/expat/internal.h +++ b/deps/EXPAT/expat/internal.h @@ -18,9 +18,42 @@ Note: Use of these macros is based on judgement, not hard rules, and therefore subject to change. + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 2002-2003 Fred L. Drake, Jr. + Copyright (c) 2002-2006 Karl Waclawek + Copyright (c) 2003 Greg Stein + Copyright (c) 2016-2022 Sebastian Pipping + Copyright (c) 2018 Yury Gribov + Copyright (c) 2019 David Loffredo + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__) +#if defined(__GNUC__) && defined(__i386__) && ! defined(__MINGW32__) /* We'll use this version by default only where we know it helps. regparm() generates warnings on Solaris boxes. See SF bug #692878. @@ -30,8 +63,8 @@ #define FASTCALL __attribute__((stdcall, regparm(3))) and let's try this: */ -#define FASTCALL __attribute__((regparm(3))) -#define PTRFASTCALL __attribute__((regparm(3))) +# define FASTCALL __attribute__((regparm(3))) +# define PTRFASTCALL __attribute__((regparm(3))) #endif /* Using __fastcall seems to have an unexpected negative effect under @@ -45,50 +78,87 @@ /* Make sure all of these are defined if they aren't already. */ #ifndef FASTCALL -#define FASTCALL +# define FASTCALL #endif #ifndef PTRCALL -#define PTRCALL +# define PTRCALL #endif #ifndef PTRFASTCALL -#define PTRFASTCALL +# define PTRFASTCALL #endif #ifndef XML_MIN_SIZE -#if !defined(__cplusplus) && !defined(inline) -#ifdef __GNUC__ -#define inline __inline -#endif /* __GNUC__ */ -#endif +# if ! defined(__cplusplus) && ! defined(inline) +# ifdef __GNUC__ +# define inline __inline +# endif /* __GNUC__ */ +# endif #endif /* XML_MIN_SIZE */ #ifdef __cplusplus -#define inline inline +# define inline inline #else -#ifndef inline -#define inline +# ifndef inline +# define inline +# endif #endif + +#include // ULONG_MAX + +#if defined(_WIN32) \ + && (! defined(__USE_MINGW_ANSI_STDIO) \ + || (1 - __USE_MINGW_ANSI_STDIO - 1 == 0)) +# define EXPAT_FMT_ULL(midpart) "%" midpart "I64u" +# if defined(_WIN64) // Note: modifiers "td" and "zu" do not work for MinGW +# define EXPAT_FMT_PTRDIFF_T(midpart) "%" midpart "I64d" +# define EXPAT_FMT_SIZE_T(midpart) "%" midpart "I64u" +# else +# define EXPAT_FMT_PTRDIFF_T(midpart) "%" midpart "d" +# define EXPAT_FMT_SIZE_T(midpart) "%" midpart "u" +# endif +#else +# define EXPAT_FMT_ULL(midpart) "%" midpart "llu" +# if ! defined(ULONG_MAX) +# error Compiler did not define ULONG_MAX for us +# elif ULONG_MAX == 18446744073709551615u // 2^64-1 +# define EXPAT_FMT_PTRDIFF_T(midpart) "%" midpart "ld" +# define EXPAT_FMT_SIZE_T(midpart) "%" midpart "lu" +# else +# define EXPAT_FMT_PTRDIFF_T(midpart) "%" midpart "d" +# define EXPAT_FMT_SIZE_T(midpart) "%" midpart "u" +# endif #endif #ifndef UNUSED_P -# ifdef __GNUC__ -# define UNUSED_P(p) UNUSED_ ## p __attribute__((__unused__)) -# else -# define UNUSED_P(p) UNUSED_ ## p -# endif +# define UNUSED_P(p) (void)p #endif +/* NOTE BEGIN If you ever patch these defaults to greater values + for non-attack XML payload in your environment, + please file a bug report with libexpat. Thank you! +*/ +#define EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_MAXIMUM_AMPLIFICATION_DEFAULT \ + 100.0f +#define EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT \ + 8388608 // 8 MiB, 2^23 +/* NOTE END */ + +#include "expat.h" // so we can use type XML_Parser below #ifdef __cplusplus extern "C" { #endif +void _INTERNAL_trim_to_complete_utf8_characters(const char *from, + const char **fromLimRef); -void -align_limit_to_full_utf8_characters(const char * from, const char ** fromLimRef); - +#if defined(XML_DTD) +unsigned long long testingAccountingGetCountBytesDirect(XML_Parser parser); +unsigned long long testingAccountingGetCountBytesIndirect(XML_Parser parser); +const char *unsignedCharToPrintable(unsigned char c); +#endif #ifdef __cplusplus } diff --git a/deps/EXPAT/expat/latin1tab.h b/deps/EXPAT/expat/latin1tab.h index 53c25d76b2..b681d278af 100644 --- a/deps/EXPAT/expat/latin1tab.h +++ b/deps/EXPAT/expat/latin1tab.h @@ -1,36 +1,66 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2002 Fred L. Drake, Jr. + Copyright (c) 2017 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, -/* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME, -/* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, -/* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, + /* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME, + /* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, + /* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, + /* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, + /* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, diff --git a/deps/EXPAT/expat/nametab.h b/deps/EXPAT/expat/nametab.h index b05e62c77a..63485446b9 100644 --- a/deps/EXPAT/expat/nametab.h +++ b/deps/EXPAT/expat/nametab.h @@ -1,150 +1,136 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 2000 Clark Cooper + Copyright (c) 2017 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + static const unsigned namingBitmap[] = { -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE, -0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF, -0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF, -0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, -0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, -0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, -0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, -0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, -0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF, -0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000, -0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060, -0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003, -0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003, -0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000, -0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001, -0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003, -0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000, -0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003, -0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003, -0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000, -0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000, -0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF, -0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB, -0x40000000, 0xF580C900, 0x00000007, 0x02010800, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, -0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF, -0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF, -0x00000000, 0x00004C40, 0x00000000, 0x00000000, -0x00000007, 0x00000000, 0x00000000, 0x00000000, -0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF, -0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF, -0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000, -0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE, -0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF, -0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, -0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003, -0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, -0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, -0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, -0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, -0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF, -0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF, -0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF, -0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF, -0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF, -0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0, -0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1, -0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3, -0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80, -0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3, -0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3, -0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000, -0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000, -0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF, -0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x1FFF0000, 0x00000002, -0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF, -0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x04000000, + 0x87FFFFFE, 0x07FFFFFE, 0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF, + 0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFE00F, 0xFC31FFFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, + 0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, + 0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, 0xFFFF0003, 0xFFFFFFFF, + 0xFFFF199F, 0x033FCFFF, 0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, + 0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF, 0x00000000, 0x07FFFFFE, + 0x000007FE, 0xFFFE0000, 0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060, + 0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003, 0xFFF99FE0, 0x03C5FDFF, + 0xB0000000, 0x00030003, 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000, + 0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001, 0xFFF99FE0, 0x23CDFDFF, + 0xB0000000, 0x00000003, 0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000, + 0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003, 0xFFFDDFE0, 0x03EFFDFF, + 0x40000000, 0x00000003, 0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFE, 0x000D7FFF, + 0x0000003F, 0x00000000, 0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000, + 0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF, 0x0007DAED, 0x50000000, + 0x82315001, 0x002C62AB, 0x40000000, 0xF580C900, 0x00000007, 0x02010800, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x03FFFFFF, 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF, + 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF, 0x00000000, 0x00004C40, + 0x00000000, 0x00000000, 0x00000007, 0x00000000, 0x00000000, 0x00000000, + 0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF, 0x001FFFFF, 0xFFFFFFFE, + 0xFFFFFFFF, 0x07FFFFFF, 0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, + 0x00000000, 0x00000000, 0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE, + 0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF, 0x00FFFFFF, 0x00000000, + 0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000, + 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003, 0xFFFFD7C0, 0xFFFFFFFB, + 0x547F7FFF, 0x000FFFFD, 0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, + 0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, 0x00000000, 0xFFFE0000, + 0x027FFFFF, 0xFFFFFFFE, 0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF, + 0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF, 0xFFFFFFFF, 0x7CFFFFFF, + 0xFFEF7FFF, 0x03FF3DFF, 0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF, + 0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF, 0xFFF987E4, 0xD36DFDFF, + 0x5E003987, 0x001FFFC0, 0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1, + 0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3, 0xD63DC7EC, 0xC3BFC718, + 0x00803DC7, 0x0000FF80, 0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3, + 0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3, 0xFFFDDFEC, 0xC3FFFDFF, + 0x00803DCF, 0x0000FFC3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000, 0xFEF02596, 0x3BFF6CAE, + 0x03FF3F5F, 0x00000000, 0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF, + 0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1FFF0000, 0x00000002, + 0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF, 0x661FFFFF, 0xFFFFFFFE, + 0xFFFFFFFF, 0x77FFFFFF, }; static const unsigned char nmstrtPages[] = { -0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, -0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, -0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, -0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, 0x00, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; static const unsigned char namePages[] = { -0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00, -0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, -0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, -0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00, 0x00, 0x1F, 0x20, 0x21, + 0x22, 0x23, 0x24, 0x25, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, 0x26, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/deps/EXPAT/expat/siphash.h b/deps/EXPAT/expat/siphash.h new file mode 100644 index 0000000000..303283ad2d --- /dev/null +++ b/deps/EXPAT/expat/siphash.h @@ -0,0 +1,393 @@ +/* ========================================================================== + * siphash.h - SipHash-2-4 in a single header file + * -------------------------------------------------------------------------- + * Derived by William Ahern from the reference implementation[1] published[2] + * by Jean-Philippe Aumasson and Daniel J. Berstein. + * Minimal changes by Sebastian Pipping and Victor Stinner on top, see below. + * Licensed under the CC0 Public Domain Dedication license. + * + * 1. https://www.131002.net/siphash/siphash24.c + * 2. https://www.131002.net/siphash/ + * -------------------------------------------------------------------------- + * HISTORY: + * + * 2020-10-03 (Sebastian Pipping) + * - Drop support for Visual Studio 9.0/2008 and earlier + * + * 2019-08-03 (Sebastian Pipping) + * - Mark part of sip24_valid as to be excluded from clang-format + * - Re-format code using clang-format 9 + * + * 2018-07-08 (Anton Maklakov) + * - Add "fall through" markers for GCC's -Wimplicit-fallthrough + * + * 2017-11-03 (Sebastian Pipping) + * - Hide sip_tobin and sip_binof unless SIPHASH_TOBIN macro is defined + * + * 2017-07-25 (Vadim Zeitlin) + * - Fix use of SIPHASH_MAIN macro + * + * 2017-07-05 (Sebastian Pipping) + * - Use _SIP_ULL macro to not require a C++11 compiler if compiled as C++ + * - Add const qualifiers at two places + * - Ensure <=80 characters line length (assuming tab width 4) + * + * 2017-06-23 (Victor Stinner) + * - Address Win64 compile warnings + * + * 2017-06-18 (Sebastian Pipping) + * - Clarify license note in the header + * - Address C89 issues: + * - Stop using inline keyword (and let compiler decide) + * - Replace _Bool by int + * - Turn macro siphash24 into a function + * - Address invalid conversion (void pointer) by explicit cast + * - Address lack of stdint.h for Visual Studio 2003 to 2008 + * - Always expose sip24_valid (for self-tests) + * + * 2012-11-04 - Born. (William Ahern) + * -------------------------------------------------------------------------- + * USAGE: + * + * SipHash-2-4 takes as input two 64-bit words as the key, some number of + * message bytes, and outputs a 64-bit word as the message digest. This + * implementation employs two data structures: a struct sipkey for + * representing the key, and a struct siphash for representing the hash + * state. + * + * For converting a 16-byte unsigned char array to a key, use either the + * macro sip_keyof or the routine sip_tokey. The former instantiates a + * compound literal key, while the latter requires a key object as a + * parameter. + * + * unsigned char secret[16]; + * arc4random_buf(secret, sizeof secret); + * struct sipkey *key = sip_keyof(secret); + * + * For hashing a message, use either the convenience macro siphash24 or the + * routines sip24_init, sip24_update, and sip24_final. + * + * struct siphash state; + * void *msg; + * size_t len; + * uint64_t hash; + * + * sip24_init(&state, key); + * sip24_update(&state, msg, len); + * hash = sip24_final(&state); + * + * or + * + * hash = siphash24(msg, len, key); + * + * To convert the 64-bit hash value to a canonical 8-byte little-endian + * binary representation, use either the macro sip_binof or the routine + * sip_tobin. The former instantiates and returns a compound literal array, + * while the latter requires an array object as a parameter. + * -------------------------------------------------------------------------- + * NOTES: + * + * o Neither sip_keyof, sip_binof, nor siphash24 will work with compilers + * lacking compound literal support. Instead, you must use the lower-level + * interfaces which take as parameters the temporary state objects. + * + * o Uppercase macros may evaluate parameters more than once. Lowercase + * macros should not exhibit any such side effects. + * ========================================================================== + */ +#ifndef SIPHASH_H +#define SIPHASH_H + +#include /* size_t */ +#include /* uint64_t uint32_t uint8_t */ + +/* + * Workaround to not require a C++11 compiler for using ULL suffix + * if this code is included and compiled as C++; related GCC warning is: + * warning: use of C++11 long long integer constant [-Wlong-long] + */ +#define _SIP_ULL(high, low) ((((uint64_t)high) << 32) | (low)) + +#define SIP_ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b)))) + +#define SIP_U32TO8_LE(p, v) \ + (p)[0] = (uint8_t)((v) >> 0); \ + (p)[1] = (uint8_t)((v) >> 8); \ + (p)[2] = (uint8_t)((v) >> 16); \ + (p)[3] = (uint8_t)((v) >> 24); + +#define SIP_U64TO8_LE(p, v) \ + SIP_U32TO8_LE((p) + 0, (uint32_t)((v) >> 0)); \ + SIP_U32TO8_LE((p) + 4, (uint32_t)((v) >> 32)); + +#define SIP_U8TO64_LE(p) \ + (((uint64_t)((p)[0]) << 0) | ((uint64_t)((p)[1]) << 8) \ + | ((uint64_t)((p)[2]) << 16) | ((uint64_t)((p)[3]) << 24) \ + | ((uint64_t)((p)[4]) << 32) | ((uint64_t)((p)[5]) << 40) \ + | ((uint64_t)((p)[6]) << 48) | ((uint64_t)((p)[7]) << 56)) + +#define SIPHASH_INITIALIZER \ + { 0, 0, 0, 0, {0}, 0, 0 } + +struct siphash { + uint64_t v0, v1, v2, v3; + + unsigned char buf[8], *p; + uint64_t c; +}; /* struct siphash */ + +#define SIP_KEYLEN 16 + +struct sipkey { + uint64_t k[2]; +}; /* struct sipkey */ + +#define sip_keyof(k) sip_tokey(&(struct sipkey){{0}}, (k)) + +static struct sipkey * +sip_tokey(struct sipkey *key, const void *src) { + key->k[0] = SIP_U8TO64_LE((const unsigned char *)src); + key->k[1] = SIP_U8TO64_LE((const unsigned char *)src + 8); + return key; +} /* sip_tokey() */ + +#ifdef SIPHASH_TOBIN + +# define sip_binof(v) sip_tobin((unsigned char[8]){0}, (v)) + +static void * +sip_tobin(void *dst, uint64_t u64) { + SIP_U64TO8_LE((unsigned char *)dst, u64); + return dst; +} /* sip_tobin() */ + +#endif /* SIPHASH_TOBIN */ + +static void +sip_round(struct siphash *H, const int rounds) { + int i; + + for (i = 0; i < rounds; i++) { + H->v0 += H->v1; + H->v1 = SIP_ROTL(H->v1, 13); + H->v1 ^= H->v0; + H->v0 = SIP_ROTL(H->v0, 32); + + H->v2 += H->v3; + H->v3 = SIP_ROTL(H->v3, 16); + H->v3 ^= H->v2; + + H->v0 += H->v3; + H->v3 = SIP_ROTL(H->v3, 21); + H->v3 ^= H->v0; + + H->v2 += H->v1; + H->v1 = SIP_ROTL(H->v1, 17); + H->v1 ^= H->v2; + H->v2 = SIP_ROTL(H->v2, 32); + } +} /* sip_round() */ + +static struct siphash * +sip24_init(struct siphash *H, const struct sipkey *key) { + H->v0 = _SIP_ULL(0x736f6d65U, 0x70736575U) ^ key->k[0]; + H->v1 = _SIP_ULL(0x646f7261U, 0x6e646f6dU) ^ key->k[1]; + H->v2 = _SIP_ULL(0x6c796765U, 0x6e657261U) ^ key->k[0]; + H->v3 = _SIP_ULL(0x74656462U, 0x79746573U) ^ key->k[1]; + + H->p = H->buf; + H->c = 0; + + return H; +} /* sip24_init() */ + +#define sip_endof(a) (&(a)[sizeof(a) / sizeof *(a)]) + +static struct siphash * +sip24_update(struct siphash *H, const void *src, size_t len) { + const unsigned char *p = (const unsigned char *)src, *pe = p + len; + uint64_t m; + + do { + while (p < pe && H->p < sip_endof(H->buf)) + *H->p++ = *p++; + + if (H->p < sip_endof(H->buf)) + break; + + m = SIP_U8TO64_LE(H->buf); + H->v3 ^= m; + sip_round(H, 2); + H->v0 ^= m; + + H->p = H->buf; + H->c += 8; + } while (p < pe); + + return H; +} /* sip24_update() */ + +static uint64_t +sip24_final(struct siphash *H) { + const char left = (char)(H->p - H->buf); + uint64_t b = (H->c + left) << 56; + + switch (left) { + case 7: + b |= (uint64_t)H->buf[6] << 48; + /* fall through */ + case 6: + b |= (uint64_t)H->buf[5] << 40; + /* fall through */ + case 5: + b |= (uint64_t)H->buf[4] << 32; + /* fall through */ + case 4: + b |= (uint64_t)H->buf[3] << 24; + /* fall through */ + case 3: + b |= (uint64_t)H->buf[2] << 16; + /* fall through */ + case 2: + b |= (uint64_t)H->buf[1] << 8; + /* fall through */ + case 1: + b |= (uint64_t)H->buf[0] << 0; + /* fall through */ + case 0: + break; + } + + H->v3 ^= b; + sip_round(H, 2); + H->v0 ^= b; + H->v2 ^= 0xff; + sip_round(H, 4); + + return H->v0 ^ H->v1 ^ H->v2 ^ H->v3; +} /* sip24_final() */ + +static uint64_t +siphash24(const void *src, size_t len, const struct sipkey *key) { + struct siphash state = SIPHASH_INITIALIZER; + return sip24_final(sip24_update(sip24_init(&state, key), src, len)); +} /* siphash24() */ + +/* + * SipHash-2-4 output with + * k = 00 01 02 ... + * and + * in = (empty string) + * in = 00 (1 byte) + * in = 00 01 (2 bytes) + * in = 00 01 02 (3 bytes) + * ... + * in = 00 01 02 ... 3e (63 bytes) + */ +static int +sip24_valid(void) { + /* clang-format off */ + static const unsigned char vectors[64][8] = { + { 0x31, 0x0e, 0x0e, 0xdd, 0x47, 0xdb, 0x6f, 0x72, }, + { 0xfd, 0x67, 0xdc, 0x93, 0xc5, 0x39, 0xf8, 0x74, }, + { 0x5a, 0x4f, 0xa9, 0xd9, 0x09, 0x80, 0x6c, 0x0d, }, + { 0x2d, 0x7e, 0xfb, 0xd7, 0x96, 0x66, 0x67, 0x85, }, + { 0xb7, 0x87, 0x71, 0x27, 0xe0, 0x94, 0x27, 0xcf, }, + { 0x8d, 0xa6, 0x99, 0xcd, 0x64, 0x55, 0x76, 0x18, }, + { 0xce, 0xe3, 0xfe, 0x58, 0x6e, 0x46, 0xc9, 0xcb, }, + { 0x37, 0xd1, 0x01, 0x8b, 0xf5, 0x00, 0x02, 0xab, }, + { 0x62, 0x24, 0x93, 0x9a, 0x79, 0xf5, 0xf5, 0x93, }, + { 0xb0, 0xe4, 0xa9, 0x0b, 0xdf, 0x82, 0x00, 0x9e, }, + { 0xf3, 0xb9, 0xdd, 0x94, 0xc5, 0xbb, 0x5d, 0x7a, }, + { 0xa7, 0xad, 0x6b, 0x22, 0x46, 0x2f, 0xb3, 0xf4, }, + { 0xfb, 0xe5, 0x0e, 0x86, 0xbc, 0x8f, 0x1e, 0x75, }, + { 0x90, 0x3d, 0x84, 0xc0, 0x27, 0x56, 0xea, 0x14, }, + { 0xee, 0xf2, 0x7a, 0x8e, 0x90, 0xca, 0x23, 0xf7, }, + { 0xe5, 0x45, 0xbe, 0x49, 0x61, 0xca, 0x29, 0xa1, }, + { 0xdb, 0x9b, 0xc2, 0x57, 0x7f, 0xcc, 0x2a, 0x3f, }, + { 0x94, 0x47, 0xbe, 0x2c, 0xf5, 0xe9, 0x9a, 0x69, }, + { 0x9c, 0xd3, 0x8d, 0x96, 0xf0, 0xb3, 0xc1, 0x4b, }, + { 0xbd, 0x61, 0x79, 0xa7, 0x1d, 0xc9, 0x6d, 0xbb, }, + { 0x98, 0xee, 0xa2, 0x1a, 0xf2, 0x5c, 0xd6, 0xbe, }, + { 0xc7, 0x67, 0x3b, 0x2e, 0xb0, 0xcb, 0xf2, 0xd0, }, + { 0x88, 0x3e, 0xa3, 0xe3, 0x95, 0x67, 0x53, 0x93, }, + { 0xc8, 0xce, 0x5c, 0xcd, 0x8c, 0x03, 0x0c, 0xa8, }, + { 0x94, 0xaf, 0x49, 0xf6, 0xc6, 0x50, 0xad, 0xb8, }, + { 0xea, 0xb8, 0x85, 0x8a, 0xde, 0x92, 0xe1, 0xbc, }, + { 0xf3, 0x15, 0xbb, 0x5b, 0xb8, 0x35, 0xd8, 0x17, }, + { 0xad, 0xcf, 0x6b, 0x07, 0x63, 0x61, 0x2e, 0x2f, }, + { 0xa5, 0xc9, 0x1d, 0xa7, 0xac, 0xaa, 0x4d, 0xde, }, + { 0x71, 0x65, 0x95, 0x87, 0x66, 0x50, 0xa2, 0xa6, }, + { 0x28, 0xef, 0x49, 0x5c, 0x53, 0xa3, 0x87, 0xad, }, + { 0x42, 0xc3, 0x41, 0xd8, 0xfa, 0x92, 0xd8, 0x32, }, + { 0xce, 0x7c, 0xf2, 0x72, 0x2f, 0x51, 0x27, 0x71, }, + { 0xe3, 0x78, 0x59, 0xf9, 0x46, 0x23, 0xf3, 0xa7, }, + { 0x38, 0x12, 0x05, 0xbb, 0x1a, 0xb0, 0xe0, 0x12, }, + { 0xae, 0x97, 0xa1, 0x0f, 0xd4, 0x34, 0xe0, 0x15, }, + { 0xb4, 0xa3, 0x15, 0x08, 0xbe, 0xff, 0x4d, 0x31, }, + { 0x81, 0x39, 0x62, 0x29, 0xf0, 0x90, 0x79, 0x02, }, + { 0x4d, 0x0c, 0xf4, 0x9e, 0xe5, 0xd4, 0xdc, 0xca, }, + { 0x5c, 0x73, 0x33, 0x6a, 0x76, 0xd8, 0xbf, 0x9a, }, + { 0xd0, 0xa7, 0x04, 0x53, 0x6b, 0xa9, 0x3e, 0x0e, }, + { 0x92, 0x59, 0x58, 0xfc, 0xd6, 0x42, 0x0c, 0xad, }, + { 0xa9, 0x15, 0xc2, 0x9b, 0xc8, 0x06, 0x73, 0x18, }, + { 0x95, 0x2b, 0x79, 0xf3, 0xbc, 0x0a, 0xa6, 0xd4, }, + { 0xf2, 0x1d, 0xf2, 0xe4, 0x1d, 0x45, 0x35, 0xf9, }, + { 0x87, 0x57, 0x75, 0x19, 0x04, 0x8f, 0x53, 0xa9, }, + { 0x10, 0xa5, 0x6c, 0xf5, 0xdf, 0xcd, 0x9a, 0xdb, }, + { 0xeb, 0x75, 0x09, 0x5c, 0xcd, 0x98, 0x6c, 0xd0, }, + { 0x51, 0xa9, 0xcb, 0x9e, 0xcb, 0xa3, 0x12, 0xe6, }, + { 0x96, 0xaf, 0xad, 0xfc, 0x2c, 0xe6, 0x66, 0xc7, }, + { 0x72, 0xfe, 0x52, 0x97, 0x5a, 0x43, 0x64, 0xee, }, + { 0x5a, 0x16, 0x45, 0xb2, 0x76, 0xd5, 0x92, 0xa1, }, + { 0xb2, 0x74, 0xcb, 0x8e, 0xbf, 0x87, 0x87, 0x0a, }, + { 0x6f, 0x9b, 0xb4, 0x20, 0x3d, 0xe7, 0xb3, 0x81, }, + { 0xea, 0xec, 0xb2, 0xa3, 0x0b, 0x22, 0xa8, 0x7f, }, + { 0x99, 0x24, 0xa4, 0x3c, 0xc1, 0x31, 0x57, 0x24, }, + { 0xbd, 0x83, 0x8d, 0x3a, 0xaf, 0xbf, 0x8d, 0xb7, }, + { 0x0b, 0x1a, 0x2a, 0x32, 0x65, 0xd5, 0x1a, 0xea, }, + { 0x13, 0x50, 0x79, 0xa3, 0x23, 0x1c, 0xe6, 0x60, }, + { 0x93, 0x2b, 0x28, 0x46, 0xe4, 0xd7, 0x06, 0x66, }, + { 0xe1, 0x91, 0x5f, 0x5c, 0xb1, 0xec, 0xa4, 0x6c, }, + { 0xf3, 0x25, 0x96, 0x5c, 0xa1, 0x6d, 0x62, 0x9f, }, + { 0x57, 0x5f, 0xf2, 0x8e, 0x60, 0x38, 0x1b, 0xe5, }, + { 0x72, 0x45, 0x06, 0xeb, 0x4c, 0x32, 0x8a, 0x95, } + }; + /* clang-format on */ + + unsigned char in[64]; + struct sipkey k; + size_t i; + + sip_tokey(&k, "\000\001\002\003\004\005\006\007\010\011" + "\012\013\014\015\016\017"); + + for (i = 0; i < sizeof in; ++i) { + in[i] = (unsigned char)i; + + if (siphash24(in, i, &k) != SIP_U8TO64_LE(vectors[i])) + return 0; + } + + return 1; +} /* sip24_valid() */ + +#ifdef SIPHASH_MAIN + +# include + +int +main(void) { + const int ok = sip24_valid(); + + if (ok) + puts("OK"); + else + puts("FAIL"); + + return ! ok; +} /* main() */ + +#endif /* SIPHASH_MAIN */ + +#endif /* SIPHASH_H */ diff --git a/deps/EXPAT/expat/utf8tab.h b/deps/EXPAT/expat/utf8tab.h index 7bb3e77603..88efcf91cc 100644 --- a/deps/EXPAT/expat/utf8tab.h +++ b/deps/EXPAT/expat/utf8tab.h @@ -1,37 +1,66 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2002 Fred L. Drake, Jr. + Copyright (c) 2017 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ - /* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4, -/* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM, + /* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, + /* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, + /* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, + /* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, + /* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4, + /* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM, diff --git a/deps/EXPAT/expat/xmlparse.c b/deps/EXPAT/expat/xmlparse.c index fbe5e02006..803a1674da 100644 --- a/deps/EXPAT/expat/xmlparse.c +++ b/deps/EXPAT/expat/xmlparse.c @@ -1,84 +1,196 @@ -/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* 5ab094ffadd6edfc94c3eee53af44a86951f9f1f0933ada3114bbce2bfb02c99 (2.5.0+) + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2000-2006 Fred L. Drake, Jr. + Copyright (c) 2001-2002 Greg Stein + Copyright (c) 2002-2016 Karl Waclawek + Copyright (c) 2005-2009 Steven Solie + Copyright (c) 2016 Eric Rahm + Copyright (c) 2016-2022 Sebastian Pipping + Copyright (c) 2016 Gaurav + Copyright (c) 2016 Thomas Beutlich + Copyright (c) 2016 Gustavo Grieco + Copyright (c) 2016 Pascal Cuoq + Copyright (c) 2016 Ed Schouten + Copyright (c) 2017-2022 Rhodri James + Copyright (c) 2017 Václav Slavík + Copyright (c) 2017 Viktor Szakats + Copyright (c) 2017 Chanho Park + Copyright (c) 2017 Rolf Eike Beer + Copyright (c) 2017 Hans Wennborg + Copyright (c) 2018 Anton Maklakov + Copyright (c) 2018 Benjamin Peterson + Copyright (c) 2018 Marco Maggi + Copyright (c) 2018 Mariusz Zaborski + Copyright (c) 2019 David Loffredo + Copyright (c) 2019-2020 Ben Wagner + Copyright (c) 2019 Vadim Zeitlin + Copyright (c) 2021 Dong-hee Na + Copyright (c) 2022 Samanta Navarro + Copyright (c) 2022 Jeffrey Walton + Copyright (c) 2022 Jann Horn + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#include -#include /* memset(), memcpy() */ -#include -#include /* UINT_MAX */ - -#ifdef WIN32 -#define getpid GetCurrentProcessId -#else -#include /* gettimeofday() */ -#include /* getpid() */ -#include /* getpid() */ -#endif - #define XML_BUILDING_EXPAT 1 +#if ! defined(_GNU_SOURCE) +# define _GNU_SOURCE 1 /* syscall prototype */ +#endif + +#ifdef _WIN32 +/* force stdlib to define rand_s() */ +# if ! defined(_CRT_RAND_S) +# define _CRT_RAND_S +# endif +#endif + +#include +#include /* memset(), memcpy() */ +#include +#include /* UINT_MAX */ +#include /* fprintf */ +#include /* getenv, rand_s */ +#include /* uintptr_t */ +#include /* isnan */ + +#ifdef _WIN32 +# define getpid GetCurrentProcessId +#else +# include /* gettimeofday() */ +# include /* getpid() */ +# include /* getpid() */ +# include /* O_RDONLY */ +# include +#endif + #include "expat_config.h" + #include "ascii.h" #include "expat.h" +#include "siphash.h" + +#if defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM) +# if defined(HAVE_GETRANDOM) +# include /* getrandom */ +# else +# include /* syscall */ +# include /* SYS_getrandom */ +# endif +# if ! defined(GRND_NONBLOCK) +# define GRND_NONBLOCK 0x0001 +# endif /* defined(GRND_NONBLOCK) */ +#endif /* defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM) */ + +#if defined(HAVE_LIBBSD) \ + && (defined(HAVE_ARC4RANDOM_BUF) || defined(HAVE_ARC4RANDOM)) +# include +#endif + +#if defined(_WIN32) && ! defined(LOAD_LIBRARY_SEARCH_SYSTEM32) +# define LOAD_LIBRARY_SEARCH_SYSTEM32 0x00000800 +#endif + +#if ! defined(HAVE_GETRANDOM) && ! defined(HAVE_SYSCALL_GETRANDOM) \ + && ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) \ + && ! defined(XML_DEV_URANDOM) && ! defined(_WIN32) \ + && ! defined(XML_POOR_ENTROPY) +# error You do not have support for any sources of high quality entropy \ + enabled. For end user security, that is probably not what you want. \ + \ + Your options include: \ + * Linux >=3.17 + glibc >=2.25 (getrandom): HAVE_GETRANDOM, \ + * Linux >=3.17 + glibc (including <2.25) (syscall SYS_getrandom): HAVE_SYSCALL_GETRANDOM, \ + * BSD / macOS >=10.7 (arc4random_buf): HAVE_ARC4RANDOM_BUF, \ + * BSD / macOS (including <10.7) (arc4random): HAVE_ARC4RANDOM, \ + * libbsd (arc4random_buf): HAVE_ARC4RANDOM_BUF + HAVE_LIBBSD, \ + * libbsd (arc4random): HAVE_ARC4RANDOM + HAVE_LIBBSD, \ + * Linux (including <3.17) / BSD / macOS (including <10.7) / Solaris >=8 (/dev/urandom): XML_DEV_URANDOM, \ + * Windows >=Vista (rand_s): _WIN32. \ + \ + If insist on not using any of these, bypass this error by defining \ + XML_POOR_ENTROPY; you have been warned. \ + \ + If you have reasons to patch this detection code away or need changes \ + to the build system, please open a bug. Thank you! +#endif #ifdef XML_UNICODE -#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX -#define XmlConvert XmlUtf16Convert -#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding -#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS -#define XmlEncode XmlUtf16Encode -/* Using pointer subtraction to convert to integer type. */ -#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((char *)(s) - (char *)NULL) & 1)) +# define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX +# define XmlConvert XmlUtf16Convert +# define XmlGetInternalEncoding XmlGetUtf16InternalEncoding +# define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS +# define XmlEncode XmlUtf16Encode +# define MUST_CONVERT(enc, s) (! (enc)->isUtf16 || (((uintptr_t)(s)) & 1)) typedef unsigned short ICHAR; #else -#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX -#define XmlConvert XmlUtf8Convert -#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding -#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS -#define XmlEncode XmlUtf8Encode -#define MUST_CONVERT(enc, s) (!(enc)->isUtf8) +# define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX +# define XmlConvert XmlUtf8Convert +# define XmlGetInternalEncoding XmlGetUtf8InternalEncoding +# define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS +# define XmlEncode XmlUtf8Encode +# define MUST_CONVERT(enc, s) (! (enc)->isUtf8) typedef char ICHAR; #endif - #ifndef XML_NS -#define XmlInitEncodingNS XmlInitEncoding -#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding -#undef XmlGetInternalEncodingNS -#define XmlGetInternalEncodingNS XmlGetInternalEncoding -#define XmlParseXmlDeclNS XmlParseXmlDecl +# define XmlInitEncodingNS XmlInitEncoding +# define XmlInitUnknownEncodingNS XmlInitUnknownEncoding +# undef XmlGetInternalEncodingNS +# define XmlGetInternalEncodingNS XmlGetInternalEncoding +# define XmlParseXmlDeclNS XmlParseXmlDecl #endif #ifdef XML_UNICODE -#ifdef XML_UNICODE_WCHAR_T -#define XML_T(x) (const wchar_t)x -#define XML_L(x) L ## x -#else -#define XML_T(x) (const unsigned short)x -#define XML_L(x) x -#endif +# ifdef XML_UNICODE_WCHAR_T +# define XML_T(x) (const wchar_t) x +# define XML_L(x) L##x +# else +# define XML_T(x) (const unsigned short)x +# define XML_L(x) x +# endif #else -#define XML_T(x) x -#define XML_L(x) x +# define XML_T(x) x +# define XML_L(x) x #endif /* Round up n to be a multiple of sz, where sz is a power of 2. */ -#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1)) +#define ROUND_UP(n, sz) (((n) + ((sz)-1)) & ~((sz)-1)) -/* Handle the case where memmove() doesn't exist. */ -#ifndef HAVE_MEMMOVE -#ifdef HAVE_BCOPY -#define memmove(d,s,l) bcopy((s),(d),(l)) -#else -#error memmove does not exist on this platform, nor is a substitute available -#endif /* HAVE_BCOPY */ -#endif /* HAVE_MEMMOVE */ +/* Do safe (NULL-aware) pointer arithmetic */ +#define EXPAT_SAFE_PTR_DIFF(p, q) (((p) && (q)) ? ((p) - (q)) : 0) #include "internal.h" #include "xmltok.h" @@ -98,17 +210,9 @@ typedef struct { const XML_Memory_Handling_Suite *mem; } HASH_TABLE; -/* Basic character hash algorithm, taken from Python's string hash: - h = h * 1000003 ^ character, the constant being a prime number. +static size_t keylen(KEY s); -*/ -#ifdef XML_UNICODE -#define CHAR_HASH(h, c) \ - (((h) * 0xF4243) ^ (unsigned short)(c)) -#else -#define CHAR_HASH(h, c) \ - (((h) * 0xF4243) ^ (unsigned char)(c)) -#endif +static void copy_salt_to_sipkey(XML_Parser parser, struct sipkey *key); /* For probing (after a collision) we need a step size relative prime to the hash table size, which is a power of 2. We use double-hashing, @@ -118,9 +222,9 @@ typedef struct { We limit the maximum step size to table->size / 4 (mask >> 2) and make it odd, since odd numbers are always relative prime to a power of 2. */ -#define SECOND_HASH(hash, mask, power) \ - ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2)) -#define PROBE_STEP(hash, mask, power) \ +#define SECOND_HASH(hash, mask, power) \ + ((((hash) & ~(mask)) >> ((power)-1)) & ((mask) >> 2)) +#define PROBE_STEP(hash, mask, power) \ ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1)) typedef struct { @@ -128,7 +232,7 @@ typedef struct { NAMED **end; } HASH_TABLE_ITER; -#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */ +#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */ #define INIT_DATA_BUF_SIZE 1024 #define INIT_ATTS_SIZE 16 #define INIT_ATTS_VERSION 0xFFFFFFFF @@ -175,20 +279,20 @@ typedef struct { TAG objects in a free list. */ typedef struct tag { - struct tag *parent; /* parent of this element */ - const char *rawName; /* tagName in the original encoding */ + struct tag *parent; /* parent of this element */ + const char *rawName; /* tagName in the original encoding */ int rawNameLength; - TAG_NAME name; /* tagName in the API encoding */ - char *buf; /* buffer for name components */ - char *bufEnd; /* end of the buffer */ + TAG_NAME name; /* tagName in the API encoding */ + char *buf; /* buffer for name components */ + char *bufEnd; /* end of the buffer */ BINDING *bindings; } TAG; typedef struct { const XML_Char *name; const XML_Char *textPtr; - int textLen; /* length in XML_Chars */ - int processed; /* # of processed bytes - when suspended */ + int textLen; /* length in XML_Chars */ + int processed; /* # of processed bytes - when suspended */ const XML_Char *systemId; const XML_Char *base; const XML_Char *publicId; @@ -199,13 +303,13 @@ typedef struct { } ENTITY; typedef struct { - enum XML_Content_Type type; - enum XML_Content_Quant quant; - const XML_Char * name; - int firstchild; - int lastchild; - int childcnt; - int nextsib; + enum XML_Content_Type type; + enum XML_Content_Quant quant; + const XML_Char *name; + int firstchild; + int lastchild; + int childcnt; + int nextsib; } CONTENT_SCAFFOLD; #define INIT_SCAFFOLD_ELEMENTS 32 @@ -293,10 +397,33 @@ typedef struct open_internal_entity { XML_Bool betweenDecl; /* WFC: PE Between Declarations */ } OPEN_INTERNAL_ENTITY; -typedef enum XML_Error PTRCALL Processor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr); +enum XML_Account { + XML_ACCOUNT_DIRECT, /* bytes directly passed to the Expat parser */ + XML_ACCOUNT_ENTITY_EXPANSION, /* intermediate bytes produced during entity + expansion */ + XML_ACCOUNT_NONE /* i.e. do not account, was accounted already */ +}; + +#ifdef XML_DTD +typedef unsigned long long XmlBigCount; +typedef struct accounting { + XmlBigCount countBytesDirect; + XmlBigCount countBytesIndirect; + int debugLevel; + float maximumAmplificationFactor; // >=1.0 + unsigned long long activationThresholdBytes; +} ACCOUNTING; + +typedef struct entity_stats { + unsigned int countEverOpened; + unsigned int currentDepth; + unsigned int maximumDepthSeen; + int debugLevel; +} ENTITY_STATS; +#endif /* XML_DTD */ + +typedef enum XML_Error PTRCALL Processor(XML_Parser parser, const char *start, + const char *end, const char **endPtr); static Processor prologProcessor; static Processor prologInitProcessor; @@ -317,128 +444,147 @@ static Processor externalEntityInitProcessor3; static Processor externalEntityContentProcessor; static Processor internalEntityProcessor; -static enum XML_Error -handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName); -static enum XML_Error -processXmlDecl(XML_Parser parser, int isGeneralTextEntity, - const char *s, const char *next); -static enum XML_Error -initializeEncoding(XML_Parser parser); -static enum XML_Error -doProlog(XML_Parser parser, const ENCODING *enc, const char *s, - const char *end, int tok, const char *next, const char **nextPtr, - XML_Bool haveMore); -static enum XML_Error -processInternalEntity(XML_Parser parser, ENTITY *entity, - XML_Bool betweenDecl); -static enum XML_Error -doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, - const char *start, const char *end, const char **endPtr, - XML_Bool haveMore); -static enum XML_Error -doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr, - const char *end, const char **nextPtr, XML_Bool haveMore); +static enum XML_Error handleUnknownEncoding(XML_Parser parser, + const XML_Char *encodingName); +static enum XML_Error processXmlDecl(XML_Parser parser, int isGeneralTextEntity, + const char *s, const char *next); +static enum XML_Error initializeEncoding(XML_Parser parser); +static enum XML_Error doProlog(XML_Parser parser, const ENCODING *enc, + const char *s, const char *end, int tok, + const char *next, const char **nextPtr, + XML_Bool haveMore, XML_Bool allowClosingDoctype, + enum XML_Account account); +static enum XML_Error processInternalEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl); +static enum XML_Error doContent(XML_Parser parser, int startTagLevel, + const ENCODING *enc, const char *start, + const char *end, const char **endPtr, + XML_Bool haveMore, enum XML_Account account); +static enum XML_Error doCdataSection(XML_Parser parser, const ENCODING *, + const char **startPtr, const char *end, + const char **nextPtr, XML_Bool haveMore, + enum XML_Account account); #ifdef XML_DTD -static enum XML_Error -doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr, - const char *end, const char **nextPtr, XML_Bool haveMore); +static enum XML_Error doIgnoreSection(XML_Parser parser, const ENCODING *, + const char **startPtr, const char *end, + const char **nextPtr, XML_Bool haveMore); #endif /* XML_DTD */ -static enum XML_Error -storeAtts(XML_Parser parser, const ENCODING *, const char *s, - TAG_NAME *tagNamePtr, BINDING **bindingsPtr); -static enum XML_Error -addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, - const XML_Char *uri, BINDING **bindingsPtr); -static int -defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, - XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser); -static enum XML_Error -storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, - const char *, const char *, STRING_POOL *); -static enum XML_Error -appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, - const char *, const char *, STRING_POOL *); -static ATTRIBUTE_ID * -getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); -static int -setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); -static enum XML_Error -storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); -static int -reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end); -static int -reportComment(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); -static void -reportDefault(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); +static void freeBindings(XML_Parser parser, BINDING *bindings); +static enum XML_Error storeAtts(XML_Parser parser, const ENCODING *, + const char *s, TAG_NAME *tagNamePtr, + BINDING **bindingsPtr, + enum XML_Account account); +static enum XML_Error addBinding(XML_Parser parser, PREFIX *prefix, + const ATTRIBUTE_ID *attId, const XML_Char *uri, + BINDING **bindingsPtr); +static int defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, + XML_Bool isId, const XML_Char *dfltValue, + XML_Parser parser); +static enum XML_Error storeAttributeValue(XML_Parser parser, const ENCODING *, + XML_Bool isCdata, const char *, + const char *, STRING_POOL *, + enum XML_Account account); +static enum XML_Error appendAttributeValue(XML_Parser parser, const ENCODING *, + XML_Bool isCdata, const char *, + const char *, STRING_POOL *, + enum XML_Account account); +static ATTRIBUTE_ID *getAttributeId(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); +static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); +static enum XML_Error storeEntityValue(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end, + enum XML_Account account); +static int reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); +static int reportComment(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); +static void reportDefault(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); -static const XML_Char * getContext(XML_Parser parser); -static XML_Bool -setContext(XML_Parser parser, const XML_Char *context); +static const XML_Char *getContext(XML_Parser parser); +static XML_Bool setContext(XML_Parser parser, const XML_Char *context); static void FASTCALL normalizePublicId(XML_Char *s); -static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms); -/* do not call if parentParser != NULL */ +static DTD *dtdCreate(const XML_Memory_Handling_Suite *ms); +/* do not call if m_parentParser != NULL */ static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms); -static void -dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms); -static int -dtdCopy(XML_Parser oldParser, - DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms); -static int -copyEntityTable(XML_Parser oldParser, - HASH_TABLE *, STRING_POOL *, const HASH_TABLE *); -static NAMED * -lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize); -static void FASTCALL -hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms); +static void dtdDestroy(DTD *p, XML_Bool isDocEntity, + const XML_Memory_Handling_Suite *ms); +static int dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, + const XML_Memory_Handling_Suite *ms); +static int copyEntityTable(XML_Parser oldParser, HASH_TABLE *, STRING_POOL *, + const HASH_TABLE *); +static NAMED *lookup(XML_Parser parser, HASH_TABLE *table, KEY name, + size_t createSize); +static void FASTCALL hashTableInit(HASH_TABLE *, + const XML_Memory_Handling_Suite *ms); static void FASTCALL hashTableClear(HASH_TABLE *); static void FASTCALL hashTableDestroy(HASH_TABLE *); -static void FASTCALL -hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *); -static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *); +static void FASTCALL hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *); +static NAMED *FASTCALL hashTableIterNext(HASH_TABLE_ITER *); -static void FASTCALL -poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms); +static void FASTCALL poolInit(STRING_POOL *, + const XML_Memory_Handling_Suite *ms); static void FASTCALL poolClear(STRING_POOL *); static void FASTCALL poolDestroy(STRING_POOL *); -static XML_Char * -poolAppend(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end); -static XML_Char * -poolStoreString(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end); +static XML_Char *poolAppend(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end); +static XML_Char *poolStoreString(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end); static XML_Bool FASTCALL poolGrow(STRING_POOL *pool); -static const XML_Char * FASTCALL -poolCopyString(STRING_POOL *pool, const XML_Char *s); -static const XML_Char * -poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n); -static const XML_Char * FASTCALL -poolAppendString(STRING_POOL *pool, const XML_Char *s); +static const XML_Char *FASTCALL poolCopyString(STRING_POOL *pool, + const XML_Char *s); +static const XML_Char *poolCopyStringN(STRING_POOL *pool, const XML_Char *s, + int n); +static const XML_Char *FASTCALL poolAppendString(STRING_POOL *pool, + const XML_Char *s); static int FASTCALL nextScaffoldPart(XML_Parser parser); -static XML_Content * build_model(XML_Parser parser); -static ELEMENT_TYPE * -getElementType(XML_Parser parser, const ENCODING *enc, - const char *ptr, const char *end); +static XML_Content *build_model(XML_Parser parser); +static ELEMENT_TYPE *getElementType(XML_Parser parser, const ENCODING *enc, + const char *ptr, const char *end); + +static XML_Char *copyString(const XML_Char *s, + const XML_Memory_Handling_Suite *memsuite); static unsigned long generate_hash_secret_salt(XML_Parser parser); static XML_Bool startParsing(XML_Parser parser); -static XML_Parser -parserCreate(const XML_Char *encodingName, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep, - DTD *dtd); +static XML_Parser parserCreate(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep, DTD *dtd); -static void -parserInit(XML_Parser parser, const XML_Char *encodingName); +static void parserInit(XML_Parser parser, const XML_Char *encodingName); + +#ifdef XML_DTD +static float accountingGetCurrentAmplification(XML_Parser rootParser); +static void accountingReportStats(XML_Parser originParser, const char *epilog); +static void accountingOnAbort(XML_Parser originParser); +static void accountingReportDiff(XML_Parser rootParser, + unsigned int levelsAwayFromRootParser, + const char *before, const char *after, + ptrdiff_t bytesMore, int source_line, + enum XML_Account account); +static XML_Bool accountingDiffTolerated(XML_Parser originParser, int tok, + const char *before, const char *after, + int source_line, + enum XML_Account account); + +static void entityTrackingReportStats(XML_Parser parser, ENTITY *entity, + const char *action, int sourceLine); +static void entityTrackingOnOpen(XML_Parser parser, ENTITY *entity, + int sourceLine); +static void entityTrackingOnClose(XML_Parser parser, ENTITY *entity, + int sourceLine); + +static XML_Parser getRootParserOf(XML_Parser parser, + unsigned int *outLevelDiff); +#endif /* XML_DTD */ + +static unsigned long getDebugLevel(const char *variableName, + unsigned long defaultDebugLevel); #define poolStart(pool) ((pool)->start) #define poolEnd(pool) ((pool)->ptr) @@ -447,13 +593,13 @@ parserInit(XML_Parser parser, const XML_Char *encodingName); #define poolLastChar(pool) (((pool)->ptr)[-1]) #define poolDiscard(pool) ((pool)->ptr = (pool)->start) #define poolFinish(pool) ((pool)->start = (pool)->ptr) -#define poolAppendChar(pool, c) \ - (((pool)->ptr == (pool)->end && !poolGrow(pool)) \ - ? 0 \ - : ((*((pool)->ptr)++ = c), 1)) +#define poolAppendChar(pool, c) \ + (((pool)->ptr == (pool)->end && ! poolGrow(pool)) \ + ? 0 \ + : ((*((pool)->ptr)++ = c), 1)) struct XML_ParserStruct { - /* The first member must be userData so that the XML_GetUserData + /* The first member must be m_userData so that the XML_GetUserData macro works. */ void *m_userData; void *m_handlerArg; @@ -463,7 +609,7 @@ struct XML_ParserStruct { const char *m_bufferPtr; /* past last character to be parsed */ char *m_bufferEnd; - /* allocated end of buffer */ + /* allocated end of m_buffer */ const char *m_bufferLim; XML_Index m_parseEndByteIndex; const char *m_parseEndPtr; @@ -501,7 +647,7 @@ struct XML_ParserStruct { void *m_unknownEncodingMem; void *m_unknownEncodingData; void *m_unknownEncodingHandlerData; - void (XMLCALL *m_unknownEncodingRelease)(void *); + void(XMLCALL *m_unknownEncodingRelease)(void *); PROLOG_STATE m_prologState; Processor *m_processor; enum XML_Error m_errorCode; @@ -553,220 +699,288 @@ struct XML_ParserStruct { enum XML_ParamEntityParsing m_paramEntityParsing; #endif unsigned long m_hash_secret_salt; +#ifdef XML_DTD + ACCOUNTING m_accounting; + ENTITY_STATS m_entity_stats; +#endif }; -#define MALLOC(s) (parser->m_mem.malloc_fcn((s))) -#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s))) -#define FREE(p) (parser->m_mem.free_fcn((p))) - -#define userData (parser->m_userData) -#define handlerArg (parser->m_handlerArg) -#define startElementHandler (parser->m_startElementHandler) -#define endElementHandler (parser->m_endElementHandler) -#define characterDataHandler (parser->m_characterDataHandler) -#define processingInstructionHandler \ - (parser->m_processingInstructionHandler) -#define commentHandler (parser->m_commentHandler) -#define startCdataSectionHandler \ - (parser->m_startCdataSectionHandler) -#define endCdataSectionHandler (parser->m_endCdataSectionHandler) -#define defaultHandler (parser->m_defaultHandler) -#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler) -#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler) -#define unparsedEntityDeclHandler \ - (parser->m_unparsedEntityDeclHandler) -#define notationDeclHandler (parser->m_notationDeclHandler) -#define startNamespaceDeclHandler \ - (parser->m_startNamespaceDeclHandler) -#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler) -#define notStandaloneHandler (parser->m_notStandaloneHandler) -#define externalEntityRefHandler \ - (parser->m_externalEntityRefHandler) -#define externalEntityRefHandlerArg \ - (parser->m_externalEntityRefHandlerArg) -#define internalEntityRefHandler \ - (parser->m_internalEntityRefHandler) -#define skippedEntityHandler (parser->m_skippedEntityHandler) -#define unknownEncodingHandler (parser->m_unknownEncodingHandler) -#define elementDeclHandler (parser->m_elementDeclHandler) -#define attlistDeclHandler (parser->m_attlistDeclHandler) -#define entityDeclHandler (parser->m_entityDeclHandler) -#define xmlDeclHandler (parser->m_xmlDeclHandler) -#define encoding (parser->m_encoding) -#define initEncoding (parser->m_initEncoding) -#define internalEncoding (parser->m_internalEncoding) -#define unknownEncodingMem (parser->m_unknownEncodingMem) -#define unknownEncodingData (parser->m_unknownEncodingData) -#define unknownEncodingHandlerData \ - (parser->m_unknownEncodingHandlerData) -#define unknownEncodingRelease (parser->m_unknownEncodingRelease) -#define protocolEncodingName (parser->m_protocolEncodingName) -#define ns (parser->m_ns) -#define ns_triplets (parser->m_ns_triplets) -#define prologState (parser->m_prologState) -#define processor (parser->m_processor) -#define errorCode (parser->m_errorCode) -#define eventPtr (parser->m_eventPtr) -#define eventEndPtr (parser->m_eventEndPtr) -#define positionPtr (parser->m_positionPtr) -#define position (parser->m_position) -#define openInternalEntities (parser->m_openInternalEntities) -#define freeInternalEntities (parser->m_freeInternalEntities) -#define defaultExpandInternalEntities \ - (parser->m_defaultExpandInternalEntities) -#define tagLevel (parser->m_tagLevel) -#define buffer (parser->m_buffer) -#define bufferPtr (parser->m_bufferPtr) -#define bufferEnd (parser->m_bufferEnd) -#define parseEndByteIndex (parser->m_parseEndByteIndex) -#define parseEndPtr (parser->m_parseEndPtr) -#define bufferLim (parser->m_bufferLim) -#define dataBuf (parser->m_dataBuf) -#define dataBufEnd (parser->m_dataBufEnd) -#define _dtd (parser->m_dtd) -#define curBase (parser->m_curBase) -#define declEntity (parser->m_declEntity) -#define doctypeName (parser->m_doctypeName) -#define doctypeSysid (parser->m_doctypeSysid) -#define doctypePubid (parser->m_doctypePubid) -#define declAttributeType (parser->m_declAttributeType) -#define declNotationName (parser->m_declNotationName) -#define declNotationPublicId (parser->m_declNotationPublicId) -#define declElementType (parser->m_declElementType) -#define declAttributeId (parser->m_declAttributeId) -#define declAttributeIsCdata (parser->m_declAttributeIsCdata) -#define declAttributeIsId (parser->m_declAttributeIsId) -#define freeTagList (parser->m_freeTagList) -#define freeBindingList (parser->m_freeBindingList) -#define inheritedBindings (parser->m_inheritedBindings) -#define tagStack (parser->m_tagStack) -#define atts (parser->m_atts) -#define attsSize (parser->m_attsSize) -#define nSpecifiedAtts (parser->m_nSpecifiedAtts) -#define idAttIndex (parser->m_idAttIndex) -#define nsAtts (parser->m_nsAtts) -#define nsAttsVersion (parser->m_nsAttsVersion) -#define nsAttsPower (parser->m_nsAttsPower) -#define attInfo (parser->m_attInfo) -#define tempPool (parser->m_tempPool) -#define temp2Pool (parser->m_temp2Pool) -#define groupConnector (parser->m_groupConnector) -#define groupSize (parser->m_groupSize) -#define namespaceSeparator (parser->m_namespaceSeparator) -#define parentParser (parser->m_parentParser) -#define ps_parsing (parser->m_parsingStatus.parsing) -#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer) -#ifdef XML_DTD -#define isParamEntity (parser->m_isParamEntity) -#define useForeignDTD (parser->m_useForeignDTD) -#define paramEntityParsing (parser->m_paramEntityParsing) -#endif /* XML_DTD */ -#define hash_secret_salt (parser->m_hash_secret_salt) +#define MALLOC(parser, s) (parser->m_mem.malloc_fcn((s))) +#define REALLOC(parser, p, s) (parser->m_mem.realloc_fcn((p), (s))) +#define FREE(parser, p) (parser->m_mem.free_fcn((p))) XML_Parser XMLCALL -XML_ParserCreate(const XML_Char *encodingName) -{ +XML_ParserCreate(const XML_Char *encodingName) { return XML_ParserCreate_MM(encodingName, NULL, NULL); } XML_Parser XMLCALL -XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) -{ - XML_Char tmp[2]; - *tmp = nsSep; +XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) { + XML_Char tmp[2] = {nsSep, 0}; return XML_ParserCreate_MM(encodingName, NULL, tmp); } -static const XML_Char implicitContext[] = { - ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, ASCII_t, ASCII_t, ASCII_p, - ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, - ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g, - ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9, - ASCII_9, ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e, - ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0' -}; +// "xml=http://www.w3.org/XML/1998/namespace" +static const XML_Char implicitContext[] + = {ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, + ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, + ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, + ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, + ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, + ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, + ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e, + ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, + '\0'}; + +/* To avoid warnings about unused functions: */ +#if ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) + +# if defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM) + +/* Obtain entropy on Linux 3.17+ */ +static int +writeRandomBytes_getrandom_nonblock(void *target, size_t count) { + int success = 0; /* full count bytes written? */ + size_t bytesWrittenTotal = 0; + const unsigned int getrandomFlags = GRND_NONBLOCK; + + do { + void *const currentTarget = (void *)((char *)target + bytesWrittenTotal); + const size_t bytesToWrite = count - bytesWrittenTotal; + + const int bytesWrittenMore = +# if defined(HAVE_GETRANDOM) + getrandom(currentTarget, bytesToWrite, getrandomFlags); +# else + syscall(SYS_getrandom, currentTarget, bytesToWrite, getrandomFlags); +# endif + + if (bytesWrittenMore > 0) { + bytesWrittenTotal += bytesWrittenMore; + if (bytesWrittenTotal >= count) + success = 1; + } + } while (! success && (errno == EINTR)); + + return success; +} + +# endif /* defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM) */ + +# if ! defined(_WIN32) && defined(XML_DEV_URANDOM) + +/* Extract entropy from /dev/urandom */ +static int +writeRandomBytes_dev_urandom(void *target, size_t count) { + int success = 0; /* full count bytes written? */ + size_t bytesWrittenTotal = 0; + + const int fd = open("/dev/urandom", O_RDONLY); + if (fd < 0) { + return 0; + } + + do { + void *const currentTarget = (void *)((char *)target + bytesWrittenTotal); + const size_t bytesToWrite = count - bytesWrittenTotal; + + const ssize_t bytesWrittenMore = read(fd, currentTarget, bytesToWrite); + + if (bytesWrittenMore > 0) { + bytesWrittenTotal += bytesWrittenMore; + if (bytesWrittenTotal >= count) + success = 1; + } + } while (! success && (errno == EINTR)); + + close(fd); + return success; +} + +# endif /* ! defined(_WIN32) && defined(XML_DEV_URANDOM) */ + +#endif /* ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) */ + +#if defined(HAVE_ARC4RANDOM) && ! defined(HAVE_ARC4RANDOM_BUF) + +static void +writeRandomBytes_arc4random(void *target, size_t count) { + size_t bytesWrittenTotal = 0; + + while (bytesWrittenTotal < count) { + const uint32_t random32 = arc4random(); + size_t i = 0; + + for (; (i < sizeof(random32)) && (bytesWrittenTotal < count); + i++, bytesWrittenTotal++) { + const uint8_t random8 = (uint8_t)(random32 >> (i * 8)); + ((uint8_t *)target)[bytesWrittenTotal] = random8; + } + } +} + +#endif /* defined(HAVE_ARC4RANDOM) && ! defined(HAVE_ARC4RANDOM_BUF) */ + +#ifdef _WIN32 + +/* Provide declaration of rand_s() for MinGW-32 (not 64, which has it), + as it didn't declare it in its header prior to version 5.3.0 of its + runtime package (mingwrt, containing stdlib.h). The upstream fix + was introduced at https://osdn.net/projects/mingw/ticket/39658 . */ +# if defined(__MINGW32__) && defined(__MINGW32_VERSION) \ + && __MINGW32_VERSION < 5003000L && ! defined(__MINGW64_VERSION_MAJOR) +__declspec(dllimport) int rand_s(unsigned int *); +# endif + +/* Obtain entropy on Windows using the rand_s() function which + * generates cryptographically secure random numbers. Internally it + * uses RtlGenRandom API which is present in Windows XP and later. + */ +static int +writeRandomBytes_rand_s(void *target, size_t count) { + size_t bytesWrittenTotal = 0; + + while (bytesWrittenTotal < count) { + unsigned int random32 = 0; + size_t i = 0; + + if (rand_s(&random32)) + return 0; /* failure */ + + for (; (i < sizeof(random32)) && (bytesWrittenTotal < count); + i++, bytesWrittenTotal++) { + const uint8_t random8 = (uint8_t)(random32 >> (i * 8)); + ((uint8_t *)target)[bytesWrittenTotal] = random8; + } + } + return 1; /* success */ +} + +#endif /* _WIN32 */ + +#if ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) static unsigned long -gather_time_entropy(void) -{ -#ifdef WIN32 +gather_time_entropy(void) { +# ifdef _WIN32 FILETIME ft; GetSystemTimeAsFileTime(&ft); /* never fails */ return ft.dwHighDateTime ^ ft.dwLowDateTime; -#else +# else struct timeval tv; int gettimeofday_res; gettimeofday_res = gettimeofday(&tv, NULL); - assert (gettimeofday_res == 0); + +# if defined(NDEBUG) + (void)gettimeofday_res; +# else + assert(gettimeofday_res == 0); +# endif /* defined(NDEBUG) */ /* Microseconds time is <20 bits entropy */ return tv.tv_usec; +# endif +} + +#endif /* ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) */ + +static unsigned long +ENTROPY_DEBUG(const char *label, unsigned long entropy) { + if (getDebugLevel("EXPAT_ENTROPY_DEBUG", 0) >= 1u) { + fprintf(stderr, "expat: Entropy: %s --> 0x%0*lx (%lu bytes)\n", label, + (int)sizeof(entropy) * 2, entropy, (unsigned long)sizeof(entropy)); + } + return entropy; +} + +static unsigned long +generate_hash_secret_salt(XML_Parser parser) { + unsigned long entropy; + (void)parser; + + /* "Failproof" high quality providers: */ +#if defined(HAVE_ARC4RANDOM_BUF) + arc4random_buf(&entropy, sizeof(entropy)); + return ENTROPY_DEBUG("arc4random_buf", entropy); +#elif defined(HAVE_ARC4RANDOM) + writeRandomBytes_arc4random((void *)&entropy, sizeof(entropy)); + return ENTROPY_DEBUG("arc4random", entropy); +#else + /* Try high quality providers first .. */ +# ifdef _WIN32 + if (writeRandomBytes_rand_s((void *)&entropy, sizeof(entropy))) { + return ENTROPY_DEBUG("rand_s", entropy); + } +# elif defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM) + if (writeRandomBytes_getrandom_nonblock((void *)&entropy, sizeof(entropy))) { + return ENTROPY_DEBUG("getrandom", entropy); + } +# endif +# if ! defined(_WIN32) && defined(XML_DEV_URANDOM) + if (writeRandomBytes_dev_urandom((void *)&entropy, sizeof(entropy))) { + return ENTROPY_DEBUG("/dev/urandom", entropy); + } +# endif /* ! defined(_WIN32) && defined(XML_DEV_URANDOM) */ + /* .. and self-made low quality for backup: */ + + /* Process ID is 0 bits entropy if attacker has local access */ + entropy = gather_time_entropy() ^ getpid(); + + /* Factors are 2^31-1 and 2^61-1 (Mersenne primes M31 and M61) */ + if (sizeof(unsigned long) == 4) { + return ENTROPY_DEBUG("fallback(4)", entropy * 2147483647); + } else { + return ENTROPY_DEBUG("fallback(8)", + entropy * (unsigned long)2305843009213693951ULL); + } #endif } static unsigned long -generate_hash_secret_salt(XML_Parser parser) -{ - /* Process ID is 0 bits entropy if attacker has local access - * XML_Parser address is few bits of entropy if attacker has local access */ - // Prusa3D specific: Fix for a following warning, which turns to an error on some Perl/XS installations: - // error: cast from 'XML_Parser' to 'long unsigned int' loses precision [-fpermissive] - unsigned long *parser_addr = (unsigned long*)&parser; - const unsigned long entropy = - gather_time_entropy() ^ getpid() ^ *parser_addr; - - /* Factors are 2^31-1 and 2^61-1 (Mersenne primes M31 and M61) */ - if (sizeof(unsigned long) == 4) { - return entropy * 2147483647; - } else { - return entropy * (unsigned long)2305843009213693951; - } +get_hash_secret_salt(XML_Parser parser) { + if (parser->m_parentParser != NULL) + return get_hash_secret_salt(parser->m_parentParser); + return parser->m_hash_secret_salt; } -static XML_Bool /* only valid for root parser */ -startParsing(XML_Parser parser) -{ - /* hash functions must be initialized before setContext() is called */ - if (hash_secret_salt == 0) - hash_secret_salt = generate_hash_secret_salt(parser); - if (ns) { - /* implicit context only set for root parser, since child - parsers (i.e. external entity parsers) will inherit it - */ - return setContext(parser, implicitContext); - } - return XML_TRUE; +static XML_Bool /* only valid for root parser */ +startParsing(XML_Parser parser) { + /* hash functions must be initialized before setContext() is called */ + if (parser->m_hash_secret_salt == 0) + parser->m_hash_secret_salt = generate_hash_secret_salt(parser); + if (parser->m_ns) { + /* implicit context only set for root parser, since child + parsers (i.e. external entity parsers) will inherit it + */ + return setContext(parser, implicitContext); + } + return XML_TRUE; } XML_Parser XMLCALL XML_ParserCreate_MM(const XML_Char *encodingName, const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep) -{ + const XML_Char *nameSep) { return parserCreate(encodingName, memsuite, nameSep, NULL); } static XML_Parser parserCreate(const XML_Char *encodingName, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep, - DTD *dtd) -{ + const XML_Memory_Handling_Suite *memsuite, const XML_Char *nameSep, + DTD *dtd) { XML_Parser parser; if (memsuite) { XML_Memory_Handling_Suite *mtemp; - parser = (XML_Parser) - memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); + parser = memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); if (parser != NULL) { mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); mtemp->malloc_fcn = memsuite->malloc_fcn; mtemp->realloc_fcn = memsuite->realloc_fcn; mtemp->free_fcn = memsuite->free_fcn; } - } - else { + } else { XML_Memory_Handling_Suite *mtemp; parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); if (parser != NULL) { @@ -777,287 +991,356 @@ parserCreate(const XML_Char *encodingName, } } - if (!parser) + if (! parser) return parser; - buffer = NULL; - bufferLim = NULL; + parser->m_buffer = NULL; + parser->m_bufferLim = NULL; - attsSize = INIT_ATTS_SIZE; - atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE)); - if (atts == NULL) { - FREE(parser); + parser->m_attsSize = INIT_ATTS_SIZE; + parser->m_atts + = (ATTRIBUTE *)MALLOC(parser, parser->m_attsSize * sizeof(ATTRIBUTE)); + if (parser->m_atts == NULL) { + FREE(parser, parser); return NULL; } #ifdef XML_ATTR_INFO - attInfo = (XML_AttrInfo*)MALLOC(attsSize * sizeof(XML_AttrInfo)); - if (attInfo == NULL) { - FREE(atts); - FREE(parser); + parser->m_attInfo = (XML_AttrInfo *)MALLOC( + parser, parser->m_attsSize * sizeof(XML_AttrInfo)); + if (parser->m_attInfo == NULL) { + FREE(parser, parser->m_atts); + FREE(parser, parser); return NULL; } #endif - dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char)); - if (dataBuf == NULL) { - FREE(atts); + parser->m_dataBuf + = (XML_Char *)MALLOC(parser, INIT_DATA_BUF_SIZE * sizeof(XML_Char)); + if (parser->m_dataBuf == NULL) { + FREE(parser, parser->m_atts); #ifdef XML_ATTR_INFO - FREE(attInfo); + FREE(parser, parser->m_attInfo); #endif - FREE(parser); + FREE(parser, parser); return NULL; } - dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE; + parser->m_dataBufEnd = parser->m_dataBuf + INIT_DATA_BUF_SIZE; if (dtd) - _dtd = dtd; + parser->m_dtd = dtd; else { - _dtd = dtdCreate(&parser->m_mem); - if (_dtd == NULL) { - FREE(dataBuf); - FREE(atts); + parser->m_dtd = dtdCreate(&parser->m_mem); + if (parser->m_dtd == NULL) { + FREE(parser, parser->m_dataBuf); + FREE(parser, parser->m_atts); #ifdef XML_ATTR_INFO - FREE(attInfo); + FREE(parser, parser->m_attInfo); #endif - FREE(parser); + FREE(parser, parser); return NULL; } } - freeBindingList = NULL; - freeTagList = NULL; - freeInternalEntities = NULL; + parser->m_freeBindingList = NULL; + parser->m_freeTagList = NULL; + parser->m_freeInternalEntities = NULL; - groupSize = 0; - groupConnector = NULL; + parser->m_groupSize = 0; + parser->m_groupConnector = NULL; - unknownEncodingHandler = NULL; - unknownEncodingHandlerData = NULL; + parser->m_unknownEncodingHandler = NULL; + parser->m_unknownEncodingHandlerData = NULL; - namespaceSeparator = ASCII_EXCL; - ns = XML_FALSE; - ns_triplets = XML_FALSE; + parser->m_namespaceSeparator = ASCII_EXCL; + parser->m_ns = XML_FALSE; + parser->m_ns_triplets = XML_FALSE; - nsAtts = NULL; - nsAttsVersion = 0; - nsAttsPower = 0; + parser->m_nsAtts = NULL; + parser->m_nsAttsVersion = 0; + parser->m_nsAttsPower = 0; - poolInit(&tempPool, &(parser->m_mem)); - poolInit(&temp2Pool, &(parser->m_mem)); + parser->m_protocolEncodingName = NULL; + + poolInit(&parser->m_tempPool, &(parser->m_mem)); + poolInit(&parser->m_temp2Pool, &(parser->m_mem)); parserInit(parser, encodingName); - if (encodingName && !protocolEncodingName) { + if (encodingName && ! parser->m_protocolEncodingName) { + if (dtd) { + // We need to stop the upcoming call to XML_ParserFree from happily + // destroying parser->m_dtd because the DTD is shared with the parent + // parser and the only guard that keeps XML_ParserFree from destroying + // parser->m_dtd is parser->m_isParamEntity but it will be set to + // XML_TRUE only later in XML_ExternalEntityParserCreate (or not at all). + parser->m_dtd = NULL; + } XML_ParserFree(parser); return NULL; } if (nameSep) { - ns = XML_TRUE; - internalEncoding = XmlGetInternalEncodingNS(); - namespaceSeparator = *nameSep; - } - else { - internalEncoding = XmlGetInternalEncoding(); + parser->m_ns = XML_TRUE; + parser->m_internalEncoding = XmlGetInternalEncodingNS(); + parser->m_namespaceSeparator = *nameSep; + } else { + parser->m_internalEncoding = XmlGetInternalEncoding(); } return parser; } static void -parserInit(XML_Parser parser, const XML_Char *encodingName) -{ - processor = prologInitProcessor; - XmlPrologStateInit(&prologState); - protocolEncodingName = (encodingName != NULL - ? poolCopyString(&tempPool, encodingName) - : NULL); - curBase = NULL; - XmlInitEncoding(&initEncoding, &encoding, 0); - userData = NULL; - handlerArg = NULL; - startElementHandler = NULL; - endElementHandler = NULL; - characterDataHandler = NULL; - processingInstructionHandler = NULL; - commentHandler = NULL; - startCdataSectionHandler = NULL; - endCdataSectionHandler = NULL; - defaultHandler = NULL; - startDoctypeDeclHandler = NULL; - endDoctypeDeclHandler = NULL; - unparsedEntityDeclHandler = NULL; - notationDeclHandler = NULL; - startNamespaceDeclHandler = NULL; - endNamespaceDeclHandler = NULL; - notStandaloneHandler = NULL; - externalEntityRefHandler = NULL; - externalEntityRefHandlerArg = parser; - skippedEntityHandler = NULL; - elementDeclHandler = NULL; - attlistDeclHandler = NULL; - entityDeclHandler = NULL; - xmlDeclHandler = NULL; - bufferPtr = buffer; - bufferEnd = buffer; - parseEndByteIndex = 0; - parseEndPtr = NULL; - declElementType = NULL; - declAttributeId = NULL; - declEntity = NULL; - doctypeName = NULL; - doctypeSysid = NULL; - doctypePubid = NULL; - declAttributeType = NULL; - declNotationName = NULL; - declNotationPublicId = NULL; - declAttributeIsCdata = XML_FALSE; - declAttributeIsId = XML_FALSE; - memset(&position, 0, sizeof(POSITION)); - errorCode = XML_ERROR_NONE; - eventPtr = NULL; - eventEndPtr = NULL; - positionPtr = NULL; - openInternalEntities = NULL; - defaultExpandInternalEntities = XML_TRUE; - tagLevel = 0; - tagStack = NULL; - inheritedBindings = NULL; - nSpecifiedAtts = 0; - unknownEncodingMem = NULL; - unknownEncodingRelease = NULL; - unknownEncodingData = NULL; - parentParser = NULL; - ps_parsing = XML_INITIALIZED; +parserInit(XML_Parser parser, const XML_Char *encodingName) { + parser->m_processor = prologInitProcessor; + XmlPrologStateInit(&parser->m_prologState); + if (encodingName != NULL) { + parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); + } + parser->m_curBase = NULL; + XmlInitEncoding(&parser->m_initEncoding, &parser->m_encoding, 0); + parser->m_userData = NULL; + parser->m_handlerArg = NULL; + parser->m_startElementHandler = NULL; + parser->m_endElementHandler = NULL; + parser->m_characterDataHandler = NULL; + parser->m_processingInstructionHandler = NULL; + parser->m_commentHandler = NULL; + parser->m_startCdataSectionHandler = NULL; + parser->m_endCdataSectionHandler = NULL; + parser->m_defaultHandler = NULL; + parser->m_startDoctypeDeclHandler = NULL; + parser->m_endDoctypeDeclHandler = NULL; + parser->m_unparsedEntityDeclHandler = NULL; + parser->m_notationDeclHandler = NULL; + parser->m_startNamespaceDeclHandler = NULL; + parser->m_endNamespaceDeclHandler = NULL; + parser->m_notStandaloneHandler = NULL; + parser->m_externalEntityRefHandler = NULL; + parser->m_externalEntityRefHandlerArg = parser; + parser->m_skippedEntityHandler = NULL; + parser->m_elementDeclHandler = NULL; + parser->m_attlistDeclHandler = NULL; + parser->m_entityDeclHandler = NULL; + parser->m_xmlDeclHandler = NULL; + parser->m_bufferPtr = parser->m_buffer; + parser->m_bufferEnd = parser->m_buffer; + parser->m_parseEndByteIndex = 0; + parser->m_parseEndPtr = NULL; + parser->m_declElementType = NULL; + parser->m_declAttributeId = NULL; + parser->m_declEntity = NULL; + parser->m_doctypeName = NULL; + parser->m_doctypeSysid = NULL; + parser->m_doctypePubid = NULL; + parser->m_declAttributeType = NULL; + parser->m_declNotationName = NULL; + parser->m_declNotationPublicId = NULL; + parser->m_declAttributeIsCdata = XML_FALSE; + parser->m_declAttributeIsId = XML_FALSE; + memset(&parser->m_position, 0, sizeof(POSITION)); + parser->m_errorCode = XML_ERROR_NONE; + parser->m_eventPtr = NULL; + parser->m_eventEndPtr = NULL; + parser->m_positionPtr = NULL; + parser->m_openInternalEntities = NULL; + parser->m_defaultExpandInternalEntities = XML_TRUE; + parser->m_tagLevel = 0; + parser->m_tagStack = NULL; + parser->m_inheritedBindings = NULL; + parser->m_nSpecifiedAtts = 0; + parser->m_unknownEncodingMem = NULL; + parser->m_unknownEncodingRelease = NULL; + parser->m_unknownEncodingData = NULL; + parser->m_parentParser = NULL; + parser->m_parsingStatus.parsing = XML_INITIALIZED; #ifdef XML_DTD - isParamEntity = XML_FALSE; - useForeignDTD = XML_FALSE; - paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; + parser->m_isParamEntity = XML_FALSE; + parser->m_useForeignDTD = XML_FALSE; + parser->m_paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; +#endif + parser->m_hash_secret_salt = 0; + +#ifdef XML_DTD + memset(&parser->m_accounting, 0, sizeof(ACCOUNTING)); + parser->m_accounting.debugLevel = getDebugLevel("EXPAT_ACCOUNTING_DEBUG", 0u); + parser->m_accounting.maximumAmplificationFactor + = EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_MAXIMUM_AMPLIFICATION_DEFAULT; + parser->m_accounting.activationThresholdBytes + = EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT; + + memset(&parser->m_entity_stats, 0, sizeof(ENTITY_STATS)); + parser->m_entity_stats.debugLevel = getDebugLevel("EXPAT_ENTITY_DEBUG", 0u); #endif - hash_secret_salt = 0; } -/* moves list of bindings to freeBindingList */ +/* moves list of bindings to m_freeBindingList */ static void FASTCALL -moveToFreeBindingList(XML_Parser parser, BINDING *bindings) -{ +moveToFreeBindingList(XML_Parser parser, BINDING *bindings) { while (bindings) { BINDING *b = bindings; bindings = bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; + b->nextTagBinding = parser->m_freeBindingList; + parser->m_freeBindingList = b; } } XML_Bool XMLCALL -XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) -{ +XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) { TAG *tStk; OPEN_INTERNAL_ENTITY *openEntityList; - if (parentParser) + + if (parser == NULL) return XML_FALSE; - /* move tagStack to freeTagList */ - tStk = tagStack; + + if (parser->m_parentParser) + return XML_FALSE; + /* move m_tagStack to m_freeTagList */ + tStk = parser->m_tagStack; while (tStk) { TAG *tag = tStk; tStk = tStk->parent; - tag->parent = freeTagList; + tag->parent = parser->m_freeTagList; moveToFreeBindingList(parser, tag->bindings); tag->bindings = NULL; - freeTagList = tag; + parser->m_freeTagList = tag; } - /* move openInternalEntities to freeInternalEntities */ - openEntityList = openInternalEntities; + /* move m_openInternalEntities to m_freeInternalEntities */ + openEntityList = parser->m_openInternalEntities; while (openEntityList) { OPEN_INTERNAL_ENTITY *openEntity = openEntityList; openEntityList = openEntity->next; - openEntity->next = freeInternalEntities; - freeInternalEntities = openEntity; + openEntity->next = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = openEntity; } - moveToFreeBindingList(parser, inheritedBindings); - FREE(unknownEncodingMem); - if (unknownEncodingRelease) - unknownEncodingRelease(unknownEncodingData); - poolClear(&tempPool); - poolClear(&temp2Pool); + moveToFreeBindingList(parser, parser->m_inheritedBindings); + FREE(parser, parser->m_unknownEncodingMem); + if (parser->m_unknownEncodingRelease) + parser->m_unknownEncodingRelease(parser->m_unknownEncodingData); + poolClear(&parser->m_tempPool); + poolClear(&parser->m_temp2Pool); + FREE(parser, (void *)parser->m_protocolEncodingName); + parser->m_protocolEncodingName = NULL; parserInit(parser, encodingName); - dtdReset(_dtd, &parser->m_mem); + dtdReset(parser->m_dtd, &parser->m_mem); return XML_TRUE; } enum XML_Status XMLCALL -XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) -{ +XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) { + if (parser == NULL) + return XML_STATUS_ERROR; /* Block after XML_Parse()/XML_ParseBuffer() has been called. XXX There's no way for the caller to determine which of the XXX possible error cases caused the XML_STATUS_ERROR return. */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) return XML_STATUS_ERROR; + + /* Get rid of any previous encoding name */ + FREE(parser, (void *)parser->m_protocolEncodingName); + if (encodingName == NULL) - protocolEncodingName = NULL; + /* No new encoding name */ + parser->m_protocolEncodingName = NULL; else { - protocolEncodingName = poolCopyString(&tempPool, encodingName); - if (!protocolEncodingName) + /* Copy the new encoding name into allocated memory */ + parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); + if (! parser->m_protocolEncodingName) return XML_STATUS_ERROR; } return XML_STATUS_OK; } XML_Parser XMLCALL -XML_ExternalEntityParserCreate(XML_Parser oldParser, - const XML_Char *context, - const XML_Char *encodingName) -{ +XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, + const XML_Char *encodingName) { XML_Parser parser = oldParser; DTD *newDtd = NULL; - DTD *oldDtd = _dtd; - XML_StartElementHandler oldStartElementHandler = startElementHandler; - XML_EndElementHandler oldEndElementHandler = endElementHandler; - XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler; - XML_ProcessingInstructionHandler oldProcessingInstructionHandler - = processingInstructionHandler; - XML_CommentHandler oldCommentHandler = commentHandler; - XML_StartCdataSectionHandler oldStartCdataSectionHandler - = startCdataSectionHandler; - XML_EndCdataSectionHandler oldEndCdataSectionHandler - = endCdataSectionHandler; - XML_DefaultHandler oldDefaultHandler = defaultHandler; - XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler - = unparsedEntityDeclHandler; - XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler; - XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler - = startNamespaceDeclHandler; - XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler - = endNamespaceDeclHandler; - XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler; - XML_ExternalEntityRefHandler oldExternalEntityRefHandler - = externalEntityRefHandler; - XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler; - XML_UnknownEncodingHandler oldUnknownEncodingHandler - = unknownEncodingHandler; - XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler; - XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler; - XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler; - XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler; - ELEMENT_TYPE * oldDeclElementType = declElementType; + DTD *oldDtd; + XML_StartElementHandler oldStartElementHandler; + XML_EndElementHandler oldEndElementHandler; + XML_CharacterDataHandler oldCharacterDataHandler; + XML_ProcessingInstructionHandler oldProcessingInstructionHandler; + XML_CommentHandler oldCommentHandler; + XML_StartCdataSectionHandler oldStartCdataSectionHandler; + XML_EndCdataSectionHandler oldEndCdataSectionHandler; + XML_DefaultHandler oldDefaultHandler; + XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler; + XML_NotationDeclHandler oldNotationDeclHandler; + XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler; + XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler; + XML_NotStandaloneHandler oldNotStandaloneHandler; + XML_ExternalEntityRefHandler oldExternalEntityRefHandler; + XML_SkippedEntityHandler oldSkippedEntityHandler; + XML_UnknownEncodingHandler oldUnknownEncodingHandler; + XML_ElementDeclHandler oldElementDeclHandler; + XML_AttlistDeclHandler oldAttlistDeclHandler; + XML_EntityDeclHandler oldEntityDeclHandler; + XML_XmlDeclHandler oldXmlDeclHandler; + ELEMENT_TYPE *oldDeclElementType; - void *oldUserData = userData; - void *oldHandlerArg = handlerArg; - XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities; - XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg; + void *oldUserData; + void *oldHandlerArg; + XML_Bool oldDefaultExpandInternalEntities; + XML_Parser oldExternalEntityRefHandlerArg; #ifdef XML_DTD - enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing; - int oldInEntityValue = prologState.inEntityValue; + enum XML_ParamEntityParsing oldParamEntityParsing; + int oldInEntityValue; #endif - XML_Bool oldns_triplets = ns_triplets; + XML_Bool oldns_triplets; /* Note that the new parser shares the same hash secret as the old parser, so that dtdCopy and copyEntityTable can lookup values from hash tables associated with either parser without us having to worry which hash secrets each table has. */ - unsigned long oldhash_secret_salt = hash_secret_salt; + unsigned long oldhash_secret_salt; + + /* Validate the oldParser parameter before we pull everything out of it */ + if (oldParser == NULL) + return NULL; + + /* Stash the original parser contents on the stack */ + oldDtd = parser->m_dtd; + oldStartElementHandler = parser->m_startElementHandler; + oldEndElementHandler = parser->m_endElementHandler; + oldCharacterDataHandler = parser->m_characterDataHandler; + oldProcessingInstructionHandler = parser->m_processingInstructionHandler; + oldCommentHandler = parser->m_commentHandler; + oldStartCdataSectionHandler = parser->m_startCdataSectionHandler; + oldEndCdataSectionHandler = parser->m_endCdataSectionHandler; + oldDefaultHandler = parser->m_defaultHandler; + oldUnparsedEntityDeclHandler = parser->m_unparsedEntityDeclHandler; + oldNotationDeclHandler = parser->m_notationDeclHandler; + oldStartNamespaceDeclHandler = parser->m_startNamespaceDeclHandler; + oldEndNamespaceDeclHandler = parser->m_endNamespaceDeclHandler; + oldNotStandaloneHandler = parser->m_notStandaloneHandler; + oldExternalEntityRefHandler = parser->m_externalEntityRefHandler; + oldSkippedEntityHandler = parser->m_skippedEntityHandler; + oldUnknownEncodingHandler = parser->m_unknownEncodingHandler; + oldElementDeclHandler = parser->m_elementDeclHandler; + oldAttlistDeclHandler = parser->m_attlistDeclHandler; + oldEntityDeclHandler = parser->m_entityDeclHandler; + oldXmlDeclHandler = parser->m_xmlDeclHandler; + oldDeclElementType = parser->m_declElementType; + + oldUserData = parser->m_userData; + oldHandlerArg = parser->m_handlerArg; + oldDefaultExpandInternalEntities = parser->m_defaultExpandInternalEntities; + oldExternalEntityRefHandlerArg = parser->m_externalEntityRefHandlerArg; +#ifdef XML_DTD + oldParamEntityParsing = parser->m_paramEntityParsing; + oldInEntityValue = parser->m_prologState.inEntityValue; +#endif + oldns_triplets = parser->m_ns_triplets; + /* Note that the new parser shares the same hash secret as the old + parser, so that dtdCopy and copyEntityTable can lookup values + from hash tables associated with either parser without us having + to worry which hash secrets each table has. + */ + oldhash_secret_salt = parser->m_hash_secret_salt; #ifdef XML_DTD - if (!context) + if (! context) newDtd = oldDtd; #endif /* XML_DTD */ @@ -1066,445 +1349,457 @@ XML_ExternalEntityParserCreate(XML_Parser oldParser, here. This makes this function more painful to follow than it would be otherwise. */ - if (ns) { - XML_Char tmp[2]; - *tmp = namespaceSeparator; + if (parser->m_ns) { + XML_Char tmp[2] = {parser->m_namespaceSeparator, 0}; parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); - } - else { + } else { parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); } - if (!parser) + if (! parser) return NULL; - startElementHandler = oldStartElementHandler; - endElementHandler = oldEndElementHandler; - characterDataHandler = oldCharacterDataHandler; - processingInstructionHandler = oldProcessingInstructionHandler; - commentHandler = oldCommentHandler; - startCdataSectionHandler = oldStartCdataSectionHandler; - endCdataSectionHandler = oldEndCdataSectionHandler; - defaultHandler = oldDefaultHandler; - unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; - notationDeclHandler = oldNotationDeclHandler; - startNamespaceDeclHandler = oldStartNamespaceDeclHandler; - endNamespaceDeclHandler = oldEndNamespaceDeclHandler; - notStandaloneHandler = oldNotStandaloneHandler; - externalEntityRefHandler = oldExternalEntityRefHandler; - skippedEntityHandler = oldSkippedEntityHandler; - unknownEncodingHandler = oldUnknownEncodingHandler; - elementDeclHandler = oldElementDeclHandler; - attlistDeclHandler = oldAttlistDeclHandler; - entityDeclHandler = oldEntityDeclHandler; - xmlDeclHandler = oldXmlDeclHandler; - declElementType = oldDeclElementType; - userData = oldUserData; + parser->m_startElementHandler = oldStartElementHandler; + parser->m_endElementHandler = oldEndElementHandler; + parser->m_characterDataHandler = oldCharacterDataHandler; + parser->m_processingInstructionHandler = oldProcessingInstructionHandler; + parser->m_commentHandler = oldCommentHandler; + parser->m_startCdataSectionHandler = oldStartCdataSectionHandler; + parser->m_endCdataSectionHandler = oldEndCdataSectionHandler; + parser->m_defaultHandler = oldDefaultHandler; + parser->m_unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; + parser->m_notationDeclHandler = oldNotationDeclHandler; + parser->m_startNamespaceDeclHandler = oldStartNamespaceDeclHandler; + parser->m_endNamespaceDeclHandler = oldEndNamespaceDeclHandler; + parser->m_notStandaloneHandler = oldNotStandaloneHandler; + parser->m_externalEntityRefHandler = oldExternalEntityRefHandler; + parser->m_skippedEntityHandler = oldSkippedEntityHandler; + parser->m_unknownEncodingHandler = oldUnknownEncodingHandler; + parser->m_elementDeclHandler = oldElementDeclHandler; + parser->m_attlistDeclHandler = oldAttlistDeclHandler; + parser->m_entityDeclHandler = oldEntityDeclHandler; + parser->m_xmlDeclHandler = oldXmlDeclHandler; + parser->m_declElementType = oldDeclElementType; + parser->m_userData = oldUserData; if (oldUserData == oldHandlerArg) - handlerArg = userData; + parser->m_handlerArg = parser->m_userData; else - handlerArg = parser; + parser->m_handlerArg = parser; if (oldExternalEntityRefHandlerArg != oldParser) - externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; - defaultExpandInternalEntities = oldDefaultExpandInternalEntities; - ns_triplets = oldns_triplets; - hash_secret_salt = oldhash_secret_salt; - parentParser = oldParser; + parser->m_externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; + parser->m_defaultExpandInternalEntities = oldDefaultExpandInternalEntities; + parser->m_ns_triplets = oldns_triplets; + parser->m_hash_secret_salt = oldhash_secret_salt; + parser->m_parentParser = oldParser; #ifdef XML_DTD - paramEntityParsing = oldParamEntityParsing; - prologState.inEntityValue = oldInEntityValue; + parser->m_paramEntityParsing = oldParamEntityParsing; + parser->m_prologState.inEntityValue = oldInEntityValue; if (context) { #endif /* XML_DTD */ - if (!dtdCopy(oldParser, _dtd, oldDtd, &parser->m_mem) - || !setContext(parser, context)) { + if (! dtdCopy(oldParser, parser->m_dtd, oldDtd, &parser->m_mem) + || ! setContext(parser, context)) { XML_ParserFree(parser); return NULL; } - processor = externalEntityInitProcessor; + parser->m_processor = externalEntityInitProcessor; #ifdef XML_DTD - } - else { - /* The DTD instance referenced by _dtd is shared between the document's - root parser and external PE parsers, therefore one does not need to - call setContext. In addition, one also *must* not call setContext, - because this would overwrite existing prefix->binding pointers in - _dtd with ones that get destroyed with the external PE parser. - This would leave those prefixes with dangling pointers. + } else { + /* The DTD instance referenced by parser->m_dtd is shared between the + document's root parser and external PE parsers, therefore one does not + need to call setContext. In addition, one also *must* not call + setContext, because this would overwrite existing prefix->binding + pointers in parser->m_dtd with ones that get destroyed with the external + PE parser. This would leave those prefixes with dangling pointers. */ - isParamEntity = XML_TRUE; - XmlPrologStateInitExternalEntity(&prologState); - processor = externalParEntInitProcessor; + parser->m_isParamEntity = XML_TRUE; + XmlPrologStateInitExternalEntity(&parser->m_prologState); + parser->m_processor = externalParEntInitProcessor; } #endif /* XML_DTD */ return parser; } static void FASTCALL -destroyBindings(BINDING *bindings, XML_Parser parser) -{ +destroyBindings(BINDING *bindings, XML_Parser parser) { for (;;) { BINDING *b = bindings; - if (!b) + if (! b) break; bindings = b->nextTagBinding; - FREE(b->uri); - FREE(b); + FREE(parser, b->uri); + FREE(parser, b); } } void XMLCALL -XML_ParserFree(XML_Parser parser) -{ +XML_ParserFree(XML_Parser parser) { TAG *tagList; OPEN_INTERNAL_ENTITY *entityList; if (parser == NULL) return; - /* free tagStack and freeTagList */ - tagList = tagStack; + /* free m_tagStack and m_freeTagList */ + tagList = parser->m_tagStack; for (;;) { TAG *p; if (tagList == NULL) { - if (freeTagList == NULL) + if (parser->m_freeTagList == NULL) break; - tagList = freeTagList; - freeTagList = NULL; + tagList = parser->m_freeTagList; + parser->m_freeTagList = NULL; } p = tagList; tagList = tagList->parent; - FREE(p->buf); + FREE(parser, p->buf); destroyBindings(p->bindings, parser); - FREE(p); + FREE(parser, p); } - /* free openInternalEntities and freeInternalEntities */ - entityList = openInternalEntities; + /* free m_openInternalEntities and m_freeInternalEntities */ + entityList = parser->m_openInternalEntities; for (;;) { OPEN_INTERNAL_ENTITY *openEntity; if (entityList == NULL) { - if (freeInternalEntities == NULL) + if (parser->m_freeInternalEntities == NULL) break; - entityList = freeInternalEntities; - freeInternalEntities = NULL; + entityList = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = NULL; } openEntity = entityList; entityList = entityList->next; - FREE(openEntity); + FREE(parser, openEntity); } - destroyBindings(freeBindingList, parser); - destroyBindings(inheritedBindings, parser); - poolDestroy(&tempPool); - poolDestroy(&temp2Pool); + destroyBindings(parser->m_freeBindingList, parser); + destroyBindings(parser->m_inheritedBindings, parser); + poolDestroy(&parser->m_tempPool); + poolDestroy(&parser->m_temp2Pool); + FREE(parser, (void *)parser->m_protocolEncodingName); #ifdef XML_DTD /* external parameter entity parsers share the DTD structure parser->m_dtd with the root parser, so we must not destroy it */ - if (!isParamEntity && _dtd) + if (! parser->m_isParamEntity && parser->m_dtd) #else - if (_dtd) + if (parser->m_dtd) #endif /* XML_DTD */ - dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem); - FREE((void *)atts); + dtdDestroy(parser->m_dtd, (XML_Bool)! parser->m_parentParser, + &parser->m_mem); + FREE(parser, (void *)parser->m_atts); #ifdef XML_ATTR_INFO - FREE((void *)attInfo); + FREE(parser, (void *)parser->m_attInfo); #endif - FREE(groupConnector); - FREE(buffer); - FREE(dataBuf); - FREE(nsAtts); - FREE(unknownEncodingMem); - if (unknownEncodingRelease) - unknownEncodingRelease(unknownEncodingData); - FREE(parser); + FREE(parser, parser->m_groupConnector); + FREE(parser, parser->m_buffer); + FREE(parser, parser->m_dataBuf); + FREE(parser, parser->m_nsAtts); + FREE(parser, parser->m_unknownEncodingMem); + if (parser->m_unknownEncodingRelease) + parser->m_unknownEncodingRelease(parser->m_unknownEncodingData); + FREE(parser, parser); } void XMLCALL -XML_UseParserAsHandlerArg(XML_Parser parser) -{ - handlerArg = parser; +XML_UseParserAsHandlerArg(XML_Parser parser) { + if (parser != NULL) + parser->m_handlerArg = parser; } enum XML_Error XMLCALL -XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) -{ +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) { + if (parser == NULL) + return XML_ERROR_INVALID_ARGUMENT; #ifdef XML_DTD /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING; - useForeignDTD = useDTD; + parser->m_useForeignDTD = useDTD; return XML_ERROR_NONE; #else + UNUSED_P(useDTD); return XML_ERROR_FEATURE_REQUIRES_XML_DTD; #endif } void XMLCALL -XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) -{ - /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { + if (parser == NULL) return; - ns_triplets = do_nst ? XML_TRUE : XML_FALSE; + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) + return; + parser->m_ns_triplets = do_nst ? XML_TRUE : XML_FALSE; } void XMLCALL -XML_SetUserData(XML_Parser parser, void *p) -{ - if (handlerArg == userData) - handlerArg = userData = p; +XML_SetUserData(XML_Parser parser, void *p) { + if (parser == NULL) + return; + if (parser->m_handlerArg == parser->m_userData) + parser->m_handlerArg = parser->m_userData = p; else - userData = p; + parser->m_userData = p; } enum XML_Status XMLCALL -XML_SetBase(XML_Parser parser, const XML_Char *p) -{ +XML_SetBase(XML_Parser parser, const XML_Char *p) { + if (parser == NULL) + return XML_STATUS_ERROR; if (p) { - p = poolCopyString(&_dtd->pool, p); - if (!p) + p = poolCopyString(&parser->m_dtd->pool, p); + if (! p) return XML_STATUS_ERROR; - curBase = p; - } - else - curBase = NULL; + parser->m_curBase = p; + } else + parser->m_curBase = NULL; return XML_STATUS_OK; } -const XML_Char * XMLCALL -XML_GetBase(XML_Parser parser) -{ - return curBase; +const XML_Char *XMLCALL +XML_GetBase(XML_Parser parser) { + if (parser == NULL) + return NULL; + return parser->m_curBase; } int XMLCALL -XML_GetSpecifiedAttributeCount(XML_Parser parser) -{ - return nSpecifiedAtts; +XML_GetSpecifiedAttributeCount(XML_Parser parser) { + if (parser == NULL) + return -1; + return parser->m_nSpecifiedAtts; } int XMLCALL -XML_GetIdAttributeIndex(XML_Parser parser) -{ - return idAttIndex; +XML_GetIdAttributeIndex(XML_Parser parser) { + if (parser == NULL) + return -1; + return parser->m_idAttIndex; } #ifdef XML_ATTR_INFO -const XML_AttrInfo * XMLCALL -XML_GetAttributeInfo(XML_Parser parser) -{ - return attInfo; +const XML_AttrInfo *XMLCALL +XML_GetAttributeInfo(XML_Parser parser) { + if (parser == NULL) + return NULL; + return parser->m_attInfo; } #endif void XMLCALL -XML_SetElementHandler(XML_Parser parser, - XML_StartElementHandler start, - XML_EndElementHandler end) -{ - startElementHandler = start; - endElementHandler = end; +XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, + XML_EndElementHandler end) { + if (parser == NULL) + return; + parser->m_startElementHandler = start; + parser->m_endElementHandler = end; } void XMLCALL -XML_SetStartElementHandler(XML_Parser parser, - XML_StartElementHandler start) { - startElementHandler = start; +XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler start) { + if (parser != NULL) + parser->m_startElementHandler = start; } void XMLCALL -XML_SetEndElementHandler(XML_Parser parser, - XML_EndElementHandler end) { - endElementHandler = end; +XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler end) { + if (parser != NULL) + parser->m_endElementHandler = end; } void XMLCALL XML_SetCharacterDataHandler(XML_Parser parser, - XML_CharacterDataHandler handler) -{ - characterDataHandler = handler; + XML_CharacterDataHandler handler) { + if (parser != NULL) + parser->m_characterDataHandler = handler; } void XMLCALL XML_SetProcessingInstructionHandler(XML_Parser parser, - XML_ProcessingInstructionHandler handler) -{ - processingInstructionHandler = handler; + XML_ProcessingInstructionHandler handler) { + if (parser != NULL) + parser->m_processingInstructionHandler = handler; } void XMLCALL -XML_SetCommentHandler(XML_Parser parser, - XML_CommentHandler handler) -{ - commentHandler = handler; +XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler) { + if (parser != NULL) + parser->m_commentHandler = handler; } void XMLCALL XML_SetCdataSectionHandler(XML_Parser parser, XML_StartCdataSectionHandler start, - XML_EndCdataSectionHandler end) -{ - startCdataSectionHandler = start; - endCdataSectionHandler = end; + XML_EndCdataSectionHandler end) { + if (parser == NULL) + return; + parser->m_startCdataSectionHandler = start; + parser->m_endCdataSectionHandler = end; } void XMLCALL XML_SetStartCdataSectionHandler(XML_Parser parser, XML_StartCdataSectionHandler start) { - startCdataSectionHandler = start; + if (parser != NULL) + parser->m_startCdataSectionHandler = start; } void XMLCALL XML_SetEndCdataSectionHandler(XML_Parser parser, XML_EndCdataSectionHandler end) { - endCdataSectionHandler = end; + if (parser != NULL) + parser->m_endCdataSectionHandler = end; } void XMLCALL -XML_SetDefaultHandler(XML_Parser parser, - XML_DefaultHandler handler) -{ - defaultHandler = handler; - defaultExpandInternalEntities = XML_FALSE; +XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler) { + if (parser == NULL) + return; + parser->m_defaultHandler = handler; + parser->m_defaultExpandInternalEntities = XML_FALSE; } void XMLCALL -XML_SetDefaultHandlerExpand(XML_Parser parser, - XML_DefaultHandler handler) -{ - defaultHandler = handler; - defaultExpandInternalEntities = XML_TRUE; +XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler) { + if (parser == NULL) + return; + parser->m_defaultHandler = handler; + parser->m_defaultExpandInternalEntities = XML_TRUE; } void XMLCALL -XML_SetDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start, - XML_EndDoctypeDeclHandler end) -{ - startDoctypeDeclHandler = start; - endDoctypeDeclHandler = end; +XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end) { + if (parser == NULL) + return; + parser->m_startDoctypeDeclHandler = start; + parser->m_endDoctypeDeclHandler = end; } void XMLCALL XML_SetStartDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start) { - startDoctypeDeclHandler = start; + if (parser != NULL) + parser->m_startDoctypeDeclHandler = start; } void XMLCALL -XML_SetEndDoctypeDeclHandler(XML_Parser parser, - XML_EndDoctypeDeclHandler end) { - endDoctypeDeclHandler = end; +XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end) { + if (parser != NULL) + parser->m_endDoctypeDeclHandler = end; } void XMLCALL XML_SetUnparsedEntityDeclHandler(XML_Parser parser, - XML_UnparsedEntityDeclHandler handler) -{ - unparsedEntityDeclHandler = handler; + XML_UnparsedEntityDeclHandler handler) { + if (parser != NULL) + parser->m_unparsedEntityDeclHandler = handler; } void XMLCALL -XML_SetNotationDeclHandler(XML_Parser parser, - XML_NotationDeclHandler handler) -{ - notationDeclHandler = handler; +XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler) { + if (parser != NULL) + parser->m_notationDeclHandler = handler; } void XMLCALL XML_SetNamespaceDeclHandler(XML_Parser parser, XML_StartNamespaceDeclHandler start, - XML_EndNamespaceDeclHandler end) -{ - startNamespaceDeclHandler = start; - endNamespaceDeclHandler = end; + XML_EndNamespaceDeclHandler end) { + if (parser == NULL) + return; + parser->m_startNamespaceDeclHandler = start; + parser->m_endNamespaceDeclHandler = end; } void XMLCALL XML_SetStartNamespaceDeclHandler(XML_Parser parser, XML_StartNamespaceDeclHandler start) { - startNamespaceDeclHandler = start; + if (parser != NULL) + parser->m_startNamespaceDeclHandler = start; } void XMLCALL XML_SetEndNamespaceDeclHandler(XML_Parser parser, XML_EndNamespaceDeclHandler end) { - endNamespaceDeclHandler = end; + if (parser != NULL) + parser->m_endNamespaceDeclHandler = end; } void XMLCALL XML_SetNotStandaloneHandler(XML_Parser parser, - XML_NotStandaloneHandler handler) -{ - notStandaloneHandler = handler; + XML_NotStandaloneHandler handler) { + if (parser != NULL) + parser->m_notStandaloneHandler = handler; } void XMLCALL XML_SetExternalEntityRefHandler(XML_Parser parser, - XML_ExternalEntityRefHandler handler) -{ - externalEntityRefHandler = handler; + XML_ExternalEntityRefHandler handler) { + if (parser != NULL) + parser->m_externalEntityRefHandler = handler; } void XMLCALL -XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) -{ +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) { + if (parser == NULL) + return; if (arg) - externalEntityRefHandlerArg = (XML_Parser)arg; + parser->m_externalEntityRefHandlerArg = (XML_Parser)arg; else - externalEntityRefHandlerArg = parser; + parser->m_externalEntityRefHandlerArg = parser; } void XMLCALL XML_SetSkippedEntityHandler(XML_Parser parser, - XML_SkippedEntityHandler handler) -{ - skippedEntityHandler = handler; + XML_SkippedEntityHandler handler) { + if (parser != NULL) + parser->m_skippedEntityHandler = handler; } void XMLCALL XML_SetUnknownEncodingHandler(XML_Parser parser, - XML_UnknownEncodingHandler handler, - void *data) -{ - unknownEncodingHandler = handler; - unknownEncodingHandlerData = data; + XML_UnknownEncodingHandler handler, void *data) { + if (parser == NULL) + return; + parser->m_unknownEncodingHandler = handler; + parser->m_unknownEncodingHandlerData = data; } void XMLCALL -XML_SetElementDeclHandler(XML_Parser parser, - XML_ElementDeclHandler eldecl) -{ - elementDeclHandler = eldecl; +XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl) { + if (parser != NULL) + parser->m_elementDeclHandler = eldecl; } void XMLCALL -XML_SetAttlistDeclHandler(XML_Parser parser, - XML_AttlistDeclHandler attdecl) -{ - attlistDeclHandler = attdecl; +XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl) { + if (parser != NULL) + parser->m_attlistDeclHandler = attdecl; } void XMLCALL -XML_SetEntityDeclHandler(XML_Parser parser, - XML_EntityDeclHandler handler) -{ - entityDeclHandler = handler; +XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler) { + if (parser != NULL) + parser->m_entityDeclHandler = handler; } void XMLCALL -XML_SetXmlDeclHandler(XML_Parser parser, - XML_XmlDeclHandler handler) { - xmlDeclHandler = handler; +XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler handler) { + if (parser != NULL) + parser->m_xmlDeclHandler = handler; } int XMLCALL XML_SetParamEntityParsing(XML_Parser parser, - enum XML_ParamEntityParsing peParsing) -{ + enum XML_ParamEntityParsing peParsing) { + if (parser == NULL) + return 0; /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) return 0; #ifdef XML_DTD - paramEntityParsing = peParsing; + parser->m_paramEntityParsing = peParsing; return 1; #else return peParsing == XML_PARAM_ENTITY_PARSING_NEVER; @@ -1512,91 +1807,122 @@ XML_SetParamEntityParsing(XML_Parser parser, } int XMLCALL -XML_SetHashSalt(XML_Parser parser, - unsigned long hash_salt) -{ - /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) +XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt) { + if (parser == NULL) return 0; - hash_secret_salt = hash_salt; + if (parser->m_parentParser) + return XML_SetHashSalt(parser->m_parentParser, hash_salt); + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) + return 0; + parser->m_hash_secret_salt = hash_salt; return 1; } enum XML_Status XMLCALL -XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) -{ - switch (ps_parsing) { +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) { + if ((parser == NULL) || (len < 0) || ((s == NULL) && (len != 0))) { + if (parser != NULL) + parser->m_errorCode = XML_ERROR_INVALID_ARGUMENT; + return XML_STATUS_ERROR; + } + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: - errorCode = XML_ERROR_SUSPENDED; + parser->m_errorCode = XML_ERROR_SUSPENDED; return XML_STATUS_ERROR; case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; + parser->m_errorCode = XML_ERROR_FINISHED; return XML_STATUS_ERROR; case XML_INITIALIZED: - if (parentParser == NULL && !startParsing(parser)) { - errorCode = XML_ERROR_NO_MEMORY; + if (parser->m_parentParser == NULL && ! startParsing(parser)) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; return XML_STATUS_ERROR; } + /* fall through */ default: - ps_parsing = XML_PARSING; + parser->m_parsingStatus.parsing = XML_PARSING; } if (len == 0) { - ps_finalBuffer = (XML_Bool)isFinal; - if (!isFinal) + parser->m_parsingStatus.finalBuffer = (XML_Bool)isFinal; + if (! isFinal) return XML_STATUS_OK; - positionPtr = bufferPtr; - parseEndPtr = bufferEnd; + parser->m_positionPtr = parser->m_bufferPtr; + parser->m_parseEndPtr = parser->m_bufferEnd; /* If data are left over from last buffer, and we now know that these data are the final chunk of input, then we have to check them again to detect errors based on that fact. */ - errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); + parser->m_errorCode + = parser->m_processor(parser, parser->m_bufferPtr, + parser->m_parseEndPtr, &parser->m_bufferPtr); - if (errorCode == XML_ERROR_NONE) { - switch (ps_parsing) { + if (parser->m_errorCode == XML_ERROR_NONE) { + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: - XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); - positionPtr = bufferPtr; + /* It is hard to be certain, but it seems that this case + * cannot occur. This code is cleaning up a previous parse + * with no new data (since len == 0). Changing the parsing + * state requires getting to execute a handler function, and + * there doesn't seem to be an opportunity for that while in + * this circumstance. + * + * Given the uncertainty, we retain the code but exclude it + * from coverage tests. + * + * LCOV_EXCL_START + */ + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, + parser->m_bufferPtr, &parser->m_position); + parser->m_positionPtr = parser->m_bufferPtr; return XML_STATUS_SUSPENDED; + /* LCOV_EXCL_STOP */ case XML_INITIALIZED: case XML_PARSING: - ps_parsing = XML_FINISHED; + parser->m_parsingStatus.parsing = XML_FINISHED; /* fall through */ default: return XML_STATUS_OK; } } - eventEndPtr = eventPtr; - processor = errorProcessor; + parser->m_eventEndPtr = parser->m_eventPtr; + parser->m_processor = errorProcessor; return XML_STATUS_ERROR; } #ifndef XML_CONTEXT_BYTES - else if (bufferPtr == bufferEnd) { + else if (parser->m_bufferPtr == parser->m_bufferEnd) { const char *end; int nLeftOver; enum XML_Status result; - parseEndByteIndex += len; - positionPtr = s; - ps_finalBuffer = (XML_Bool)isFinal; - - errorCode = processor(parser, s, parseEndPtr = s + len, &end); - - if (errorCode != XML_ERROR_NONE) { - eventEndPtr = eventPtr; - processor = errorProcessor; + /* Detect overflow (a+b > MAX <==> b > MAX-a) */ + if ((XML_Size)len > ((XML_Size)-1) / 2 - parser->m_parseEndByteIndex) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; + parser->m_eventPtr = parser->m_eventEndPtr = NULL; + parser->m_processor = errorProcessor; return XML_STATUS_ERROR; } - else { - switch (ps_parsing) { + parser->m_parseEndByteIndex += len; + parser->m_positionPtr = s; + parser->m_parsingStatus.finalBuffer = (XML_Bool)isFinal; + + parser->m_errorCode + = parser->m_processor(parser, s, parser->m_parseEndPtr = s + len, &end); + + if (parser->m_errorCode != XML_ERROR_NONE) { + parser->m_eventEndPtr = parser->m_eventPtr; + parser->m_processor = errorProcessor; + return XML_STATUS_ERROR; + } else { + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: result = XML_STATUS_SUSPENDED; break; case XML_INITIALIZED: case XML_PARSING: if (isFinal) { - ps_parsing = XML_FINISHED; + parser->m_parsingStatus.parsing = XML_FINISHED; return XML_STATUS_OK; } /* fall through */ @@ -1605,35 +1931,38 @@ XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) } } - XmlUpdatePosition(encoding, positionPtr, end, &position); + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, end, + &parser->m_position); nLeftOver = s + len - end; if (nLeftOver) { - if (buffer == NULL || nLeftOver > bufferLim - buffer) { - /* FIXME avoid integer overflow */ - char *temp; - temp = (buffer == NULL - ? (char *)MALLOC(len * 2) - : (char *)REALLOC(buffer, len * 2)); + if (parser->m_buffer == NULL + || nLeftOver > parser->m_bufferLim - parser->m_buffer) { + /* avoid _signed_ integer overflow */ + char *temp = NULL; + const int bytesToAllocate = (int)((unsigned)len * 2U); + if (bytesToAllocate > 0) { + temp = (char *)REALLOC(parser, parser->m_buffer, bytesToAllocate); + } if (temp == NULL) { - errorCode = XML_ERROR_NO_MEMORY; - eventPtr = eventEndPtr = NULL; - processor = errorProcessor; + parser->m_errorCode = XML_ERROR_NO_MEMORY; + parser->m_eventPtr = parser->m_eventEndPtr = NULL; + parser->m_processor = errorProcessor; return XML_STATUS_ERROR; } - buffer = temp; - bufferLim = buffer + len * 2; + parser->m_buffer = temp; + parser->m_bufferLim = parser->m_buffer + bytesToAllocate; } - memcpy(buffer, end, nLeftOver); + memcpy(parser->m_buffer, end, nLeftOver); } - bufferPtr = buffer; - bufferEnd = buffer + nLeftOver; - positionPtr = bufferPtr; - parseEndPtr = bufferEnd; - eventPtr = bufferPtr; - eventEndPtr = bufferPtr; + parser->m_bufferPtr = parser->m_buffer; + parser->m_bufferEnd = parser->m_buffer + nLeftOver; + parser->m_positionPtr = parser->m_bufferPtr; + parser->m_parseEndPtr = parser->m_bufferEnd; + parser->m_eventPtr = parser->m_bufferPtr; + parser->m_eventEndPtr = parser->m_bufferPtr; return result; } -#endif /* not defined XML_CONTEXT_BYTES */ +#endif /* not defined XML_CONTEXT_BYTES */ else { void *buff = XML_GetBuffer(parser, len); if (buff == NULL) @@ -1646,379 +1975,489 @@ XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) } enum XML_Status XMLCALL -XML_ParseBuffer(XML_Parser parser, int len, int isFinal) -{ +XML_ParseBuffer(XML_Parser parser, int len, int isFinal) { const char *start; enum XML_Status result = XML_STATUS_OK; - switch (ps_parsing) { + if (parser == NULL) + return XML_STATUS_ERROR; + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: - errorCode = XML_ERROR_SUSPENDED; + parser->m_errorCode = XML_ERROR_SUSPENDED; return XML_STATUS_ERROR; case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; + parser->m_errorCode = XML_ERROR_FINISHED; return XML_STATUS_ERROR; case XML_INITIALIZED: - if (parentParser == NULL && !startParsing(parser)) { - errorCode = XML_ERROR_NO_MEMORY; + /* Has someone called XML_GetBuffer successfully before? */ + if (! parser->m_bufferPtr) { + parser->m_errorCode = XML_ERROR_NO_BUFFER; return XML_STATUS_ERROR; } + + if (parser->m_parentParser == NULL && ! startParsing(parser)) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; + return XML_STATUS_ERROR; + } + /* fall through */ default: - ps_parsing = XML_PARSING; + parser->m_parsingStatus.parsing = XML_PARSING; } - start = bufferPtr; - positionPtr = start; - bufferEnd += len; - parseEndPtr = bufferEnd; - parseEndByteIndex += len; - ps_finalBuffer = (XML_Bool)isFinal; + start = parser->m_bufferPtr; + parser->m_positionPtr = start; + parser->m_bufferEnd += len; + parser->m_parseEndPtr = parser->m_bufferEnd; + parser->m_parseEndByteIndex += len; + parser->m_parsingStatus.finalBuffer = (XML_Bool)isFinal; - errorCode = processor(parser, start, parseEndPtr, &bufferPtr); + parser->m_errorCode = parser->m_processor( + parser, start, parser->m_parseEndPtr, &parser->m_bufferPtr); - if (errorCode != XML_ERROR_NONE) { - eventEndPtr = eventPtr; - processor = errorProcessor; + if (parser->m_errorCode != XML_ERROR_NONE) { + parser->m_eventEndPtr = parser->m_eventPtr; + parser->m_processor = errorProcessor; return XML_STATUS_ERROR; - } - else { - switch (ps_parsing) { + } else { + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: result = XML_STATUS_SUSPENDED; break; case XML_INITIALIZED: case XML_PARSING: if (isFinal) { - ps_parsing = XML_FINISHED; + parser->m_parsingStatus.parsing = XML_FINISHED; return result; } - default: ; /* should not happen */ + default:; /* should not happen */ } } - XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); - positionPtr = bufferPtr; + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, + parser->m_bufferPtr, &parser->m_position); + parser->m_positionPtr = parser->m_bufferPtr; return result; } -void * XMLCALL -XML_GetBuffer(XML_Parser parser, int len) -{ +void *XMLCALL +XML_GetBuffer(XML_Parser parser, int len) { + if (parser == NULL) + return NULL; if (len < 0) { - errorCode = XML_ERROR_NO_MEMORY; + parser->m_errorCode = XML_ERROR_NO_MEMORY; return NULL; } - switch (ps_parsing) { + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: - errorCode = XML_ERROR_SUSPENDED; + parser->m_errorCode = XML_ERROR_SUSPENDED; return NULL; case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; + parser->m_errorCode = XML_ERROR_FINISHED; return NULL; - default: ; + default:; } - if (len > bufferLim - bufferEnd) { + if (len > EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_bufferEnd)) { #ifdef XML_CONTEXT_BYTES int keep; -#endif /* defined XML_CONTEXT_BYTES */ +#endif /* defined XML_CONTEXT_BYTES */ /* Do not invoke signed arithmetic overflow: */ - int neededSize = (int) ((unsigned)len + (unsigned)(bufferEnd - bufferPtr)); + int neededSize = (int)((unsigned)len + + (unsigned)EXPAT_SAFE_PTR_DIFF( + parser->m_bufferEnd, parser->m_bufferPtr)); if (neededSize < 0) { - errorCode = XML_ERROR_NO_MEMORY; + parser->m_errorCode = XML_ERROR_NO_MEMORY; return NULL; } #ifdef XML_CONTEXT_BYTES - keep = (int)(bufferPtr - buffer); + keep = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer); if (keep > XML_CONTEXT_BYTES) keep = XML_CONTEXT_BYTES; + /* Detect and prevent integer overflow */ + if (keep > INT_MAX - neededSize) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } neededSize += keep; -#endif /* defined XML_CONTEXT_BYTES */ - if (neededSize <= bufferLim - buffer) { +#endif /* defined XML_CONTEXT_BYTES */ + if (neededSize + <= EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_buffer)) { #ifdef XML_CONTEXT_BYTES - if (keep < bufferPtr - buffer) { - int offset = (int)(bufferPtr - buffer) - keep; - memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep); - bufferEnd -= offset; - bufferPtr -= offset; + if (keep < EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer)) { + int offset + = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer) + - keep; + /* The buffer pointers cannot be NULL here; we have at least some bytes + * in the buffer */ + memmove(parser->m_buffer, &parser->m_buffer[offset], + parser->m_bufferEnd - parser->m_bufferPtr + keep); + parser->m_bufferEnd -= offset; + parser->m_bufferPtr -= offset; } #else - memmove(buffer, bufferPtr, bufferEnd - bufferPtr); - bufferEnd = buffer + (bufferEnd - bufferPtr); - bufferPtr = buffer; -#endif /* not defined XML_CONTEXT_BYTES */ - } - else { + if (parser->m_buffer && parser->m_bufferPtr) { + memmove(parser->m_buffer, parser->m_bufferPtr, + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr)); + parser->m_bufferEnd + = parser->m_buffer + + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr); + parser->m_bufferPtr = parser->m_buffer; + } +#endif /* not defined XML_CONTEXT_BYTES */ + } else { char *newBuf; - int bufferSize = (int)(bufferLim - bufferPtr); + int bufferSize + = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_bufferPtr); if (bufferSize == 0) bufferSize = INIT_BUFFER_SIZE; do { /* Do not invoke signed arithmetic overflow: */ - bufferSize = (int) (2U * (unsigned) bufferSize); + bufferSize = (int)(2U * (unsigned)bufferSize); } while (bufferSize < neededSize && bufferSize > 0); if (bufferSize <= 0) { - errorCode = XML_ERROR_NO_MEMORY; + parser->m_errorCode = XML_ERROR_NO_MEMORY; return NULL; } - newBuf = (char *)MALLOC(bufferSize); + newBuf = (char *)MALLOC(parser, bufferSize); if (newBuf == 0) { - errorCode = XML_ERROR_NO_MEMORY; + parser->m_errorCode = XML_ERROR_NO_MEMORY; return NULL; } - bufferLim = newBuf + bufferSize; + parser->m_bufferLim = newBuf + bufferSize; #ifdef XML_CONTEXT_BYTES - if (bufferPtr) { - int keep = (int)(bufferPtr - buffer); - if (keep > XML_CONTEXT_BYTES) - keep = XML_CONTEXT_BYTES; - memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep); - FREE(buffer); - buffer = newBuf; - bufferEnd = buffer + (bufferEnd - bufferPtr) + keep; - bufferPtr = buffer + keep; - } - else { - bufferEnd = newBuf + (bufferEnd - bufferPtr); - bufferPtr = buffer = newBuf; + if (parser->m_bufferPtr) { + memcpy(newBuf, &parser->m_bufferPtr[-keep], + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr) + + keep); + FREE(parser, parser->m_buffer); + parser->m_buffer = newBuf; + parser->m_bufferEnd + = parser->m_buffer + + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr) + + keep; + parser->m_bufferPtr = parser->m_buffer + keep; + } else { + /* This must be a brand new buffer with no data in it yet */ + parser->m_bufferEnd = newBuf; + parser->m_bufferPtr = parser->m_buffer = newBuf; } #else - if (bufferPtr) { - memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr); - FREE(buffer); + if (parser->m_bufferPtr) { + memcpy(newBuf, parser->m_bufferPtr, + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr)); + FREE(parser, parser->m_buffer); + parser->m_bufferEnd + = newBuf + + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr); + } else { + /* This must be a brand new buffer with no data in it yet */ + parser->m_bufferEnd = newBuf; } - bufferEnd = newBuf + (bufferEnd - bufferPtr); - bufferPtr = buffer = newBuf; -#endif /* not defined XML_CONTEXT_BYTES */ + parser->m_bufferPtr = parser->m_buffer = newBuf; +#endif /* not defined XML_CONTEXT_BYTES */ } - eventPtr = eventEndPtr = NULL; - positionPtr = NULL; + parser->m_eventPtr = parser->m_eventEndPtr = NULL; + parser->m_positionPtr = NULL; } - return bufferEnd; + return parser->m_bufferEnd; } enum XML_Status XMLCALL -XML_StopParser(XML_Parser parser, XML_Bool resumable) -{ - switch (ps_parsing) { +XML_StopParser(XML_Parser parser, XML_Bool resumable) { + if (parser == NULL) + return XML_STATUS_ERROR; + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: if (resumable) { - errorCode = XML_ERROR_SUSPENDED; + parser->m_errorCode = XML_ERROR_SUSPENDED; return XML_STATUS_ERROR; } - ps_parsing = XML_FINISHED; + parser->m_parsingStatus.parsing = XML_FINISHED; break; case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; + parser->m_errorCode = XML_ERROR_FINISHED; return XML_STATUS_ERROR; default: if (resumable) { #ifdef XML_DTD - if (isParamEntity) { - errorCode = XML_ERROR_SUSPEND_PE; + if (parser->m_isParamEntity) { + parser->m_errorCode = XML_ERROR_SUSPEND_PE; return XML_STATUS_ERROR; } #endif - ps_parsing = XML_SUSPENDED; - } - else - ps_parsing = XML_FINISHED; + parser->m_parsingStatus.parsing = XML_SUSPENDED; + } else + parser->m_parsingStatus.parsing = XML_FINISHED; } return XML_STATUS_OK; } enum XML_Status XMLCALL -XML_ResumeParser(XML_Parser parser) -{ +XML_ResumeParser(XML_Parser parser) { enum XML_Status result = XML_STATUS_OK; - if (ps_parsing != XML_SUSPENDED) { - errorCode = XML_ERROR_NOT_SUSPENDED; + if (parser == NULL) + return XML_STATUS_ERROR; + if (parser->m_parsingStatus.parsing != XML_SUSPENDED) { + parser->m_errorCode = XML_ERROR_NOT_SUSPENDED; return XML_STATUS_ERROR; } - ps_parsing = XML_PARSING; + parser->m_parsingStatus.parsing = XML_PARSING; - errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); + parser->m_errorCode = parser->m_processor( + parser, parser->m_bufferPtr, parser->m_parseEndPtr, &parser->m_bufferPtr); - if (errorCode != XML_ERROR_NONE) { - eventEndPtr = eventPtr; - processor = errorProcessor; + if (parser->m_errorCode != XML_ERROR_NONE) { + parser->m_eventEndPtr = parser->m_eventPtr; + parser->m_processor = errorProcessor; return XML_STATUS_ERROR; - } - else { - switch (ps_parsing) { + } else { + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: result = XML_STATUS_SUSPENDED; break; case XML_INITIALIZED: case XML_PARSING: - if (ps_finalBuffer) { - ps_parsing = XML_FINISHED; + if (parser->m_parsingStatus.finalBuffer) { + parser->m_parsingStatus.parsing = XML_FINISHED; return result; } - default: ; + default:; } } - XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); - positionPtr = bufferPtr; + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, + parser->m_bufferPtr, &parser->m_position); + parser->m_positionPtr = parser->m_bufferPtr; return result; } void XMLCALL -XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status) -{ +XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status) { + if (parser == NULL) + return; assert(status != NULL); *status = parser->m_parsingStatus; } enum XML_Error XMLCALL -XML_GetErrorCode(XML_Parser parser) -{ - return errorCode; +XML_GetErrorCode(XML_Parser parser) { + if (parser == NULL) + return XML_ERROR_INVALID_ARGUMENT; + return parser->m_errorCode; } XML_Index XMLCALL -XML_GetCurrentByteIndex(XML_Parser parser) -{ - if (eventPtr) - return (XML_Index)(parseEndByteIndex - (parseEndPtr - eventPtr)); +XML_GetCurrentByteIndex(XML_Parser parser) { + if (parser == NULL) + return -1; + if (parser->m_eventPtr) + return (XML_Index)(parser->m_parseEndByteIndex + - (parser->m_parseEndPtr - parser->m_eventPtr)); return -1; } int XMLCALL -XML_GetCurrentByteCount(XML_Parser parser) -{ - if (eventEndPtr && eventPtr) - return (int)(eventEndPtr - eventPtr); +XML_GetCurrentByteCount(XML_Parser parser) { + if (parser == NULL) + return 0; + if (parser->m_eventEndPtr && parser->m_eventPtr) + return (int)(parser->m_eventEndPtr - parser->m_eventPtr); return 0; } -const char * XMLCALL -XML_GetInputContext(XML_Parser parser, int *offset, int *size) -{ +const char *XMLCALL +XML_GetInputContext(XML_Parser parser, int *offset, int *size) { #ifdef XML_CONTEXT_BYTES - if (eventPtr && buffer) { - *offset = (int)(eventPtr - buffer); - *size = (int)(bufferEnd - buffer); - return buffer; + if (parser == NULL) + return NULL; + if (parser->m_eventPtr && parser->m_buffer) { + if (offset != NULL) + *offset = (int)(parser->m_eventPtr - parser->m_buffer); + if (size != NULL) + *size = (int)(parser->m_bufferEnd - parser->m_buffer); + return parser->m_buffer; } +#else + (void)parser; + (void)offset; + (void)size; #endif /* defined XML_CONTEXT_BYTES */ - return (char *) 0; + return (const char *)0; } XML_Size XMLCALL -XML_GetCurrentLineNumber(XML_Parser parser) -{ - if (eventPtr && eventPtr >= positionPtr) { - XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); - positionPtr = eventPtr; +XML_GetCurrentLineNumber(XML_Parser parser) { + if (parser == NULL) + return 0; + if (parser->m_eventPtr && parser->m_eventPtr >= parser->m_positionPtr) { + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, + parser->m_eventPtr, &parser->m_position); + parser->m_positionPtr = parser->m_eventPtr; } - return position.lineNumber + 1; + return parser->m_position.lineNumber + 1; } XML_Size XMLCALL -XML_GetCurrentColumnNumber(XML_Parser parser) -{ - if (eventPtr && eventPtr >= positionPtr) { - XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); - positionPtr = eventPtr; +XML_GetCurrentColumnNumber(XML_Parser parser) { + if (parser == NULL) + return 0; + if (parser->m_eventPtr && parser->m_eventPtr >= parser->m_positionPtr) { + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, + parser->m_eventPtr, &parser->m_position); + parser->m_positionPtr = parser->m_eventPtr; } - return position.columnNumber; + return parser->m_position.columnNumber; } void XMLCALL -XML_FreeContentModel(XML_Parser parser, XML_Content *model) -{ - FREE(model); +XML_FreeContentModel(XML_Parser parser, XML_Content *model) { + if (parser != NULL) + FREE(parser, model); } -void * XMLCALL -XML_MemMalloc(XML_Parser parser, size_t size) -{ - return MALLOC(size); +void *XMLCALL +XML_MemMalloc(XML_Parser parser, size_t size) { + if (parser == NULL) + return NULL; + return MALLOC(parser, size); } -void * XMLCALL -XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) -{ - return REALLOC(ptr, size); +void *XMLCALL +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) { + if (parser == NULL) + return NULL; + return REALLOC(parser, ptr, size); } void XMLCALL -XML_MemFree(XML_Parser parser, void *ptr) -{ - FREE(ptr); +XML_MemFree(XML_Parser parser, void *ptr) { + if (parser != NULL) + FREE(parser, ptr); } void XMLCALL -XML_DefaultCurrent(XML_Parser parser) -{ - if (defaultHandler) { - if (openInternalEntities) - reportDefault(parser, - internalEncoding, - openInternalEntities->internalEventPtr, - openInternalEntities->internalEventEndPtr); +XML_DefaultCurrent(XML_Parser parser) { + if (parser == NULL) + return; + if (parser->m_defaultHandler) { + if (parser->m_openInternalEntities) + reportDefault(parser, parser->m_internalEncoding, + parser->m_openInternalEntities->internalEventPtr, + parser->m_openInternalEntities->internalEventEndPtr); else - reportDefault(parser, encoding, eventPtr, eventEndPtr); + reportDefault(parser, parser->m_encoding, parser->m_eventPtr, + parser->m_eventEndPtr); } } -const XML_LChar * XMLCALL -XML_ErrorString(enum XML_Error code) -{ - static const XML_LChar* const message[] = { - 0, - XML_L("out of memory"), - XML_L("syntax error"), - XML_L("no element found"), - XML_L("not well-formed (invalid token)"), - XML_L("unclosed token"), - XML_L("partial character"), - XML_L("mismatched tag"), - XML_L("duplicate attribute"), - XML_L("junk after document element"), - XML_L("illegal parameter entity reference"), - XML_L("undefined entity"), - XML_L("recursive entity reference"), - XML_L("asynchronous entity"), - XML_L("reference to invalid character number"), - XML_L("reference to binary entity"), - XML_L("reference to external entity in attribute"), - XML_L("XML or text declaration not at start of entity"), - XML_L("unknown encoding"), - XML_L("encoding specified in XML declaration is incorrect"), - XML_L("unclosed CDATA section"), - XML_L("error in processing external entity reference"), - XML_L("document is not standalone"), - XML_L("unexpected parser state - please send a bug report"), - XML_L("entity declared in parameter entity"), - XML_L("requested feature requires XML_DTD support in Expat"), - XML_L("cannot change setting once parsing has begun"), - XML_L("unbound prefix"), - XML_L("must not undeclare prefix"), - XML_L("incomplete markup in parameter entity"), - XML_L("XML declaration not well-formed"), - XML_L("text declaration not well-formed"), - XML_L("illegal character(s) in public id"), - XML_L("parser suspended"), - XML_L("parser not suspended"), - XML_L("parsing aborted"), - XML_L("parsing finished"), - XML_L("cannot suspend in external parameter entity"), - XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"), - XML_L("reserved prefix (xmlns) must not be declared or undeclared"), - XML_L("prefix must not be bound to one of the reserved namespace names") - }; - if (code > 0 && code < sizeof(message)/sizeof(message[0])) - return message[code]; +const XML_LChar *XMLCALL +XML_ErrorString(enum XML_Error code) { + switch (code) { + case XML_ERROR_NONE: + return NULL; + case XML_ERROR_NO_MEMORY: + return XML_L("out of memory"); + case XML_ERROR_SYNTAX: + return XML_L("syntax error"); + case XML_ERROR_NO_ELEMENTS: + return XML_L("no element found"); + case XML_ERROR_INVALID_TOKEN: + return XML_L("not well-formed (invalid token)"); + case XML_ERROR_UNCLOSED_TOKEN: + return XML_L("unclosed token"); + case XML_ERROR_PARTIAL_CHAR: + return XML_L("partial character"); + case XML_ERROR_TAG_MISMATCH: + return XML_L("mismatched tag"); + case XML_ERROR_DUPLICATE_ATTRIBUTE: + return XML_L("duplicate attribute"); + case XML_ERROR_JUNK_AFTER_DOC_ELEMENT: + return XML_L("junk after document element"); + case XML_ERROR_PARAM_ENTITY_REF: + return XML_L("illegal parameter entity reference"); + case XML_ERROR_UNDEFINED_ENTITY: + return XML_L("undefined entity"); + case XML_ERROR_RECURSIVE_ENTITY_REF: + return XML_L("recursive entity reference"); + case XML_ERROR_ASYNC_ENTITY: + return XML_L("asynchronous entity"); + case XML_ERROR_BAD_CHAR_REF: + return XML_L("reference to invalid character number"); + case XML_ERROR_BINARY_ENTITY_REF: + return XML_L("reference to binary entity"); + case XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF: + return XML_L("reference to external entity in attribute"); + case XML_ERROR_MISPLACED_XML_PI: + return XML_L("XML or text declaration not at start of entity"); + case XML_ERROR_UNKNOWN_ENCODING: + return XML_L("unknown encoding"); + case XML_ERROR_INCORRECT_ENCODING: + return XML_L("encoding specified in XML declaration is incorrect"); + case XML_ERROR_UNCLOSED_CDATA_SECTION: + return XML_L("unclosed CDATA section"); + case XML_ERROR_EXTERNAL_ENTITY_HANDLING: + return XML_L("error in processing external entity reference"); + case XML_ERROR_NOT_STANDALONE: + return XML_L("document is not standalone"); + case XML_ERROR_UNEXPECTED_STATE: + return XML_L("unexpected parser state - please send a bug report"); + case XML_ERROR_ENTITY_DECLARED_IN_PE: + return XML_L("entity declared in parameter entity"); + case XML_ERROR_FEATURE_REQUIRES_XML_DTD: + return XML_L("requested feature requires XML_DTD support in Expat"); + case XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING: + return XML_L("cannot change setting once parsing has begun"); + /* Added in 1.95.7. */ + case XML_ERROR_UNBOUND_PREFIX: + return XML_L("unbound prefix"); + /* Added in 1.95.8. */ + case XML_ERROR_UNDECLARING_PREFIX: + return XML_L("must not undeclare prefix"); + case XML_ERROR_INCOMPLETE_PE: + return XML_L("incomplete markup in parameter entity"); + case XML_ERROR_XML_DECL: + return XML_L("XML declaration not well-formed"); + case XML_ERROR_TEXT_DECL: + return XML_L("text declaration not well-formed"); + case XML_ERROR_PUBLICID: + return XML_L("illegal character(s) in public id"); + case XML_ERROR_SUSPENDED: + return XML_L("parser suspended"); + case XML_ERROR_NOT_SUSPENDED: + return XML_L("parser not suspended"); + case XML_ERROR_ABORTED: + return XML_L("parsing aborted"); + case XML_ERROR_FINISHED: + return XML_L("parsing finished"); + case XML_ERROR_SUSPEND_PE: + return XML_L("cannot suspend in external parameter entity"); + /* Added in 2.0.0. */ + case XML_ERROR_RESERVED_PREFIX_XML: + return XML_L( + "reserved prefix (xml) must not be undeclared or bound to another namespace name"); + case XML_ERROR_RESERVED_PREFIX_XMLNS: + return XML_L("reserved prefix (xmlns) must not be declared or undeclared"); + case XML_ERROR_RESERVED_NAMESPACE_URI: + return XML_L( + "prefix must not be bound to one of the reserved namespace names"); + /* Added in 2.2.5. */ + case XML_ERROR_INVALID_ARGUMENT: /* Constant added in 2.2.1, already */ + return XML_L("invalid argument"); + /* Added in 2.3.0. */ + case XML_ERROR_NO_BUFFER: + return XML_L( + "a successful prior call to function XML_GetBuffer is required"); + /* Added in 2.4.0. */ + case XML_ERROR_AMPLIFICATION_LIMIT_BREACH: + return XML_L( + "limit on input amplification factor (from DTD and entities) breached"); + } return NULL; } -const XML_LChar * XMLCALL +const XML_LChar *XMLCALL XML_ExpatVersion(void) { - /* V1 is used to string-ize the version number. However, it would string-ize the actual version macro *names* unless we get them substituted before being passed to V1. CPP is defined to expand @@ -2027,8 +2466,8 @@ XML_ExpatVersion(void) { with the correct numerals. */ /* ### I'm assuming cpp is portable in this respect... */ -#define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c) -#define V2(a,b,c) XML_L("expat_")V1(a,b,c) +#define V1(a, b, c) XML_L(#a) XML_L(".") XML_L(#b) XML_L(".") XML_L(#c) +#define V2(a, b, c) XML_L("expat_") V1(a, b, c) return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION); @@ -2037,8 +2476,7 @@ XML_ExpatVersion(void) { } XML_Expat_Version XMLCALL -XML_ExpatVersionInfo(void) -{ +XML_ExpatVersionInfo(void) { XML_Expat_Version version; version.major = XML_MAJOR_VERSION; @@ -2048,59 +2486,91 @@ XML_ExpatVersionInfo(void) return version; } -const XML_Feature * XMLCALL -XML_GetFeatureList(void) -{ +const XML_Feature *XMLCALL +XML_GetFeatureList(void) { static const XML_Feature features[] = { - {XML_FEATURE_SIZEOF_XML_CHAR, XML_L("sizeof(XML_Char)"), - sizeof(XML_Char)}, - {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"), - sizeof(XML_LChar)}, + {XML_FEATURE_SIZEOF_XML_CHAR, XML_L("sizeof(XML_Char)"), + sizeof(XML_Char)}, + {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"), + sizeof(XML_LChar)}, #ifdef XML_UNICODE - {XML_FEATURE_UNICODE, XML_L("XML_UNICODE"), 0}, + {XML_FEATURE_UNICODE, XML_L("XML_UNICODE"), 0}, #endif #ifdef XML_UNICODE_WCHAR_T - {XML_FEATURE_UNICODE_WCHAR_T, XML_L("XML_UNICODE_WCHAR_T"), 0}, + {XML_FEATURE_UNICODE_WCHAR_T, XML_L("XML_UNICODE_WCHAR_T"), 0}, #endif #ifdef XML_DTD - {XML_FEATURE_DTD, XML_L("XML_DTD"), 0}, + {XML_FEATURE_DTD, XML_L("XML_DTD"), 0}, #endif #ifdef XML_CONTEXT_BYTES - {XML_FEATURE_CONTEXT_BYTES, XML_L("XML_CONTEXT_BYTES"), - XML_CONTEXT_BYTES}, + {XML_FEATURE_CONTEXT_BYTES, XML_L("XML_CONTEXT_BYTES"), + XML_CONTEXT_BYTES}, #endif #ifdef XML_MIN_SIZE - {XML_FEATURE_MIN_SIZE, XML_L("XML_MIN_SIZE"), 0}, + {XML_FEATURE_MIN_SIZE, XML_L("XML_MIN_SIZE"), 0}, #endif #ifdef XML_NS - {XML_FEATURE_NS, XML_L("XML_NS"), 0}, + {XML_FEATURE_NS, XML_L("XML_NS"), 0}, #endif #ifdef XML_LARGE_SIZE - {XML_FEATURE_LARGE_SIZE, XML_L("XML_LARGE_SIZE"), 0}, + {XML_FEATURE_LARGE_SIZE, XML_L("XML_LARGE_SIZE"), 0}, #endif #ifdef XML_ATTR_INFO - {XML_FEATURE_ATTR_INFO, XML_L("XML_ATTR_INFO"), 0}, + {XML_FEATURE_ATTR_INFO, XML_L("XML_ATTR_INFO"), 0}, #endif - {XML_FEATURE_END, NULL, 0} - }; +#ifdef XML_DTD + /* Added in Expat 2.4.0. */ + {XML_FEATURE_BILLION_LAUGHS_ATTACK_PROTECTION_MAXIMUM_AMPLIFICATION_DEFAULT, + XML_L("XML_BLAP_MAX_AMP"), + (long int) + EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_MAXIMUM_AMPLIFICATION_DEFAULT}, + {XML_FEATURE_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT, + XML_L("XML_BLAP_ACT_THRES"), + EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT}, +#endif + {XML_FEATURE_END, NULL, 0}}; return features; } +#ifdef XML_DTD +XML_Bool XMLCALL +XML_SetBillionLaughsAttackProtectionMaximumAmplification( + XML_Parser parser, float maximumAmplificationFactor) { + if ((parser == NULL) || (parser->m_parentParser != NULL) + || isnan(maximumAmplificationFactor) + || (maximumAmplificationFactor < 1.0f)) { + return XML_FALSE; + } + parser->m_accounting.maximumAmplificationFactor = maximumAmplificationFactor; + return XML_TRUE; +} + +XML_Bool XMLCALL +XML_SetBillionLaughsAttackProtectionActivationThreshold( + XML_Parser parser, unsigned long long activationThresholdBytes) { + if ((parser == NULL) || (parser->m_parentParser != NULL)) { + return XML_FALSE; + } + parser->m_accounting.activationThresholdBytes = activationThresholdBytes; + return XML_TRUE; +} +#endif /* XML_DTD */ + /* Initially tag->rawName always points into the parse buffer; for those TAG instances opened while the current parse buffer was processed, and not yet closed, we need to store tag->rawName in a more permanent location, since the parse buffer is about to be discarded. */ static XML_Bool -storeRawNames(XML_Parser parser) -{ - TAG *tag = tagStack; +storeRawNames(XML_Parser parser) { + TAG *tag = parser->m_tagStack; while (tag) { int bufSize; int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); + size_t rawNameLen; char *rawNameBuf = tag->buf + nameLen; - /* Stop if already stored. Since tagStack is a stack, we can stop + /* Stop if already stored. Since m_tagStack is a stack, we can stop at the first entry that has already been copied; everything below it in the stack is already been accounted for in a previous call to this function. @@ -2110,9 +2580,13 @@ storeRawNames(XML_Parser parser) /* For re-use purposes we need to ensure that the size of tag->buf is a multiple of sizeof(XML_Char). */ - bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char)); + rawNameLen = ROUND_UP(tag->rawNameLength, sizeof(XML_Char)); + /* Detect and prevent integer overflow. */ + if (rawNameLen > (size_t)INT_MAX - nameLen) + return XML_FALSE; + bufSize = nameLen + (int)rawNameLen; if (bufSize > tag->bufEnd - tag->buf) { - char *temp = (char *)REALLOC(tag->buf, bufSize); + char *temp = (char *)REALLOC(parser, tag->buf, bufSize); if (temp == NULL) return XML_FALSE; /* if tag->name.str points to tag->buf (only when namespace @@ -2124,8 +2598,8 @@ storeRawNames(XML_Parser parser) then update it as well, since it will always point into tag->buf */ if (tag->name.localPart) - tag->name.localPart = (XML_Char *)temp + (tag->name.localPart - - (XML_Char *)tag->buf); + tag->name.localPart + = (XML_Char *)temp + (tag->name.localPart - (XML_Char *)tag->buf); tag->buf = temp; tag->bufEnd = temp + bufSize; rawNameBuf = temp + nameLen; @@ -2138,163 +2612,166 @@ storeRawNames(XML_Parser parser) } static enum XML_Error PTRCALL -contentProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doContent(parser, 0, encoding, start, end, - endPtr, (XML_Bool)!ps_finalBuffer); +contentProcessor(XML_Parser parser, const char *start, const char *end, + const char **endPtr) { + enum XML_Error result = doContent( + parser, 0, parser->m_encoding, start, end, endPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_ACCOUNT_DIRECT); if (result == XML_ERROR_NONE) { - if (!storeRawNames(parser)) + if (! storeRawNames(parser)) return XML_ERROR_NO_MEMORY; } return result; } static enum XML_Error PTRCALL -externalEntityInitProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ +externalEntityInitProcessor(XML_Parser parser, const char *start, + const char *end, const char **endPtr) { enum XML_Error result = initializeEncoding(parser); if (result != XML_ERROR_NONE) return result; - processor = externalEntityInitProcessor2; + parser->m_processor = externalEntityInitProcessor2; return externalEntityInitProcessor2(parser, start, end, endPtr); } static enum XML_Error PTRCALL -externalEntityInitProcessor2(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ +externalEntityInitProcessor2(XML_Parser parser, const char *start, + const char *end, const char **endPtr) { const char *next = start; /* XmlContentTok doesn't always set the last arg */ - int tok = XmlContentTok(encoding, start, end, &next); + int tok = XmlContentTok(parser->m_encoding, start, end, &next); switch (tok) { case XML_TOK_BOM: +#ifdef XML_DTD + if (! accountingDiffTolerated(parser, tok, start, next, __LINE__, + XML_ACCOUNT_DIRECT)) { + accountingOnAbort(parser); + return XML_ERROR_AMPLIFICATION_LIMIT_BREACH; + } +#endif /* XML_DTD */ + /* If we are at the end of the buffer, this would cause the next stage, i.e. externalEntityInitProcessor3, to pass control directly to doContent (by detecting XML_TOK_NONE) without processing any xml text declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent. */ - if (next == end && !ps_finalBuffer) { + if (next == end && ! parser->m_parsingStatus.finalBuffer) { *endPtr = next; return XML_ERROR_NONE; } start = next; break; case XML_TOK_PARTIAL: - if (!ps_finalBuffer) { + if (! parser->m_parsingStatus.finalBuffer) { *endPtr = start; return XML_ERROR_NONE; } - eventPtr = start; + parser->m_eventPtr = start; return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: - if (!ps_finalBuffer) { + if (! parser->m_parsingStatus.finalBuffer) { *endPtr = start; return XML_ERROR_NONE; } - eventPtr = start; + parser->m_eventPtr = start; return XML_ERROR_PARTIAL_CHAR; } - processor = externalEntityInitProcessor3; + parser->m_processor = externalEntityInitProcessor3; return externalEntityInitProcessor3(parser, start, end, endPtr); } static enum XML_Error PTRCALL -externalEntityInitProcessor3(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ +externalEntityInitProcessor3(XML_Parser parser, const char *start, + const char *end, const char **endPtr) { int tok; const char *next = start; /* XmlContentTok doesn't always set the last arg */ - eventPtr = start; - tok = XmlContentTok(encoding, start, end, &next); - eventEndPtr = next; + parser->m_eventPtr = start; + tok = XmlContentTok(parser->m_encoding, start, end, &next); + /* Note: These bytes are accounted later in: + - processXmlDecl + - externalEntityContentProcessor + */ + parser->m_eventEndPtr = next; switch (tok) { - case XML_TOK_XML_DECL: - { - enum XML_Error result; - result = processXmlDecl(parser, 1, start, next); - if (result != XML_ERROR_NONE) - return result; - switch (ps_parsing) { - case XML_SUSPENDED: - *endPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: - start = next; - } + case XML_TOK_XML_DECL: { + enum XML_Error result; + result = processXmlDecl(parser, 1, start, next); + if (result != XML_ERROR_NONE) + return result; + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + *endPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + start = next; } - break; + } break; case XML_TOK_PARTIAL: - if (!ps_finalBuffer) { + if (! parser->m_parsingStatus.finalBuffer) { *endPtr = start; return XML_ERROR_NONE; } return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: - if (!ps_finalBuffer) { + if (! parser->m_parsingStatus.finalBuffer) { *endPtr = start; return XML_ERROR_NONE; } return XML_ERROR_PARTIAL_CHAR; } - processor = externalEntityContentProcessor; - tagLevel = 1; + parser->m_processor = externalEntityContentProcessor; + parser->m_tagLevel = 1; return externalEntityContentProcessor(parser, start, end, endPtr); } static enum XML_Error PTRCALL -externalEntityContentProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doContent(parser, 1, encoding, start, end, - endPtr, (XML_Bool)!ps_finalBuffer); +externalEntityContentProcessor(XML_Parser parser, const char *start, + const char *end, const char **endPtr) { + enum XML_Error result + = doContent(parser, 1, parser->m_encoding, start, end, endPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, + XML_ACCOUNT_ENTITY_EXPANSION); if (result == XML_ERROR_NONE) { - if (!storeRawNames(parser)) + if (! storeRawNames(parser)) return XML_ERROR_NO_MEMORY; } return result; } static enum XML_Error -doContent(XML_Parser parser, - int startTagLevel, - const ENCODING *enc, - const char *s, - const char *end, - const char **nextPtr, - XML_Bool haveMore) -{ +doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, + const char *s, const char *end, const char **nextPtr, + XML_Bool haveMore, enum XML_Account account) { /* save one level of indirection */ - DTD * const dtd = _dtd; + DTD *const dtd = parser->m_dtd; const char **eventPP; const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); + if (enc == parser->m_encoding) { + eventPP = &parser->m_eventPtr; + eventEndPP = &parser->m_eventEndPtr; + } else { + eventPP = &(parser->m_openInternalEntities->internalEventPtr); + eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); } *eventPP = s; for (;;) { const char *next = s; /* XmlContentTok doesn't always set the last arg */ int tok = XmlContentTok(enc, s, end, &next); +#ifdef XML_DTD + const char *accountAfter + = ((tok == XML_TOK_TRAILING_RSQB) || (tok == XML_TOK_TRAILING_CR)) + ? (haveMore ? s /* i.e. 0 bytes */ : end) + : next; + if (! accountingDiffTolerated(parser, tok, s, accountAfter, __LINE__, + account)) { + accountingOnAbort(parser); + return XML_ERROR_AMPLIFICATION_LIMIT_BREACH; + } +#endif *eventEndPP = next; switch (tok) { case XML_TOK_TRAILING_CR: @@ -2303,18 +2780,17 @@ doContent(XML_Parser parser, return XML_ERROR_NONE; } *eventEndPP = end; - if (characterDataHandler) { + if (parser->m_characterDataHandler) { XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) + parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); + } else if (parser->m_defaultHandler) reportDefault(parser, enc, s, end); /* We are at the end of the final buffer, should we check for XML_SUSPENDED, XML_FINISHED? */ if (startTagLevel == 0) return XML_ERROR_NO_ELEMENTS; - if (tagLevel != startTagLevel) + if (parser->m_tagLevel != startTagLevel) return XML_ERROR_ASYNC_ENTITY; *nextPtr = end; return XML_ERROR_NONE; @@ -2324,7 +2800,7 @@ doContent(XML_Parser parser, return XML_ERROR_NONE; } if (startTagLevel > 0) { - if (tagLevel != startTagLevel) + if (parser->m_tagLevel != startTagLevel) return XML_ERROR_ASYNC_ENTITY; *nextPtr = s; return XML_ERROR_NONE; @@ -2345,321 +2821,325 @@ doContent(XML_Parser parser, return XML_ERROR_NONE; } return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_ENTITY_REF: - { - const XML_Char *name; - ENTITY *entity; - XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (ch) { - if (characterDataHandler) - characterDataHandler(handlerArg, &ch, 1); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - name = poolStoreString(&dtd->pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); - poolDiscard(&dtd->pool); - /* First, determine if a check for an existing declaration is needed; - if yes, check that the entity exists, and that it is internal, - otherwise call the skipped entity or default handler. - */ - if (!dtd->hasParamEntityRefs || dtd->standalone) { - if (!entity) - return XML_ERROR_UNDEFINED_ENTITY; - else if (!entity->is_internal) - return XML_ERROR_ENTITY_DECLARED_IN_PE; - } - else if (!entity) { - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, name, 0); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - if (entity->open) - return XML_ERROR_RECURSIVE_ENTITY_REF; - if (entity->notation) - return XML_ERROR_BINARY_ENTITY_REF; - if (entity->textPtr) { - enum XML_Error result; - if (!defaultExpandInternalEntities) { - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, entity->name, 0); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - result = processInternalEntity(parser, entity, XML_FALSE); - if (result != XML_ERROR_NONE) - return result; - } - else if (externalEntityRefHandler) { - const XML_Char *context; - entity->open = XML_TRUE; - context = getContext(parser); - entity->open = XML_FALSE; - if (!context) - return XML_ERROR_NO_MEMORY; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - context, - entity->base, - entity->systemId, - entity->publicId)) - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - poolDiscard(&tempPool); - } - else if (defaultHandler) + case XML_TOK_ENTITY_REF: { + const XML_Char *name; + ENTITY *entity; + XML_Char ch = (XML_Char)XmlPredefinedEntityName( + enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); + if (ch) { +#ifdef XML_DTD + /* NOTE: We are replacing 4-6 characters original input for 1 character + * so there is no amplification and hence recording without + * protection. */ + accountingDiffTolerated(parser, tok, (char *)&ch, + ((char *)&ch) + sizeof(XML_Char), __LINE__, + XML_ACCOUNT_ENTITY_EXPANSION); +#endif /* XML_DTD */ + if (parser->m_characterDataHandler) + parser->m_characterDataHandler(parser->m_handlerArg, &ch, 1); + else if (parser->m_defaultHandler) reportDefault(parser, enc, s, next); break; } + name = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); + poolDiscard(&dtd->pool); + /* First, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal, + otherwise call the skipped entity or default handler. + */ + if (! dtd->hasParamEntityRefs || dtd->standalone) { + if (! entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (! entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } else if (! entity) { + if (parser->m_skippedEntityHandler) + parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); + else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + if (entity->open) + return XML_ERROR_RECURSIVE_ENTITY_REF; + if (entity->notation) + return XML_ERROR_BINARY_ENTITY_REF; + if (entity->textPtr) { + enum XML_Error result; + if (! parser->m_defaultExpandInternalEntities) { + if (parser->m_skippedEntityHandler) + parser->m_skippedEntityHandler(parser->m_handlerArg, entity->name, + 0); + else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + result = processInternalEntity(parser, entity, XML_FALSE); + if (result != XML_ERROR_NONE) + return result; + } else if (parser->m_externalEntityRefHandler) { + const XML_Char *context; + entity->open = XML_TRUE; + context = getContext(parser); + entity->open = XML_FALSE; + if (! context) + return XML_ERROR_NO_MEMORY; + if (! parser->m_externalEntityRefHandler( + parser->m_externalEntityRefHandlerArg, context, entity->base, + entity->systemId, entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + poolDiscard(&parser->m_tempPool); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + break; + } case XML_TOK_START_TAG_NO_ATTS: /* fall through */ - case XML_TOK_START_TAG_WITH_ATTS: - { - TAG *tag; - enum XML_Error result; - XML_Char *toPtr; - if (freeTagList) { - tag = freeTagList; - freeTagList = freeTagList->parent; + case XML_TOK_START_TAG_WITH_ATTS: { + TAG *tag; + enum XML_Error result; + XML_Char *toPtr; + if (parser->m_freeTagList) { + tag = parser->m_freeTagList; + parser->m_freeTagList = parser->m_freeTagList->parent; + } else { + tag = (TAG *)MALLOC(parser, sizeof(TAG)); + if (! tag) + return XML_ERROR_NO_MEMORY; + tag->buf = (char *)MALLOC(parser, INIT_TAG_BUF_SIZE); + if (! tag->buf) { + FREE(parser, tag); + return XML_ERROR_NO_MEMORY; } - else { - tag = (TAG *)MALLOC(sizeof(TAG)); - if (!tag) - return XML_ERROR_NO_MEMORY; - tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE); - if (!tag->buf) { - FREE(tag); - return XML_ERROR_NO_MEMORY; - } - tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; - } - tag->bindings = NULL; - tag->parent = tagStack; - tagStack = tag; - tag->name.localPart = NULL; - tag->name.prefix = NULL; - tag->rawName = s + enc->minBytesPerChar; - tag->rawNameLength = XmlNameLength(enc, tag->rawName); - ++tagLevel; - { - const char *rawNameEnd = tag->rawName + tag->rawNameLength; - const char *fromPtr = tag->rawName; - toPtr = (XML_Char *)tag->buf; - for (;;) { - int bufSize; - int convLen; - const enum XML_Convert_Result convert_res = XmlConvert(enc, - &fromPtr, rawNameEnd, - (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1); - convLen = (int)(toPtr - (XML_Char *)tag->buf); - if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) { - tag->name.strLen = convLen; - break; - } - bufSize = (int)(tag->bufEnd - tag->buf) << 1; - { - char *temp = (char *)REALLOC(tag->buf, bufSize); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - tag->buf = temp; - tag->bufEnd = temp + bufSize; - toPtr = (XML_Char *)temp + convLen; - } - } - } - tag->name.str = (XML_Char *)tag->buf; - *toPtr = XML_T('\0'); - result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings)); - if (result) - return result; - if (startElementHandler) - startElementHandler(handlerArg, tag->name.str, - (const XML_Char **)atts); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - poolClear(&tempPool); - break; + tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; } + tag->bindings = NULL; + tag->parent = parser->m_tagStack; + parser->m_tagStack = tag; + tag->name.localPart = NULL; + tag->name.prefix = NULL; + tag->rawName = s + enc->minBytesPerChar; + tag->rawNameLength = XmlNameLength(enc, tag->rawName); + ++parser->m_tagLevel; + { + const char *rawNameEnd = tag->rawName + tag->rawNameLength; + const char *fromPtr = tag->rawName; + toPtr = (XML_Char *)tag->buf; + for (;;) { + int bufSize; + int convLen; + const enum XML_Convert_Result convert_res + = XmlConvert(enc, &fromPtr, rawNameEnd, (ICHAR **)&toPtr, + (ICHAR *)tag->bufEnd - 1); + convLen = (int)(toPtr - (XML_Char *)tag->buf); + if ((fromPtr >= rawNameEnd) + || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) { + tag->name.strLen = convLen; + break; + } + bufSize = (int)(tag->bufEnd - tag->buf) << 1; + { + char *temp = (char *)REALLOC(parser, tag->buf, bufSize); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + tag->buf = temp; + tag->bufEnd = temp + bufSize; + toPtr = (XML_Char *)temp + convLen; + } + } + } + tag->name.str = (XML_Char *)tag->buf; + *toPtr = XML_T('\0'); + result + = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings), account); + if (result) + return result; + if (parser->m_startElementHandler) + parser->m_startElementHandler(parser->m_handlerArg, tag->name.str, + (const XML_Char **)parser->m_atts); + else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + poolClear(&parser->m_tempPool); + break; + } case XML_TOK_EMPTY_ELEMENT_NO_ATTS: /* fall through */ - case XML_TOK_EMPTY_ELEMENT_WITH_ATTS: - { - const char *rawName = s + enc->minBytesPerChar; - enum XML_Error result; - BINDING *bindings = NULL; - XML_Bool noElmHandlers = XML_TRUE; - TAG_NAME name; - name.str = poolStoreString(&tempPool, enc, rawName, - rawName + XmlNameLength(enc, rawName)); - if (!name.str) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - result = storeAtts(parser, enc, s, &name, &bindings); - if (result) - return result; - poolFinish(&tempPool); - if (startElementHandler) { - startElementHandler(handlerArg, name.str, (const XML_Char **)atts); - noElmHandlers = XML_FALSE; - } - if (endElementHandler) { - if (startElementHandler) - *eventPP = *eventEndPP; - endElementHandler(handlerArg, name.str); - noElmHandlers = XML_FALSE; - } - if (noElmHandlers && defaultHandler) - reportDefault(parser, enc, s, next); - poolClear(&tempPool); - while (bindings) { - BINDING *b = bindings; - if (endNamespaceDeclHandler) - endNamespaceDeclHandler(handlerArg, b->prefix->name); - bindings = bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; - b->prefix->binding = b->prevPrefixBinding; - } + case XML_TOK_EMPTY_ELEMENT_WITH_ATTS: { + const char *rawName = s + enc->minBytesPerChar; + enum XML_Error result; + BINDING *bindings = NULL; + XML_Bool noElmHandlers = XML_TRUE; + TAG_NAME name; + name.str = poolStoreString(&parser->m_tempPool, enc, rawName, + rawName + XmlNameLength(enc, rawName)); + if (! name.str) + return XML_ERROR_NO_MEMORY; + poolFinish(&parser->m_tempPool); + result = storeAtts(parser, enc, s, &name, &bindings, + XML_ACCOUNT_NONE /* token spans whole start tag */); + if (result != XML_ERROR_NONE) { + freeBindings(parser, bindings); + return result; + } + poolFinish(&parser->m_tempPool); + if (parser->m_startElementHandler) { + parser->m_startElementHandler(parser->m_handlerArg, name.str, + (const XML_Char **)parser->m_atts); + noElmHandlers = XML_FALSE; + } + if (parser->m_endElementHandler) { + if (parser->m_startElementHandler) + *eventPP = *eventEndPP; + parser->m_endElementHandler(parser->m_handlerArg, name.str); + noElmHandlers = XML_FALSE; + } + if (noElmHandlers && parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + poolClear(&parser->m_tempPool); + freeBindings(parser, bindings); + } + if ((parser->m_tagLevel == 0) + && (parser->m_parsingStatus.parsing != XML_FINISHED)) { + if (parser->m_parsingStatus.parsing == XML_SUSPENDED) + parser->m_processor = epilogProcessor; + else + return epilogProcessor(parser, next, end, nextPtr); } - if (tagLevel == 0) - return epilogProcessor(parser, next, end, nextPtr); break; case XML_TOK_END_TAG: - if (tagLevel == startTagLevel) + if (parser->m_tagLevel == startTagLevel) return XML_ERROR_ASYNC_ENTITY; else { int len; const char *rawName; - TAG *tag = tagStack; - tagStack = tag->parent; - tag->parent = freeTagList; - freeTagList = tag; - rawName = s + enc->minBytesPerChar*2; + TAG *tag = parser->m_tagStack; + rawName = s + enc->minBytesPerChar * 2; len = XmlNameLength(enc, rawName); if (len != tag->rawNameLength || memcmp(tag->rawName, rawName, len) != 0) { *eventPP = rawName; return XML_ERROR_TAG_MISMATCH; } - --tagLevel; - if (endElementHandler) { + parser->m_tagStack = tag->parent; + tag->parent = parser->m_freeTagList; + parser->m_freeTagList = tag; + --parser->m_tagLevel; + if (parser->m_endElementHandler) { const XML_Char *localPart; const XML_Char *prefix; XML_Char *uri; localPart = tag->name.localPart; - if (ns && localPart) { + if (parser->m_ns && localPart) { /* localPart and prefix may have been overwritten in tag->name.str, since this points to the binding->uri buffer which gets re-used; so we have to add them again */ uri = (XML_Char *)tag->name.str + tag->name.uriLen; /* don't need to check for space - already done in storeAtts() */ - while (*localPart) *uri++ = *localPart++; + while (*localPart) + *uri++ = *localPart++; prefix = (XML_Char *)tag->name.prefix; - if (ns_triplets && prefix) { - *uri++ = namespaceSeparator; - while (*prefix) *uri++ = *prefix++; - } + if (parser->m_ns_triplets && prefix) { + *uri++ = parser->m_namespaceSeparator; + while (*prefix) + *uri++ = *prefix++; + } *uri = XML_T('\0'); } - endElementHandler(handlerArg, tag->name.str); - } - else if (defaultHandler) + parser->m_endElementHandler(parser->m_handlerArg, tag->name.str); + } else if (parser->m_defaultHandler) reportDefault(parser, enc, s, next); while (tag->bindings) { BINDING *b = tag->bindings; - if (endNamespaceDeclHandler) - endNamespaceDeclHandler(handlerArg, b->prefix->name); + if (parser->m_endNamespaceDeclHandler) + parser->m_endNamespaceDeclHandler(parser->m_handlerArg, + b->prefix->name); tag->bindings = tag->bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; + b->nextTagBinding = parser->m_freeBindingList; + parser->m_freeBindingList = b; b->prefix->binding = b->prevPrefixBinding; } - if (tagLevel == 0) - return epilogProcessor(parser, next, end, nextPtr); - } - break; - case XML_TOK_CHAR_REF: - { - int n = XmlCharRefNumber(enc, s); - if (n < 0) - return XML_ERROR_BAD_CHAR_REF; - if (characterDataHandler) { - XML_Char buf[XML_ENCODE_MAX]; - characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf)); + if ((parser->m_tagLevel == 0) + && (parser->m_parsingStatus.parsing != XML_FINISHED)) { + if (parser->m_parsingStatus.parsing == XML_SUSPENDED) + parser->m_processor = epilogProcessor; + else + return epilogProcessor(parser, next, end, nextPtr); } - else if (defaultHandler) - reportDefault(parser, enc, s, next); } break; + case XML_TOK_CHAR_REF: { + int n = XmlCharRefNumber(enc, s); + if (n < 0) + return XML_ERROR_BAD_CHAR_REF; + if (parser->m_characterDataHandler) { + XML_Char buf[XML_ENCODE_MAX]; + parser->m_characterDataHandler(parser->m_handlerArg, buf, + XmlEncode(n, (ICHAR *)buf)); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + } break; case XML_TOK_XML_DECL: return XML_ERROR_MISPLACED_XML_PI; case XML_TOK_DATA_NEWLINE: - if (characterDataHandler) { + if (parser->m_characterDataHandler) { XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) + parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); + } else if (parser->m_defaultHandler) reportDefault(parser, enc, s, next); break; - case XML_TOK_CDATA_SECT_OPEN: - { - enum XML_Error result; - if (startCdataSectionHandler) - startCdataSectionHandler(handlerArg); -#if 0 - /* Suppose you doing a transformation on a document that involves - changing only the character data. You set up a defaultHandler - and a characterDataHandler. The defaultHandler simply copies - characters through. The characterDataHandler does the - transformation and writes the characters out escaping them as - necessary. This case will fail to work if we leave out the - following two lines (because & and < inside CDATA sections will - be incorrectly escaped). + case XML_TOK_CDATA_SECT_OPEN: { + enum XML_Error result; + if (parser->m_startCdataSectionHandler) + parser->m_startCdataSectionHandler(parser->m_handlerArg); + /* BEGIN disabled code */ + /* Suppose you doing a transformation on a document that involves + changing only the character data. You set up a defaultHandler + and a characterDataHandler. The defaultHandler simply copies + characters through. The characterDataHandler does the + transformation and writes the characters out escaping them as + necessary. This case will fail to work if we leave out the + following two lines (because & and < inside CDATA sections will + be incorrectly escaped). - However, now we have a start/endCdataSectionHandler, so it seems - easier to let the user deal with this. - */ - else if (characterDataHandler) - characterDataHandler(handlerArg, dataBuf, 0); -#endif - else if (defaultHandler) - reportDefault(parser, enc, s, next); - result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore); - if (result != XML_ERROR_NONE) - return result; - else if (!next) { - processor = cdataSectionProcessor; - return result; - } + However, now we have a start/endCdataSectionHandler, so it seems + easier to let the user deal with this. + */ + else if (0 && parser->m_characterDataHandler) + parser->m_characterDataHandler(parser->m_handlerArg, parser->m_dataBuf, + 0); + /* END disabled code */ + else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + result + = doCdataSection(parser, enc, &next, end, nextPtr, haveMore, account); + if (result != XML_ERROR_NONE) + return result; + else if (! next) { + parser->m_processor = cdataSectionProcessor; + return result; } - break; + } break; case XML_TOK_TRAILING_RSQB: if (haveMore) { *nextPtr = s; return XML_ERROR_NONE; } - if (characterDataHandler) { + if (parser->m_characterDataHandler) { if (MUST_CONVERT(enc, s)) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); - characterDataHandler(handlerArg, dataBuf, - (int)(dataPtr - (ICHAR *)dataBuf)); - } - else - characterDataHandler(handlerArg, - (XML_Char *)s, - (int)((XML_Char *)end - (XML_Char *)s)); - } - else if (defaultHandler) + ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; + XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)parser->m_dataBufEnd); + parser->m_characterDataHandler( + parser->m_handlerArg, parser->m_dataBuf, + (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); + } else + parser->m_characterDataHandler( + parser->m_handlerArg, (XML_Char *)s, + (int)((XML_Char *)end - (XML_Char *)s)); + } else if (parser->m_defaultHandler) reportDefault(parser, enc, s, end); /* We are at the end of the final buffer, should we check for XML_SUSPENDED, XML_FINISHED? @@ -2668,63 +3148,90 @@ doContent(XML_Parser parser, *eventPP = end; return XML_ERROR_NO_ELEMENTS; } - if (tagLevel != startTagLevel) { + if (parser->m_tagLevel != startTagLevel) { *eventPP = end; return XML_ERROR_ASYNC_ENTITY; } *nextPtr = end; return XML_ERROR_NONE; - case XML_TOK_DATA_CHARS: - { - XML_CharacterDataHandler charDataHandler = characterDataHandler; - if (charDataHandler) { - if (MUST_CONVERT(enc, s)) { - for (;;) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - const enum XML_Convert_Result convert_res = XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = s; - charDataHandler(handlerArg, dataBuf, - (int)(dataPtr - (ICHAR *)dataBuf)); - if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) - break; - *eventPP = s; - } + case XML_TOK_DATA_CHARS: { + XML_CharacterDataHandler charDataHandler = parser->m_characterDataHandler; + if (charDataHandler) { + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; + const enum XML_Convert_Result convert_res = XmlConvert( + enc, &s, next, &dataPtr, (ICHAR *)parser->m_dataBufEnd); + *eventEndPP = s; + charDataHandler(parser->m_handlerArg, parser->m_dataBuf, + (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); + if ((convert_res == XML_CONVERT_COMPLETED) + || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + break; + *eventPP = s; } - else - charDataHandler(handlerArg, - (XML_Char *)s, - (int)((XML_Char *)next - (XML_Char *)s)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; + } else + charDataHandler(parser->m_handlerArg, (XML_Char *)s, + (int)((XML_Char *)next - (XML_Char *)s)); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + } break; case XML_TOK_PI: - if (!reportProcessingInstruction(parser, enc, s, next)) + if (! reportProcessingInstruction(parser, enc, s, next)) return XML_ERROR_NO_MEMORY; break; case XML_TOK_COMMENT: - if (!reportComment(parser, enc, s, next)) + if (! reportComment(parser, enc, s, next)) return XML_ERROR_NO_MEMORY; break; default: - if (defaultHandler) + /* All of the tokens produced by XmlContentTok() have their own + * explicit cases, so this default is not strictly necessary. + * However it is a useful safety net, so we retain the code and + * simply exclude it from the coverage tests. + * + * LCOV_EXCL_START + */ + if (parser->m_defaultHandler) reportDefault(parser, enc, s, next); break; + /* LCOV_EXCL_STOP */ } *eventPP = s = next; - switch (ps_parsing) { + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: *nextPtr = next; return XML_ERROR_NONE; case XML_FINISHED: return XML_ERROR_ABORTED; - default: ; + default:; } } /* not reached */ } +/* This function does not call free() on the allocated memory, merely + * moving it to the parser's m_freeBindingList where it can be freed or + * reused as appropriate. + */ +static void +freeBindings(XML_Parser parser, BINDING *bindings) { + while (bindings) { + BINDING *b = bindings; + + /* m_startNamespaceDeclHandler will have been called for this + * binding in addBindings(), so call the end handler now. + */ + if (parser->m_endNamespaceDeclHandler) + parser->m_endNamespaceDeclHandler(parser->m_handlerArg, b->prefix->name); + + bindings = bindings->nextTagBinding; + b->nextTagBinding = parser->m_freeBindingList; + parser->m_freeBindingList = b; + b->prefix->binding = b->prevPrefixBinding; + } +} + /* Precondition: all arguments must be non-NULL; Purpose: - normalize attributes @@ -2736,14 +3243,13 @@ doContent(XML_Parser parser, - generate namespace aware element name (URI, prefix) */ static enum XML_Error -storeAtts(XML_Parser parser, const ENCODING *enc, - const char *attStr, TAG_NAME *tagNamePtr, - BINDING **bindingsPtr) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ +storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, + TAG_NAME *tagNamePtr, BINDING **bindingsPtr, + enum XML_Account account) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ ELEMENT_TYPE *elementType; int nDefaultAtts; - const XML_Char **appAtts; /* the attribute list for the application */ + const XML_Char **appAtts; /* the attribute list for the application */ int attIndex = 0; int prefixLen; int i; @@ -2754,75 +3260,120 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const XML_Char *localPart; /* lookup the element type name */ - elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0); - if (!elementType) { + elementType + = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str, 0); + if (! elementType) { const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str); - if (!name) + if (! name) return XML_ERROR_NO_MEMORY; elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE)); - if (!elementType) + if (! elementType) return XML_ERROR_NO_MEMORY; - if (ns && !setElementTypePrefix(parser, elementType)) + if (parser->m_ns && ! setElementTypePrefix(parser, elementType)) return XML_ERROR_NO_MEMORY; } nDefaultAtts = elementType->nDefaultAtts; /* get the attributes from the tokenizer */ - n = XmlGetAttributes(enc, attStr, attsSize, atts); - if (n + nDefaultAtts > attsSize) { - int oldAttsSize = attsSize; + n = XmlGetAttributes(enc, attStr, parser->m_attsSize, parser->m_atts); + + /* Detect and prevent integer overflow */ + if (n > INT_MAX - nDefaultAtts) { + return XML_ERROR_NO_MEMORY; + } + + if (n + nDefaultAtts > parser->m_attsSize) { + int oldAttsSize = parser->m_attsSize; ATTRIBUTE *temp; #ifdef XML_ATTR_INFO XML_AttrInfo *temp2; #endif - attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; - temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE)); - if (temp == NULL) + + /* Detect and prevent integer overflow */ + if ((nDefaultAtts > INT_MAX - INIT_ATTS_SIZE) + || (n > INT_MAX - (nDefaultAtts + INIT_ATTS_SIZE))) { return XML_ERROR_NO_MEMORY; - atts = temp; + } + + parser->m_attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; + + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if ((unsigned)parser->m_attsSize > (size_t)(-1) / sizeof(ATTRIBUTE)) { + parser->m_attsSize = oldAttsSize; + return XML_ERROR_NO_MEMORY; + } +#endif + + temp = (ATTRIBUTE *)REALLOC(parser, (void *)parser->m_atts, + parser->m_attsSize * sizeof(ATTRIBUTE)); + if (temp == NULL) { + parser->m_attsSize = oldAttsSize; + return XML_ERROR_NO_MEMORY; + } + parser->m_atts = temp; #ifdef XML_ATTR_INFO - temp2 = (XML_AttrInfo *)REALLOC((void *)attInfo, attsSize * sizeof(XML_AttrInfo)); - if (temp2 == NULL) + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +# if UINT_MAX >= SIZE_MAX + if ((unsigned)parser->m_attsSize > (size_t)(-1) / sizeof(XML_AttrInfo)) { + parser->m_attsSize = oldAttsSize; return XML_ERROR_NO_MEMORY; - attInfo = temp2; + } +# endif + + temp2 = (XML_AttrInfo *)REALLOC(parser, (void *)parser->m_attInfo, + parser->m_attsSize * sizeof(XML_AttrInfo)); + if (temp2 == NULL) { + parser->m_attsSize = oldAttsSize; + return XML_ERROR_NO_MEMORY; + } + parser->m_attInfo = temp2; #endif if (n > oldAttsSize) - XmlGetAttributes(enc, attStr, n, atts); + XmlGetAttributes(enc, attStr, n, parser->m_atts); } - appAtts = (const XML_Char **)atts; + appAtts = (const XML_Char **)parser->m_atts; for (i = 0; i < n; i++) { - ATTRIBUTE *currAtt = &atts[i]; + ATTRIBUTE *currAtt = &parser->m_atts[i]; #ifdef XML_ATTR_INFO - XML_AttrInfo *currAttInfo = &attInfo[i]; + XML_AttrInfo *currAttInfo = &parser->m_attInfo[i]; #endif /* add the name and value to the attribute list */ - ATTRIBUTE_ID *attId = getAttributeId(parser, enc, currAtt->name, - currAtt->name - + XmlNameLength(enc, currAtt->name)); - if (!attId) + ATTRIBUTE_ID *attId + = getAttributeId(parser, enc, currAtt->name, + currAtt->name + XmlNameLength(enc, currAtt->name)); + if (! attId) return XML_ERROR_NO_MEMORY; #ifdef XML_ATTR_INFO - currAttInfo->nameStart = parseEndByteIndex - (parseEndPtr - currAtt->name); - currAttInfo->nameEnd = currAttInfo->nameStart + - XmlNameLength(enc, currAtt->name); - currAttInfo->valueStart = parseEndByteIndex - - (parseEndPtr - currAtt->valuePtr); - currAttInfo->valueEnd = parseEndByteIndex - (parseEndPtr - currAtt->valueEnd); + currAttInfo->nameStart + = parser->m_parseEndByteIndex - (parser->m_parseEndPtr - currAtt->name); + currAttInfo->nameEnd + = currAttInfo->nameStart + XmlNameLength(enc, currAtt->name); + currAttInfo->valueStart = parser->m_parseEndByteIndex + - (parser->m_parseEndPtr - currAtt->valuePtr); + currAttInfo->valueEnd = parser->m_parseEndByteIndex + - (parser->m_parseEndPtr - currAtt->valueEnd); #endif /* Detect duplicate attributes by their QNames. This does not work when namespace processing is turned on and different prefixes for the same namespace are used. For this case we have a check further down. */ if ((attId->name)[-1]) { - if (enc == encoding) - eventPtr = atts[i].name; + if (enc == parser->m_encoding) + parser->m_eventPtr = parser->m_atts[i].name; return XML_ERROR_DUPLICATE_ATTRIBUTE; } (attId->name)[-1] = 1; appAtts[attIndex++] = attId->name; - if (!atts[i].normalized) { + if (! parser->m_atts[i].normalized) { enum XML_Error result; XML_Bool isCdata = XML_TRUE; @@ -2838,21 +3389,21 @@ storeAtts(XML_Parser parser, const ENCODING *enc, } /* normalize the attribute value */ - result = storeAttributeValue(parser, enc, isCdata, - atts[i].valuePtr, atts[i].valueEnd, - &tempPool); + result = storeAttributeValue( + parser, enc, isCdata, parser->m_atts[i].valuePtr, + parser->m_atts[i].valueEnd, &parser->m_tempPool, account); if (result) return result; - appAtts[attIndex] = poolStart(&tempPool); - poolFinish(&tempPool); - } - else { + appAtts[attIndex] = poolStart(&parser->m_tempPool); + poolFinish(&parser->m_tempPool); + } else { /* the value did not need normalizing */ - appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr, - atts[i].valueEnd); + appAtts[attIndex] = poolStoreString(&parser->m_tempPool, enc, + parser->m_atts[i].valuePtr, + parser->m_atts[i].valueEnd); if (appAtts[attIndex] == 0) return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); + poolFinish(&parser->m_tempPool); } /* handle prefixed attribute names */ if (attId->prefix) { @@ -2863,49 +3414,44 @@ storeAtts(XML_Parser parser, const ENCODING *enc, if (result) return result; --attIndex; - } - else { + } else { /* deal with other prefixed names later */ attIndex++; nPrefixes++; (attId->name)[-1] = 2; } - } - else + } else attIndex++; } /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */ - nSpecifiedAtts = attIndex; + parser->m_nSpecifiedAtts = attIndex; if (elementType->idAtt && (elementType->idAtt->name)[-1]) { for (i = 0; i < attIndex; i += 2) if (appAtts[i] == elementType->idAtt->name) { - idAttIndex = i; + parser->m_idAttIndex = i; break; } - } - else - idAttIndex = -1; + } else + parser->m_idAttIndex = -1; /* do attribute defaulting */ for (i = 0; i < nDefaultAtts; i++) { const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i; - if (!(da->id->name)[-1] && da->value) { + if (! (da->id->name)[-1] && da->value) { if (da->id->prefix) { if (da->id->xmlns) { enum XML_Error result = addBinding(parser, da->id->prefix, da->id, da->value, bindingsPtr); if (result) return result; - } - else { + } else { (da->id->name)[-1] = 2; nPrefixes++; appAtts[attIndex++] = da->id->name; appAtts[attIndex++] = da->value; } - } - else { + } else { (da->id->name)[-1] = 1; appAtts[attIndex++] = da->id->name; appAtts[attIndex++] = da->value; @@ -2918,110 +3464,169 @@ storeAtts(XML_Parser parser, const ENCODING *enc, and clear flags that say whether attributes were specified */ i = 0; if (nPrefixes) { - int j; /* hash table index */ - unsigned long version = nsAttsVersion; - int nsAttsSize = (int)1 << nsAttsPower; + int j; /* hash table index */ + unsigned long version = parser->m_nsAttsVersion; + + /* Detect and prevent invalid shift */ + if (parser->m_nsAttsPower >= sizeof(unsigned int) * 8 /* bits per byte */) { + return XML_ERROR_NO_MEMORY; + } + + unsigned int nsAttsSize = 1u << parser->m_nsAttsPower; + unsigned char oldNsAttsPower = parser->m_nsAttsPower; /* size of hash table must be at least 2 * (# of prefixed attributes) */ - if ((nPrefixes << 1) >> nsAttsPower) { /* true for nsAttsPower = 0 */ + if ((nPrefixes << 1) + >> parser->m_nsAttsPower) { /* true for m_nsAttsPower = 0 */ NS_ATT *temp; /* hash table size must also be a power of 2 and >= 8 */ - while (nPrefixes >> nsAttsPower++); - if (nsAttsPower < 3) - nsAttsPower = 3; - nsAttsSize = (int)1 << nsAttsPower; - temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT)); - if (!temp) + while (nPrefixes >> parser->m_nsAttsPower++) + ; + if (parser->m_nsAttsPower < 3) + parser->m_nsAttsPower = 3; + + /* Detect and prevent invalid shift */ + if (parser->m_nsAttsPower >= sizeof(nsAttsSize) * 8 /* bits per byte */) { + /* Restore actual size of memory in m_nsAtts */ + parser->m_nsAttsPower = oldNsAttsPower; return XML_ERROR_NO_MEMORY; - nsAtts = temp; - version = 0; /* force re-initialization of nsAtts hash table */ + } + + nsAttsSize = 1u << parser->m_nsAttsPower; + + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if (nsAttsSize > (size_t)(-1) / sizeof(NS_ATT)) { + /* Restore actual size of memory in m_nsAtts */ + parser->m_nsAttsPower = oldNsAttsPower; + return XML_ERROR_NO_MEMORY; + } +#endif + + temp = (NS_ATT *)REALLOC(parser, parser->m_nsAtts, + nsAttsSize * sizeof(NS_ATT)); + if (! temp) { + /* Restore actual size of memory in m_nsAtts */ + parser->m_nsAttsPower = oldNsAttsPower; + return XML_ERROR_NO_MEMORY; + } + parser->m_nsAtts = temp; + version = 0; /* force re-initialization of m_nsAtts hash table */ } - /* using a version flag saves us from initializing nsAtts every time */ - if (!version) { /* initialize version flags when version wraps around */ + /* using a version flag saves us from initializing m_nsAtts every time */ + if (! version) { /* initialize version flags when version wraps around */ version = INIT_ATTS_VERSION; - for (j = nsAttsSize; j != 0; ) - nsAtts[--j].version = version; + for (j = nsAttsSize; j != 0;) + parser->m_nsAtts[--j].version = version; } - nsAttsVersion = --version; + parser->m_nsAttsVersion = --version; /* expand prefixed names and check for duplicates */ for (; i < attIndex; i += 2) { const XML_Char *s = appAtts[i]; - if (s[-1] == 2) { /* prefixed */ + if (s[-1] == 2) { /* prefixed */ ATTRIBUTE_ID *id; const BINDING *b; - unsigned long uriHash = hash_secret_salt; - ((XML_Char *)s)[-1] = 0; /* clear flag */ + unsigned long uriHash; + struct siphash sip_state; + struct sipkey sip_key; + + copy_salt_to_sipkey(parser, &sip_key); + sip24_init(&sip_state, &sip_key); + + ((XML_Char *)s)[-1] = 0; /* clear flag */ id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0); - if (!id || !id->prefix) - return XML_ERROR_NO_MEMORY; + if (! id || ! id->prefix) { + /* This code is walking through the appAtts array, dealing + * with (in this case) a prefixed attribute name. To be in + * the array, the attribute must have already been bound, so + * has to have passed through the hash table lookup once + * already. That implies that an entry for it already + * exists, so the lookup above will return a pointer to + * already allocated memory. There is no opportunaity for + * the allocator to fail, so the condition above cannot be + * fulfilled. + * + * Since it is difficult to be certain that the above + * analysis is complete, we retain the test and merely + * remove the code from coverage tests. + */ + return XML_ERROR_NO_MEMORY; /* LCOV_EXCL_LINE */ + } b = id->prefix->binding; - if (!b) + if (! b) return XML_ERROR_UNBOUND_PREFIX; - /* as we expand the name we also calculate its hash value */ for (j = 0; j < b->uriLen; j++) { const XML_Char c = b->uri[j]; - if (!poolAppendChar(&tempPool, c)) + if (! poolAppendChar(&parser->m_tempPool, c)) return XML_ERROR_NO_MEMORY; - uriHash = CHAR_HASH(uriHash, c); } + + sip24_update(&sip_state, b->uri, b->uriLen * sizeof(XML_Char)); + while (*s++ != XML_T(ASCII_COLON)) ; - do { /* copies null terminator */ - const XML_Char c = *s; - if (!poolAppendChar(&tempPool, *s)) + + sip24_update(&sip_state, s, keylen(s) * sizeof(XML_Char)); + + do { /* copies null terminator */ + if (! poolAppendChar(&parser->m_tempPool, *s)) return XML_ERROR_NO_MEMORY; - uriHash = CHAR_HASH(uriHash, c); } while (*s++); + uriHash = (unsigned long)sip24_final(&sip_state); + { /* Check hash table for duplicate of expanded name (uriName). Derived from code in lookup(parser, HASH_TABLE *table, ...). */ unsigned char step = 0; unsigned long mask = nsAttsSize - 1; - j = uriHash & mask; /* index into hash table */ - while (nsAtts[j].version == version) { + j = uriHash & mask; /* index into hash table */ + while (parser->m_nsAtts[j].version == version) { /* for speed we compare stored hash values first */ - if (uriHash == nsAtts[j].hash) { - const XML_Char *s1 = poolStart(&tempPool); - const XML_Char *s2 = nsAtts[j].uriName; + if (uriHash == parser->m_nsAtts[j].hash) { + const XML_Char *s1 = poolStart(&parser->m_tempPool); + const XML_Char *s2 = parser->m_nsAtts[j].uriName; /* s1 is null terminated, but not s2 */ - for (; *s1 == *s2 && *s1 != 0; s1++, s2++); + for (; *s1 == *s2 && *s1 != 0; s1++, s2++) + ; if (*s1 == 0) return XML_ERROR_DUPLICATE_ATTRIBUTE; } - if (!step) - step = PROBE_STEP(uriHash, mask, nsAttsPower); + if (! step) + step = PROBE_STEP(uriHash, mask, parser->m_nsAttsPower); j < step ? (j += nsAttsSize - step) : (j -= step); } } - if (ns_triplets) { /* append namespace separator and prefix */ - tempPool.ptr[-1] = namespaceSeparator; + if (parser->m_ns_triplets) { /* append namespace separator and prefix */ + parser->m_tempPool.ptr[-1] = parser->m_namespaceSeparator; s = b->prefix->name; do { - if (!poolAppendChar(&tempPool, *s)) + if (! poolAppendChar(&parser->m_tempPool, *s)) return XML_ERROR_NO_MEMORY; } while (*s++); } /* store expanded name in attribute list */ - s = poolStart(&tempPool); - poolFinish(&tempPool); + s = poolStart(&parser->m_tempPool); + poolFinish(&parser->m_tempPool); appAtts[i] = s; /* fill empty slot with new version, uriName and hash value */ - nsAtts[j].version = version; - nsAtts[j].hash = uriHash; - nsAtts[j].uriName = s; + parser->m_nsAtts[j].version = version; + parser->m_nsAtts[j].hash = uriHash; + parser->m_nsAtts[j].uriName = s; - if (!--nPrefixes) { + if (! --nPrefixes) { i += 2; break; } - } - else /* not prefixed */ - ((XML_Char *)s)[-1] = 0; /* clear flag */ + } else /* not prefixed */ + ((XML_Char *)s)[-1] = 0; /* clear flag */ } } /* clear flags for the remaining attributes */ @@ -3030,88 +3635,219 @@ storeAtts(XML_Parser parser, const ENCODING *enc, for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding) binding->attId->name[-1] = 0; - if (!ns) + if (! parser->m_ns) return XML_ERROR_NONE; /* expand the element type name */ if (elementType->prefix) { binding = elementType->prefix->binding; - if (!binding) + if (! binding) return XML_ERROR_UNBOUND_PREFIX; localPart = tagNamePtr->str; while (*localPart++ != XML_T(ASCII_COLON)) ; - } - else if (dtd->defaultPrefix.binding) { + } else if (dtd->defaultPrefix.binding) { binding = dtd->defaultPrefix.binding; localPart = tagNamePtr->str; - } - else + } else return XML_ERROR_NONE; prefixLen = 0; - if (ns_triplets && binding->prefix->name) { + if (parser->m_ns_triplets && binding->prefix->name) { for (; binding->prefix->name[prefixLen++];) - ; /* prefixLen includes null terminator */ + ; /* prefixLen includes null terminator */ } tagNamePtr->localPart = localPart; tagNamePtr->uriLen = binding->uriLen; tagNamePtr->prefix = binding->prefix->name; tagNamePtr->prefixLen = prefixLen; for (i = 0; localPart[i++];) - ; /* i includes null terminator */ + ; /* i includes null terminator */ + + /* Detect and prevent integer overflow */ + if (binding->uriLen > INT_MAX - prefixLen + || i > INT_MAX - (binding->uriLen + prefixLen)) { + return XML_ERROR_NO_MEMORY; + } + n = i + binding->uriLen + prefixLen; if (n > binding->uriAlloc) { TAG *p; - uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char)); - if (!uri) + + /* Detect and prevent integer overflow */ + if (n > INT_MAX - EXPAND_SPARE) { + return XML_ERROR_NO_MEMORY; + } + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if ((unsigned)(n + EXPAND_SPARE) > (size_t)(-1) / sizeof(XML_Char)) { + return XML_ERROR_NO_MEMORY; + } +#endif + + uri = (XML_Char *)MALLOC(parser, (n + EXPAND_SPARE) * sizeof(XML_Char)); + if (! uri) return XML_ERROR_NO_MEMORY; binding->uriAlloc = n + EXPAND_SPARE; memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char)); - for (p = tagStack; p; p = p->parent) + for (p = parser->m_tagStack; p; p = p->parent) if (p->name.str == binding->uri) p->name.str = uri; - FREE(binding->uri); + FREE(parser, binding->uri); binding->uri = uri; } - /* if namespaceSeparator != '\0' then uri includes it already */ + /* if m_namespaceSeparator != '\0' then uri includes it already */ uri = binding->uri + binding->uriLen; memcpy(uri, localPart, i * sizeof(XML_Char)); /* we always have a namespace separator between localPart and prefix */ if (prefixLen) { uri += i - 1; - *uri = namespaceSeparator; /* replace null terminator */ + *uri = parser->m_namespaceSeparator; /* replace null terminator */ memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char)); } tagNamePtr->str = binding->uri; return XML_ERROR_NONE; } +static XML_Bool +is_rfc3986_uri_char(XML_Char candidate) { + // For the RFC 3986 ANBF grammar see + // https://datatracker.ietf.org/doc/html/rfc3986#appendix-A + + switch (candidate) { + // From rule "ALPHA" (uppercase half) + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + + // From rule "ALPHA" (lowercase half) + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + + // From rule "DIGIT" + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + + // From rule "pct-encoded" + case '%': + + // From rule "unreserved" + case '-': + case '.': + case '_': + case '~': + + // From rule "gen-delims" + case ':': + case '/': + case '?': + case '#': + case '[': + case ']': + case '@': + + // From rule "sub-delims" + case '!': + case '$': + case '&': + case '\'': + case '(': + case ')': + case '*': + case '+': + case ',': + case ';': + case '=': + return XML_TRUE; + + default: + return XML_FALSE; + } +} + /* addBinding() overwrites the value of prefix->binding without checking. Therefore one must keep track of the old value outside of addBinding(). */ static enum XML_Error addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, - const XML_Char *uri, BINDING **bindingsPtr) -{ - static const XML_Char xmlNamespace[] = { - ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, - ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, - ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, - ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, ASCII_SLASH, - ASCII_n, ASCII_a, ASCII_m, ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c, - ASCII_e, '\0' - }; - static const int xmlLen = - (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1; - static const XML_Char xmlnsNamespace[] = { - ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, - ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, - ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_2, ASCII_0, ASCII_0, - ASCII_0, ASCII_SLASH, ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s, - ASCII_SLASH, '\0' - }; - static const int xmlnsLen = - (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1; + const XML_Char *uri, BINDING **bindingsPtr) { + // "http://www.w3.org/XML/1998/namespace" + static const XML_Char xmlNamespace[] + = {ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, + ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, + ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, + ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, + ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, + ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, + ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c, + ASCII_e, '\0'}; + static const int xmlLen = (int)sizeof(xmlNamespace) / sizeof(XML_Char) - 1; + // "http://www.w3.org/2000/xmlns/" + static const XML_Char xmlnsNamespace[] + = {ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, + ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, + ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, + ASCII_2, ASCII_0, ASCII_0, ASCII_0, ASCII_SLASH, ASCII_x, + ASCII_m, ASCII_l, ASCII_n, ASCII_s, ASCII_SLASH, '\0'}; + static const int xmlnsLen + = (int)sizeof(xmlnsNamespace) / sizeof(XML_Char) - 1; XML_Bool mustBeXML = XML_FALSE; XML_Bool isXML = XML_TRUE; @@ -3124,14 +3860,11 @@ addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, if (*uri == XML_T('\0') && prefix->name) return XML_ERROR_UNDECLARING_PREFIX; - if (prefix->name - && prefix->name[0] == XML_T(ASCII_x) + if (prefix->name && prefix->name[0] == XML_T(ASCII_x) && prefix->name[1] == XML_T(ASCII_m) && prefix->name[2] == XML_T(ASCII_l)) { - /* Not allowed to bind xmlns */ - if (prefix->name[3] == XML_T(ASCII_n) - && prefix->name[4] == XML_T(ASCII_s) + if (prefix->name[3] == XML_T(ASCII_n) && prefix->name[4] == XML_T(ASCII_s) && prefix->name[5] == XML_T('\0')) return XML_ERROR_RESERVED_PREFIX_XMLNS; @@ -3143,9 +3876,32 @@ addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len])) isXML = XML_FALSE; - if (!mustBeXML && isXMLNS + if (! mustBeXML && isXMLNS && (len > xmlnsLen || uri[len] != xmlnsNamespace[len])) isXMLNS = XML_FALSE; + + // NOTE: While Expat does not validate namespace URIs against RFC 3986 + // today (and is not REQUIRED to do so with regard to the XML 1.0 + // namespaces specification) we have to at least make sure, that + // the application on top of Expat (that is likely splitting expanded + // element names ("qualified names") of form + // "[uri sep] local [sep prefix] '\0'" back into 1, 2 or 3 pieces + // in its element handler code) cannot be confused by an attacker + // putting additional namespace separator characters into namespace + // declarations. That would be ambiguous and not to be expected. + // + // While the HTML API docs of function XML_ParserCreateNS have been + // advising against use of a namespace separator character that can + // appear in a URI for >20 years now, some widespread applications + // are using URI characters (':' (colon) in particular) for a + // namespace separator, in practice. To keep these applications + // functional, we only reject namespaces URIs containing the + // application-chosen namespace separator if the chosen separator + // is a non-URI character with regard to RFC 3986. + if (parser->m_ns && (uri[len] == parser->m_namespaceSeparator) + && ! is_rfc3986_uri_char(uri[len])) { + return XML_ERROR_SYNTAX; + } } isXML = isXML && len == xmlLen; isXMLNS = isXMLNS && len == xmlnsLen; @@ -3157,49 +3913,79 @@ addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, if (isXMLNS) return XML_ERROR_RESERVED_NAMESPACE_URI; - if (namespaceSeparator) + if (parser->m_namespaceSeparator) len++; - if (freeBindingList) { - b = freeBindingList; + if (parser->m_freeBindingList) { + b = parser->m_freeBindingList; if (len > b->uriAlloc) { - XML_Char *temp = (XML_Char *)REALLOC(b->uri, - sizeof(XML_Char) * (len + EXPAND_SPARE)); + /* Detect and prevent integer overflow */ + if (len > INT_MAX - EXPAND_SPARE) { + return XML_ERROR_NO_MEMORY; + } + + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if ((unsigned)(len + EXPAND_SPARE) > (size_t)(-1) / sizeof(XML_Char)) { + return XML_ERROR_NO_MEMORY; + } +#endif + + XML_Char *temp = (XML_Char *)REALLOC( + parser, b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); if (temp == NULL) return XML_ERROR_NO_MEMORY; b->uri = temp; b->uriAlloc = len + EXPAND_SPARE; } - freeBindingList = b->nextTagBinding; - } - else { - b = (BINDING *)MALLOC(sizeof(BINDING)); - if (!b) + parser->m_freeBindingList = b->nextTagBinding; + } else { + b = (BINDING *)MALLOC(parser, sizeof(BINDING)); + if (! b) return XML_ERROR_NO_MEMORY; - b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE)); - if (!b->uri) { - FREE(b); + + /* Detect and prevent integer overflow */ + if (len > INT_MAX - EXPAND_SPARE) { + return XML_ERROR_NO_MEMORY; + } + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if ((unsigned)(len + EXPAND_SPARE) > (size_t)(-1) / sizeof(XML_Char)) { + return XML_ERROR_NO_MEMORY; + } +#endif + + b->uri + = (XML_Char *)MALLOC(parser, sizeof(XML_Char) * (len + EXPAND_SPARE)); + if (! b->uri) { + FREE(parser, b); return XML_ERROR_NO_MEMORY; } b->uriAlloc = len + EXPAND_SPARE; } b->uriLen = len; memcpy(b->uri, uri, len * sizeof(XML_Char)); - if (namespaceSeparator) - b->uri[len - 1] = namespaceSeparator; + if (parser->m_namespaceSeparator) + b->uri[len - 1] = parser->m_namespaceSeparator; b->prefix = prefix; b->attId = attId; b->prevPrefixBinding = prefix->binding; /* NULL binding when default namespace undeclared */ - if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix) + if (*uri == XML_T('\0') && prefix == &parser->m_dtd->defaultPrefix) prefix->binding = NULL; else prefix->binding = b; b->nextTagBinding = *bindingsPtr; *bindingsPtr = b; /* if attId == NULL then we are not starting a namespace scope */ - if (attId && startNamespaceDeclHandler) - startNamespaceDeclHandler(handlerArg, prefix->name, - prefix->binding ? uri : 0); + if (attId && parser->m_startNamespaceDeclHandler) + parser->m_startNamespaceDeclHandler(parser->m_handlerArg, prefix->name, + prefix->binding ? uri : 0); return XML_ERROR_NONE; } @@ -3207,22 +3993,19 @@ addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, the whole file is parsed with one call. */ static enum XML_Error PTRCALL -cdataSectionProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doCdataSection(parser, encoding, &start, end, - endPtr, (XML_Bool)!ps_finalBuffer); +cdataSectionProcessor(XML_Parser parser, const char *start, const char *end, + const char **endPtr) { + enum XML_Error result = doCdataSection( + parser, parser->m_encoding, &start, end, endPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_ACCOUNT_DIRECT); if (result != XML_ERROR_NONE) return result; if (start) { - if (parentParser) { /* we are parsing an external entity */ - processor = externalEntityContentProcessor; + if (parser->m_parentParser) { /* we are parsing an external entity */ + parser->m_processor = externalEntityContentProcessor; return externalEntityContentProcessor(parser, start, end, endPtr); - } - else { - processor = contentProcessor; + } else { + parser->m_processor = contentProcessor; return contentProcessor(parser, start, end, endPtr); } } @@ -3233,82 +4016,82 @@ cdataSectionProcessor(XML_Parser parser, the section is not yet closed. */ static enum XML_Error -doCdataSection(XML_Parser parser, - const ENCODING *enc, - const char **startPtr, - const char *end, - const char **nextPtr, - XML_Bool haveMore) -{ +doCdataSection(XML_Parser parser, const ENCODING *enc, const char **startPtr, + const char *end, const char **nextPtr, XML_Bool haveMore, + enum XML_Account account) { const char *s = *startPtr; const char **eventPP; const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; + if (enc == parser->m_encoding) { + eventPP = &parser->m_eventPtr; *eventPP = s; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); + eventEndPP = &parser->m_eventEndPtr; + } else { + eventPP = &(parser->m_openInternalEntities->internalEventPtr); + eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); } *eventPP = s; *startPtr = NULL; for (;;) { - const char *next; + const char *next = s; /* in case of XML_TOK_NONE or XML_TOK_PARTIAL */ int tok = XmlCdataSectionTok(enc, s, end, &next); +#ifdef XML_DTD + if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, account)) { + accountingOnAbort(parser); + return XML_ERROR_AMPLIFICATION_LIMIT_BREACH; + } +#else + UNUSED_P(account); +#endif *eventEndPP = next; switch (tok) { case XML_TOK_CDATA_SECT_CLOSE: - if (endCdataSectionHandler) - endCdataSectionHandler(handlerArg); -#if 0 + if (parser->m_endCdataSectionHandler) + parser->m_endCdataSectionHandler(parser->m_handlerArg); + /* BEGIN disabled code */ /* see comment under XML_TOK_CDATA_SECT_OPEN */ - else if (characterDataHandler) - characterDataHandler(handlerArg, dataBuf, 0); -#endif - else if (defaultHandler) + else if (0 && parser->m_characterDataHandler) + parser->m_characterDataHandler(parser->m_handlerArg, parser->m_dataBuf, + 0); + /* END disabled code */ + else if (parser->m_defaultHandler) reportDefault(parser, enc, s, next); *startPtr = next; *nextPtr = next; - if (ps_parsing == XML_FINISHED) + if (parser->m_parsingStatus.parsing == XML_FINISHED) return XML_ERROR_ABORTED; else return XML_ERROR_NONE; case XML_TOK_DATA_NEWLINE: - if (characterDataHandler) { + if (parser->m_characterDataHandler) { XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) + parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); + } else if (parser->m_defaultHandler) reportDefault(parser, enc, s, next); break; - case XML_TOK_DATA_CHARS: - { - XML_CharacterDataHandler charDataHandler = characterDataHandler; - if (charDataHandler) { - if (MUST_CONVERT(enc, s)) { - for (;;) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - const enum XML_Convert_Result convert_res = XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = next; - charDataHandler(handlerArg, dataBuf, - (int)(dataPtr - (ICHAR *)dataBuf)); - if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) - break; - *eventPP = s; - } + case XML_TOK_DATA_CHARS: { + XML_CharacterDataHandler charDataHandler = parser->m_characterDataHandler; + if (charDataHandler) { + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; + const enum XML_Convert_Result convert_res = XmlConvert( + enc, &s, next, &dataPtr, (ICHAR *)parser->m_dataBufEnd); + *eventEndPP = next; + charDataHandler(parser->m_handlerArg, parser->m_dataBuf, + (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); + if ((convert_res == XML_CONVERT_COMPLETED) + || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + break; + *eventPP = s; } - else - charDataHandler(handlerArg, - (XML_Char *)s, - (int)((XML_Char *)next - (XML_Char *)s)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; + } else + charDataHandler(parser->m_handlerArg, (XML_Char *)s, + (int)((XML_Char *)next - (XML_Char *)s)); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + } break; case XML_TOK_INVALID: *eventPP = next; return XML_ERROR_INVALID_TOKEN; @@ -3326,18 +4109,26 @@ doCdataSection(XML_Parser parser, } return XML_ERROR_UNCLOSED_CDATA_SECTION; default: + /* Every token returned by XmlCdataSectionTok() has its own + * explicit case, so this default case will never be executed. + * We retain it as a safety net and exclude it from the coverage + * statistics. + * + * LCOV_EXCL_START + */ *eventPP = next; return XML_ERROR_UNEXPECTED_STATE; + /* LCOV_EXCL_STOP */ } *eventPP = s = next; - switch (ps_parsing) { + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: *nextPtr = next; return XML_ERROR_NONE; case XML_FINISHED: return XML_ERROR_ABORTED; - default: ; + default:; } } /* not reached */ @@ -3349,17 +4140,15 @@ doCdataSection(XML_Parser parser, the whole file is parsed with one call. */ static enum XML_Error PTRCALL -ignoreSectionProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doIgnoreSection(parser, encoding, &start, end, - endPtr, (XML_Bool)!ps_finalBuffer); +ignoreSectionProcessor(XML_Parser parser, const char *start, const char *end, + const char **endPtr) { + enum XML_Error result + = doIgnoreSection(parser, parser->m_encoding, &start, end, endPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer); if (result != XML_ERROR_NONE) return result; if (start) { - processor = prologProcessor; + parser->m_processor = prologProcessor; return prologProcessor(parser, start, end, endPtr); } return result; @@ -3369,38 +4158,51 @@ ignoreSectionProcessor(XML_Parser parser, if the section is not yet closed. */ static enum XML_Error -doIgnoreSection(XML_Parser parser, - const ENCODING *enc, - const char **startPtr, - const char *end, - const char **nextPtr, - XML_Bool haveMore) -{ - const char *next; +doIgnoreSection(XML_Parser parser, const ENCODING *enc, const char **startPtr, + const char *end, const char **nextPtr, XML_Bool haveMore) { + const char *next = *startPtr; /* in case of XML_TOK_NONE or XML_TOK_PARTIAL */ int tok; const char *s = *startPtr; const char **eventPP; const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; + if (enc == parser->m_encoding) { + eventPP = &parser->m_eventPtr; *eventPP = s; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); + eventEndPP = &parser->m_eventEndPtr; + } else { + /* It's not entirely clear, but it seems the following two lines + * of code cannot be executed. The only occasions on which 'enc' + * is not 'encoding' are when this function is called + * from the internal entity processing, and IGNORE sections are an + * error in internal entities. + * + * Since it really isn't clear that this is true, we keep the code + * and just remove it from our coverage tests. + * + * LCOV_EXCL_START + */ + eventPP = &(parser->m_openInternalEntities->internalEventPtr); + eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); + /* LCOV_EXCL_STOP */ } *eventPP = s; *startPtr = NULL; tok = XmlIgnoreSectionTok(enc, s, end, &next); +# ifdef XML_DTD + if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, + XML_ACCOUNT_DIRECT)) { + accountingOnAbort(parser); + return XML_ERROR_AMPLIFICATION_LIMIT_BREACH; + } +# endif *eventEndPP = next; switch (tok) { case XML_TOK_IGNORE_SECT: - if (defaultHandler) + if (parser->m_defaultHandler) reportDefault(parser, enc, s, next); *startPtr = next; *nextPtr = next; - if (ps_parsing == XML_FINISHED) + if (parser->m_parsingStatus.parsing == XML_FINISHED) return XML_ERROR_ABORTED; else return XML_ERROR_NONE; @@ -3421,8 +4223,16 @@ doIgnoreSection(XML_Parser parser, } return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */ default: + /* All of the tokens that XmlIgnoreSectionTok() returns have + * explicit cases to handle them, so this default case is never + * executed. We keep it as a safety net anyway, and remove it + * from our test coverage statistics. + * + * LCOV_EXCL_START + */ *eventPP = next; return XML_ERROR_UNEXPECTED_STATE; + /* LCOV_EXCL_STOP */ } /* not reached */ } @@ -3430,127 +4240,130 @@ doIgnoreSection(XML_Parser parser, #endif /* XML_DTD */ static enum XML_Error -initializeEncoding(XML_Parser parser) -{ +initializeEncoding(XML_Parser parser) { const char *s; #ifdef XML_UNICODE char encodingBuf[128]; - if (!protocolEncodingName) + /* See comments about `protocolEncodingName` in parserInit() */ + if (! parser->m_protocolEncodingName) s = NULL; else { int i; - for (i = 0; protocolEncodingName[i]; i++) { + for (i = 0; parser->m_protocolEncodingName[i]; i++) { if (i == sizeof(encodingBuf) - 1 - || (protocolEncodingName[i] & ~0x7f) != 0) { + || (parser->m_protocolEncodingName[i] & ~0x7f) != 0) { encodingBuf[0] = '\0'; break; } - encodingBuf[i] = (char)protocolEncodingName[i]; + encodingBuf[i] = (char)parser->m_protocolEncodingName[i]; } encodingBuf[i] = '\0'; s = encodingBuf; } #else - s = protocolEncodingName; + s = parser->m_protocolEncodingName; #endif - if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s)) + if ((parser->m_ns ? XmlInitEncodingNS : XmlInitEncoding)( + &parser->m_initEncoding, &parser->m_encoding, s)) return XML_ERROR_NONE; - return handleUnknownEncoding(parser, protocolEncodingName); + return handleUnknownEncoding(parser, parser->m_protocolEncodingName); } static enum XML_Error -processXmlDecl(XML_Parser parser, int isGeneralTextEntity, - const char *s, const char *next) -{ +processXmlDecl(XML_Parser parser, int isGeneralTextEntity, const char *s, + const char *next) { const char *encodingName = NULL; const XML_Char *storedEncName = NULL; const ENCODING *newEncoding = NULL; const char *version = NULL; - const char *versionend; + const char *versionend = NULL; const XML_Char *storedversion = NULL; int standalone = -1; - if (!(ns - ? XmlParseXmlDeclNS - : XmlParseXmlDecl)(isGeneralTextEntity, - encoding, - s, - next, - &eventPtr, - &version, - &versionend, - &encodingName, - &newEncoding, - &standalone)) { + +#ifdef XML_DTD + if (! accountingDiffTolerated(parser, XML_TOK_XML_DECL, s, next, __LINE__, + XML_ACCOUNT_DIRECT)) { + accountingOnAbort(parser); + return XML_ERROR_AMPLIFICATION_LIMIT_BREACH; + } +#endif + + if (! (parser->m_ns ? XmlParseXmlDeclNS : XmlParseXmlDecl)( + isGeneralTextEntity, parser->m_encoding, s, next, &parser->m_eventPtr, + &version, &versionend, &encodingName, &newEncoding, &standalone)) { if (isGeneralTextEntity) return XML_ERROR_TEXT_DECL; else return XML_ERROR_XML_DECL; } - if (!isGeneralTextEntity && standalone == 1) { - _dtd->standalone = XML_TRUE; + if (! isGeneralTextEntity && standalone == 1) { + parser->m_dtd->standalone = XML_TRUE; #ifdef XML_DTD - if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) - paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; + if (parser->m_paramEntityParsing + == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) + parser->m_paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; #endif /* XML_DTD */ } - if (xmlDeclHandler) { + if (parser->m_xmlDeclHandler) { if (encodingName != NULL) { - storedEncName = poolStoreString(&temp2Pool, - encoding, - encodingName, - encodingName - + XmlNameLength(encoding, encodingName)); - if (!storedEncName) - return XML_ERROR_NO_MEMORY; - poolFinish(&temp2Pool); + storedEncName = poolStoreString( + &parser->m_temp2Pool, parser->m_encoding, encodingName, + encodingName + XmlNameLength(parser->m_encoding, encodingName)); + if (! storedEncName) + return XML_ERROR_NO_MEMORY; + poolFinish(&parser->m_temp2Pool); } if (version) { - storedversion = poolStoreString(&temp2Pool, - encoding, - version, - versionend - encoding->minBytesPerChar); - if (!storedversion) + storedversion + = poolStoreString(&parser->m_temp2Pool, parser->m_encoding, version, + versionend - parser->m_encoding->minBytesPerChar); + if (! storedversion) return XML_ERROR_NO_MEMORY; } - xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone); - } - else if (defaultHandler) - reportDefault(parser, encoding, s, next); - if (protocolEncodingName == NULL) { + parser->m_xmlDeclHandler(parser->m_handlerArg, storedversion, storedEncName, + standalone); + } else if (parser->m_defaultHandler) + reportDefault(parser, parser->m_encoding, s, next); + if (parser->m_protocolEncodingName == NULL) { if (newEncoding) { - if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) { - eventPtr = encodingName; + /* Check that the specified encoding does not conflict with what + * the parser has already deduced. Do we have the same number + * of bytes in the smallest representation of a character? If + * this is UTF-16, is it the same endianness? + */ + if (newEncoding->minBytesPerChar != parser->m_encoding->minBytesPerChar + || (newEncoding->minBytesPerChar == 2 + && newEncoding != parser->m_encoding)) { + parser->m_eventPtr = encodingName; return XML_ERROR_INCORRECT_ENCODING; } - encoding = newEncoding; - } - else if (encodingName) { + parser->m_encoding = newEncoding; + } else if (encodingName) { enum XML_Error result; - if (!storedEncName) { + if (! storedEncName) { storedEncName = poolStoreString( - &temp2Pool, encoding, encodingName, - encodingName + XmlNameLength(encoding, encodingName)); - if (!storedEncName) + &parser->m_temp2Pool, parser->m_encoding, encodingName, + encodingName + XmlNameLength(parser->m_encoding, encodingName)); + if (! storedEncName) return XML_ERROR_NO_MEMORY; } result = handleUnknownEncoding(parser, storedEncName); - poolClear(&temp2Pool); + poolClear(&parser->m_temp2Pool); if (result == XML_ERROR_UNKNOWN_ENCODING) - eventPtr = encodingName; + parser->m_eventPtr = encodingName; return result; } } if (storedEncName || storedversion) - poolClear(&temp2Pool); + poolClear(&parser->m_temp2Pool); return XML_ERROR_NONE; } static enum XML_Error -handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) -{ - if (unknownEncodingHandler) { +handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) { + if (parser->m_unknownEncodingHandler) { XML_Encoding info; int i; for (i = 0; i < 256; i++) @@ -3558,25 +4371,21 @@ handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) info.convert = NULL; info.data = NULL; info.release = NULL; - if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName, - &info)) { + if (parser->m_unknownEncodingHandler(parser->m_unknownEncodingHandlerData, + encodingName, &info)) { ENCODING *enc; - unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding()); - if (!unknownEncodingMem) { + parser->m_unknownEncodingMem = MALLOC(parser, XmlSizeOfUnknownEncoding()); + if (! parser->m_unknownEncodingMem) { if (info.release) info.release(info.data); return XML_ERROR_NO_MEMORY; } - enc = (ns - ? XmlInitUnknownEncodingNS - : XmlInitUnknownEncoding)(unknownEncodingMem, - info.map, - info.convert, - info.data); + enc = (parser->m_ns ? XmlInitUnknownEncodingNS : XmlInitUnknownEncoding)( + parser->m_unknownEncodingMem, info.map, info.convert, info.data); if (enc) { - unknownEncodingData = info.data; - unknownEncodingRelease = info.release; - encoding = enc; + parser->m_unknownEncodingData = info.data; + parser->m_unknownEncodingRelease = info.release; + parser->m_encoding = enc; return XML_ERROR_NONE; } } @@ -3587,60 +4396,54 @@ handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) } static enum XML_Error PTRCALL -prologInitProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ +prologInitProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { enum XML_Error result = initializeEncoding(parser); if (result != XML_ERROR_NONE) return result; - processor = prologProcessor; + parser->m_processor = prologProcessor; return prologProcessor(parser, s, end, nextPtr); } #ifdef XML_DTD static enum XML_Error PTRCALL -externalParEntInitProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ +externalParEntInitProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { enum XML_Error result = initializeEncoding(parser); if (result != XML_ERROR_NONE) return result; /* we know now that XML_Parse(Buffer) has been called, so we consider the external parameter entity read */ - _dtd->paramEntityRead = XML_TRUE; + parser->m_dtd->paramEntityRead = XML_TRUE; - if (prologState.inEntityValue) { - processor = entityValueInitProcessor; + if (parser->m_prologState.inEntityValue) { + parser->m_processor = entityValueInitProcessor; return entityValueInitProcessor(parser, s, end, nextPtr); - } - else { - processor = externalParEntProcessor; + } else { + parser->m_processor = externalParEntProcessor; return externalParEntProcessor(parser, s, end, nextPtr); } } static enum XML_Error PTRCALL -entityValueInitProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ +entityValueInitProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { int tok; const char *start = s; const char *next = start; - eventPtr = start; + parser->m_eventPtr = start; for (;;) { - tok = XmlPrologTok(encoding, start, end, &next); - eventEndPtr = next; + tok = XmlPrologTok(parser->m_encoding, start, end, &next); + /* Note: Except for XML_TOK_BOM below, these bytes are accounted later in: + - storeEntityValue + - processXmlDecl + */ + parser->m_eventEndPtr = next; if (tok <= 0) { - if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { *nextPtr = s; return XML_ERROR_NONE; } @@ -3651,29 +4454,28 @@ entityValueInitProcessor(XML_Parser parser, return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_NONE: /* start == end */ + case XML_TOK_NONE: /* start == end */ default: break; } /* found end of entity value - can store it now */ - return storeEntityValue(parser, encoding, s, end); - } - else if (tok == XML_TOK_XML_DECL) { + return storeEntityValue(parser, parser->m_encoding, s, end, + XML_ACCOUNT_DIRECT); + } else if (tok == XML_TOK_XML_DECL) { enum XML_Error result; result = processXmlDecl(parser, 0, start, next); if (result != XML_ERROR_NONE) return result; - switch (ps_parsing) { - case XML_SUSPENDED: - *nextPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: + /* At this point, m_parsingStatus.parsing cannot be XML_SUSPENDED. For + * that to happen, a parameter entity parsing handler must have attempted + * to suspend the parser, which fails and raises an error. The parser can + * be aborted, but can't be suspended. + */ + if (parser->m_parsingStatus.parsing == XML_FINISHED) return XML_ERROR_ABORTED; - default: - *nextPtr = next; - } + *nextPtr = next; /* stop scanning for text declaration - we found one */ - processor = entityValueProcessor; + parser->m_processor = entityValueProcessor; return entityValueProcessor(parser, next, end, nextPtr); } /* If we are at the end of the buffer, this would cause XmlPrologTok to @@ -3683,27 +4485,41 @@ entityValueInitProcessor(XML_Parser parser, then, when this routine is entered the next time, XmlPrologTok will return XML_TOK_INVALID, since the BOM is still in the buffer */ - else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) { + else if (tok == XML_TOK_BOM && next == end + && ! parser->m_parsingStatus.finalBuffer) { +# ifdef XML_DTD + if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, + XML_ACCOUNT_DIRECT)) { + accountingOnAbort(parser); + return XML_ERROR_AMPLIFICATION_LIMIT_BREACH; + } +# endif + *nextPtr = next; return XML_ERROR_NONE; } + /* If we get this token, we have the start of what might be a + normal tag, but not a declaration (i.e. it doesn't begin with + "m_eventPtr = start; } } static enum XML_Error PTRCALL -externalParEntProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ +externalParEntProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { const char *next = s; int tok; - tok = XmlPrologTok(encoding, s, end, &next); + tok = XmlPrologTok(parser->m_encoding, s, end, &next); if (tok <= 0) { - if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { *nextPtr = s; return XML_ERROR_NONE; } @@ -3714,40 +4530,48 @@ externalParEntProcessor(XML_Parser parser, return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_NONE: /* start == end */ + case XML_TOK_NONE: /* start == end */ default: break; } } /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM. However, when parsing an external subset, doProlog will not accept a BOM - as valid, and report a syntax error, so we have to skip the BOM + as valid, and report a syntax error, so we have to skip the BOM, and + account for the BOM bytes. */ else if (tok == XML_TOK_BOM) { + if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, + XML_ACCOUNT_DIRECT)) { + accountingOnAbort(parser); + return XML_ERROR_AMPLIFICATION_LIMIT_BREACH; + } + s = next; - tok = XmlPrologTok(encoding, s, end, &next); + tok = XmlPrologTok(parser->m_encoding, s, end, &next); } - processor = prologProcessor; - return doProlog(parser, encoding, s, end, tok, next, - nextPtr, (XML_Bool)!ps_finalBuffer); + parser->m_processor = prologProcessor; + return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE, + XML_ACCOUNT_DIRECT); } static enum XML_Error PTRCALL -entityValueProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ +entityValueProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { const char *start = s; const char *next = s; - const ENCODING *enc = encoding; + const ENCODING *enc = parser->m_encoding; int tok; for (;;) { tok = XmlPrologTok(enc, start, end, &next); + /* Note: These bytes are accounted later in: + - storeEntityValue + */ if (tok <= 0) { - if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { *nextPtr = s; return XML_ERROR_NONE; } @@ -3758,12 +4582,12 @@ entityValueProcessor(XML_Parser parser, return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_NONE: /* start == end */ + case XML_TOK_NONE: /* start == end */ default: break; } /* found end of entity value - can store it now */ - return storeEntityValue(parser, enc, s, end); + return storeEntityValue(parser, enc, s, end, XML_ACCOUNT_DIRECT); } start = next; } @@ -3772,64 +4596,62 @@ entityValueProcessor(XML_Parser parser, #endif /* XML_DTD */ static enum XML_Error PTRCALL -prologProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ +prologProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { const char *next = s; - int tok = XmlPrologTok(encoding, s, end, &next); - return doProlog(parser, encoding, s, end, tok, next, - nextPtr, (XML_Bool)!ps_finalBuffer); + int tok = XmlPrologTok(parser->m_encoding, s, end, &next); + return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE, + XML_ACCOUNT_DIRECT); } static enum XML_Error -doProlog(XML_Parser parser, - const ENCODING *enc, - const char *s, - const char *end, - int tok, - const char *next, - const char **nextPtr, - XML_Bool haveMore) -{ +doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, + int tok, const char *next, const char **nextPtr, XML_Bool haveMore, + XML_Bool allowClosingDoctype, enum XML_Account account) { #ifdef XML_DTD - static const XML_Char externalSubsetName[] = { ASCII_HASH , '\0' }; + static const XML_Char externalSubsetName[] = {ASCII_HASH, '\0'}; #endif /* XML_DTD */ - static const XML_Char atypeCDATA[] = - { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; - static const XML_Char atypeID[] = { ASCII_I, ASCII_D, '\0' }; - static const XML_Char atypeIDREF[] = - { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; - static const XML_Char atypeIDREFS[] = - { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; - static const XML_Char atypeENTITY[] = - { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; - static const XML_Char atypeENTITIES[] = { ASCII_E, ASCII_N, - ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' }; - static const XML_Char atypeNMTOKEN[] = { - ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; - static const XML_Char atypeNMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T, - ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' }; - static const XML_Char notationPrefix[] = { ASCII_N, ASCII_O, ASCII_T, - ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0' }; - static const XML_Char enumValueSep[] = { ASCII_PIPE, '\0' }; - static const XML_Char enumValueStart[] = { ASCII_LPAREN, '\0' }; + static const XML_Char atypeCDATA[] + = {ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0'}; + static const XML_Char atypeID[] = {ASCII_I, ASCII_D, '\0'}; + static const XML_Char atypeIDREF[] + = {ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0'}; + static const XML_Char atypeIDREFS[] + = {ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0'}; + static const XML_Char atypeENTITY[] + = {ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0'}; + static const XML_Char atypeENTITIES[] + = {ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, + ASCII_I, ASCII_E, ASCII_S, '\0'}; + static const XML_Char atypeNMTOKEN[] + = {ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0'}; + static const XML_Char atypeNMTOKENS[] + = {ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, + ASCII_E, ASCII_N, ASCII_S, '\0'}; + static const XML_Char notationPrefix[] + = {ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, + ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0'}; + static const XML_Char enumValueSep[] = {ASCII_PIPE, '\0'}; + static const XML_Char enumValueStart[] = {ASCII_LPAREN, '\0'}; + +#ifndef XML_DTD + UNUSED_P(account); +#endif /* save one level of indirection */ - DTD * const dtd = _dtd; + DTD *const dtd = parser->m_dtd; const char **eventPP; const char **eventEndPP; enum XML_Content_Quant quant; - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); + if (enc == parser->m_encoding) { + eventPP = &parser->m_eventPtr; + eventEndPP = &parser->m_eventEndPtr; + } else { + eventPP = &(parser->m_openInternalEntities->internalEventPtr); + eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); } for (;;) { @@ -3856,7 +4678,8 @@ doProlog(XML_Parser parser, case XML_TOK_NONE: #ifdef XML_DTD /* for internal PE NOT referenced between declarations */ - if (enc != encoding && !openInternalEntities->betweenDecl) { + if (enc != parser->m_encoding + && ! parser->m_openInternalEntities->betweenDecl) { *nextPtr = s; return XML_ERROR_NONE; } @@ -3864,8 +4687,8 @@ doProlog(XML_Parser parser, complete markup, not only for external PEs, but also for internal PEs if the reference occurs between declarations. */ - if (isParamEntity || enc != encoding) { - if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc) + if (parser->m_isParamEntity || enc != parser->m_encoding) { + if (XmlTokenRole(&parser->m_prologState, XML_TOK_NONE, end, end, enc) == XML_ROLE_ERROR) return XML_ERROR_INCOMPLETE_PE; *nextPtr = s; @@ -3879,142 +4702,161 @@ doProlog(XML_Parser parser, break; } } - role = XmlTokenRole(&prologState, tok, s, next, enc); + role = XmlTokenRole(&parser->m_prologState, tok, s, next, enc); +#ifdef XML_DTD switch (role) { - case XML_ROLE_XML_DECL: - { - enum XML_Error result = processXmlDecl(parser, 0, s, next); - if (result != XML_ERROR_NONE) - return result; - enc = encoding; - handleDefault = XML_FALSE; - } + case XML_ROLE_INSTANCE_START: // bytes accounted in contentProcessor + case XML_ROLE_XML_DECL: // bytes accounted in processXmlDecl + case XML_ROLE_TEXT_DECL: // bytes accounted in processXmlDecl break; + default: + if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, account)) { + accountingOnAbort(parser); + return XML_ERROR_AMPLIFICATION_LIMIT_BREACH; + } + } +#endif + switch (role) { + case XML_ROLE_XML_DECL: { + enum XML_Error result = processXmlDecl(parser, 0, s, next); + if (result != XML_ERROR_NONE) + return result; + enc = parser->m_encoding; + handleDefault = XML_FALSE; + } break; case XML_ROLE_DOCTYPE_NAME: - if (startDoctypeDeclHandler) { - doctypeName = poolStoreString(&tempPool, enc, s, next); - if (!doctypeName) + if (parser->m_startDoctypeDeclHandler) { + parser->m_doctypeName + = poolStoreString(&parser->m_tempPool, enc, s, next); + if (! parser->m_doctypeName) return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - doctypePubid = NULL; + poolFinish(&parser->m_tempPool); + parser->m_doctypePubid = NULL; handleDefault = XML_FALSE; } - doctypeSysid = NULL; /* always initialize to NULL */ + parser->m_doctypeSysid = NULL; /* always initialize to NULL */ break; case XML_ROLE_DOCTYPE_INTERNAL_SUBSET: - if (startDoctypeDeclHandler) { - startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid, - doctypePubid, 1); - doctypeName = NULL; - poolClear(&tempPool); + if (parser->m_startDoctypeDeclHandler) { + parser->m_startDoctypeDeclHandler( + parser->m_handlerArg, parser->m_doctypeName, parser->m_doctypeSysid, + parser->m_doctypePubid, 1); + parser->m_doctypeName = NULL; + poolClear(&parser->m_tempPool); handleDefault = XML_FALSE; } break; #ifdef XML_DTD - case XML_ROLE_TEXT_DECL: - { - enum XML_Error result = processXmlDecl(parser, 1, s, next); - if (result != XML_ERROR_NONE) - return result; - enc = encoding; - handleDefault = XML_FALSE; - } - break; + case XML_ROLE_TEXT_DECL: { + enum XML_Error result = processXmlDecl(parser, 1, s, next); + if (result != XML_ERROR_NONE) + return result; + enc = parser->m_encoding; + handleDefault = XML_FALSE; + } break; #endif /* XML_DTD */ case XML_ROLE_DOCTYPE_PUBLIC_ID: #ifdef XML_DTD - useForeignDTD = XML_FALSE; - declEntity = (ENTITY *)lookup(parser, - &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!declEntity) + parser->m_useForeignDTD = XML_FALSE; + parser->m_declEntity = (ENTITY *)lookup( + parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); + if (! parser->m_declEntity) return XML_ERROR_NO_MEMORY; #endif /* XML_DTD */ dtd->hasParamEntityRefs = XML_TRUE; - if (startDoctypeDeclHandler) { + if (parser->m_startDoctypeDeclHandler) { XML_Char *pubId; - if (!XmlIsPublicId(enc, s, next, eventPP)) + if (! XmlIsPublicId(enc, s, next, eventPP)) return XML_ERROR_PUBLICID; - pubId = poolStoreString(&tempPool, enc, + pubId = poolStoreString(&parser->m_tempPool, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); - if (!pubId) + if (! pubId) return XML_ERROR_NO_MEMORY; normalizePublicId(pubId); - poolFinish(&tempPool); - doctypePubid = pubId; + poolFinish(&parser->m_tempPool); + parser->m_doctypePubid = pubId; handleDefault = XML_FALSE; goto alreadyChecked; } /* fall through */ case XML_ROLE_ENTITY_PUBLIC_ID: - if (!XmlIsPublicId(enc, s, next, eventPP)) + if (! XmlIsPublicId(enc, s, next, eventPP)) return XML_ERROR_PUBLICID; alreadyChecked: - if (dtd->keepProcessing && declEntity) { - XML_Char *tem = poolStoreString(&dtd->pool, - enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!tem) + if (dtd->keepProcessing && parser->m_declEntity) { + XML_Char *tem + = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! tem) return XML_ERROR_NO_MEMORY; normalizePublicId(tem); - declEntity->publicId = tem; + parser->m_declEntity->publicId = tem; poolFinish(&dtd->pool); - if (entityDeclHandler) + /* Don't suppress the default handler if we fell through from + * the XML_ROLE_DOCTYPE_PUBLIC_ID case. + */ + if (parser->m_entityDeclHandler && role == XML_ROLE_ENTITY_PUBLIC_ID) handleDefault = XML_FALSE; } break; case XML_ROLE_DOCTYPE_CLOSE: - if (doctypeName) { - startDoctypeDeclHandler(handlerArg, doctypeName, - doctypeSysid, doctypePubid, 0); - poolClear(&tempPool); + if (allowClosingDoctype != XML_TRUE) { + /* Must not close doctype from within expanded parameter entities */ + return XML_ERROR_INVALID_TOKEN; + } + + if (parser->m_doctypeName) { + parser->m_startDoctypeDeclHandler( + parser->m_handlerArg, parser->m_doctypeName, parser->m_doctypeSysid, + parser->m_doctypePubid, 0); + poolClear(&parser->m_tempPool); handleDefault = XML_FALSE; } - /* doctypeSysid will be non-NULL in the case of a previous - XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler + /* parser->m_doctypeSysid will be non-NULL in the case of a previous + XML_ROLE_DOCTYPE_SYSTEM_ID, even if parser->m_startDoctypeDeclHandler was not set, indicating an external subset */ #ifdef XML_DTD - if (doctypeSysid || useForeignDTD) { + if (parser->m_doctypeSysid || parser->m_useForeignDTD) { XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; dtd->hasParamEntityRefs = XML_TRUE; - if (paramEntityParsing && externalEntityRefHandler) { - ENTITY *entity = (ENTITY *)lookup(parser, - &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!entity) - return XML_ERROR_NO_MEMORY; - if (useForeignDTD) - entity->base = curBase; + if (parser->m_paramEntityParsing + && parser->m_externalEntityRefHandler) { + ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, + externalSubsetName, sizeof(ENTITY)); + if (! entity) { + /* The external subset name "#" will have already been + * inserted into the hash table at the start of the + * external entity parsing, so no allocation will happen + * and lookup() cannot fail. + */ + return XML_ERROR_NO_MEMORY; /* LCOV_EXCL_LINE */ + } + if (parser->m_useForeignDTD) + entity->base = parser->m_curBase; dtd->paramEntityRead = XML_FALSE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) + if (! parser->m_externalEntityRefHandler( + parser->m_externalEntityRefHandlerArg, 0, entity->base, + entity->systemId, entity->publicId)) return XML_ERROR_EXTERNAL_ENTITY_HANDLING; if (dtd->paramEntityRead) { - if (!dtd->standalone && - notStandaloneHandler && - !notStandaloneHandler(handlerArg)) + if (! dtd->standalone && parser->m_notStandaloneHandler + && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) return XML_ERROR_NOT_STANDALONE; } /* if we didn't read the foreign DTD then this means that there is no external subset and we must reset dtd->hasParamEntityRefs */ - else if (!doctypeSysid) + else if (! parser->m_doctypeSysid) dtd->hasParamEntityRefs = hadParamEntityRefs; /* end of DTD - no need to update dtd->keepProcessing */ } - useForeignDTD = XML_FALSE; + parser->m_useForeignDTD = XML_FALSE; } #endif /* XML_DTD */ - if (endDoctypeDeclHandler) { - endDoctypeDeclHandler(handlerArg); + if (parser->m_endDoctypeDeclHandler) { + parser->m_endDoctypeDeclHandler(parser->m_handlerArg); handleDefault = XML_FALSE; } break; @@ -4023,27 +4865,24 @@ doProlog(XML_Parser parser, /* if there is no DOCTYPE declaration then now is the last chance to read the foreign DTD */ - if (useForeignDTD) { + if (parser->m_useForeignDTD) { XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; dtd->hasParamEntityRefs = XML_TRUE; - if (paramEntityParsing && externalEntityRefHandler) { + if (parser->m_paramEntityParsing + && parser->m_externalEntityRefHandler) { ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!entity) + externalSubsetName, sizeof(ENTITY)); + if (! entity) return XML_ERROR_NO_MEMORY; - entity->base = curBase; + entity->base = parser->m_curBase; dtd->paramEntityRead = XML_FALSE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) + if (! parser->m_externalEntityRefHandler( + parser->m_externalEntityRefHandlerArg, 0, entity->base, + entity->systemId, entity->publicId)) return XML_ERROR_EXTERNAL_ENTITY_HANDLING; if (dtd->paramEntityRead) { - if (!dtd->standalone && - notStandaloneHandler && - !notStandaloneHandler(handlerArg)) + if (! dtd->standalone && parser->m_notStandaloneHandler + && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) return XML_ERROR_NOT_STANDALONE; } /* if we didn't read the foreign DTD then this means that there @@ -4055,156 +4894,154 @@ doProlog(XML_Parser parser, } } #endif /* XML_DTD */ - processor = contentProcessor; + parser->m_processor = contentProcessor; return contentProcessor(parser, s, end, nextPtr); case XML_ROLE_ATTLIST_ELEMENT_NAME: - declElementType = getElementType(parser, enc, s, next); - if (!declElementType) + parser->m_declElementType = getElementType(parser, enc, s, next); + if (! parser->m_declElementType) return XML_ERROR_NO_MEMORY; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_NAME: - declAttributeId = getAttributeId(parser, enc, s, next); - if (!declAttributeId) + parser->m_declAttributeId = getAttributeId(parser, enc, s, next); + if (! parser->m_declAttributeId) return XML_ERROR_NO_MEMORY; - declAttributeIsCdata = XML_FALSE; - declAttributeType = NULL; - declAttributeIsId = XML_FALSE; + parser->m_declAttributeIsCdata = XML_FALSE; + parser->m_declAttributeType = NULL; + parser->m_declAttributeIsId = XML_FALSE; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_CDATA: - declAttributeIsCdata = XML_TRUE; - declAttributeType = atypeCDATA; + parser->m_declAttributeIsCdata = XML_TRUE; + parser->m_declAttributeType = atypeCDATA; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_ID: - declAttributeIsId = XML_TRUE; - declAttributeType = atypeID; + parser->m_declAttributeIsId = XML_TRUE; + parser->m_declAttributeType = atypeID; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_IDREF: - declAttributeType = atypeIDREF; + parser->m_declAttributeType = atypeIDREF; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_IDREFS: - declAttributeType = atypeIDREFS; + parser->m_declAttributeType = atypeIDREFS; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_ENTITY: - declAttributeType = atypeENTITY; + parser->m_declAttributeType = atypeENTITY; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES: - declAttributeType = atypeENTITIES; + parser->m_declAttributeType = atypeENTITIES; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN: - declAttributeType = atypeNMTOKEN; + parser->m_declAttributeType = atypeNMTOKEN; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS: - declAttributeType = atypeNMTOKENS; + parser->m_declAttributeType = atypeNMTOKENS; checkAttListDeclHandler: - if (dtd->keepProcessing && attlistDeclHandler) + if (dtd->keepProcessing && parser->m_attlistDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_ATTRIBUTE_ENUM_VALUE: case XML_ROLE_ATTRIBUTE_NOTATION_VALUE: - if (dtd->keepProcessing && attlistDeclHandler) { + if (dtd->keepProcessing && parser->m_attlistDeclHandler) { const XML_Char *prefix; - if (declAttributeType) { + if (parser->m_declAttributeType) { prefix = enumValueSep; + } else { + prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE ? notationPrefix + : enumValueStart); } - else { - prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE - ? notationPrefix - : enumValueStart); - } - if (!poolAppendString(&tempPool, prefix)) + if (! poolAppendString(&parser->m_tempPool, prefix)) return XML_ERROR_NO_MEMORY; - if (!poolAppend(&tempPool, enc, s, next)) + if (! poolAppend(&parser->m_tempPool, enc, s, next)) return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; + parser->m_declAttributeType = parser->m_tempPool.start; handleDefault = XML_FALSE; } break; case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE: case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE: if (dtd->keepProcessing) { - if (!defineAttribute(declElementType, declAttributeId, - declAttributeIsCdata, declAttributeIsId, - 0, parser)) + if (! defineAttribute(parser->m_declElementType, + parser->m_declAttributeId, + parser->m_declAttributeIsCdata, + parser->m_declAttributeIsId, 0, parser)) return XML_ERROR_NO_MEMORY; - if (attlistDeclHandler && declAttributeType) { - if (*declAttributeType == XML_T(ASCII_LPAREN) - || (*declAttributeType == XML_T(ASCII_N) - && declAttributeType[1] == XML_T(ASCII_O))) { + if (parser->m_attlistDeclHandler && parser->m_declAttributeType) { + if (*parser->m_declAttributeType == XML_T(ASCII_LPAREN) + || (*parser->m_declAttributeType == XML_T(ASCII_N) + && parser->m_declAttributeType[1] == XML_T(ASCII_O))) { /* Enumerated or Notation type */ - if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) - || !poolAppendChar(&tempPool, XML_T('\0'))) + if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_RPAREN)) + || ! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - poolFinish(&tempPool); + parser->m_declAttributeType = parser->m_tempPool.start; + poolFinish(&parser->m_tempPool); } *eventEndPP = s; - attlistDeclHandler(handlerArg, declElementType->name, - declAttributeId->name, declAttributeType, - 0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE); - poolClear(&tempPool); + parser->m_attlistDeclHandler( + parser->m_handlerArg, parser->m_declElementType->name, + parser->m_declAttributeId->name, parser->m_declAttributeType, 0, + role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE); handleDefault = XML_FALSE; } } + poolClear(&parser->m_tempPool); break; case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE: case XML_ROLE_FIXED_ATTRIBUTE_VALUE: if (dtd->keepProcessing) { const XML_Char *attVal; - enum XML_Error result = - storeAttributeValue(parser, enc, declAttributeIsCdata, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar, - &dtd->pool); + enum XML_Error result = storeAttributeValue( + parser, enc, parser->m_declAttributeIsCdata, + s + enc->minBytesPerChar, next - enc->minBytesPerChar, &dtd->pool, + XML_ACCOUNT_NONE); if (result) return result; attVal = poolStart(&dtd->pool); poolFinish(&dtd->pool); /* ID attributes aren't allowed to have a default */ - if (!defineAttribute(declElementType, declAttributeId, - declAttributeIsCdata, XML_FALSE, attVal, parser)) + if (! defineAttribute( + parser->m_declElementType, parser->m_declAttributeId, + parser->m_declAttributeIsCdata, XML_FALSE, attVal, parser)) return XML_ERROR_NO_MEMORY; - if (attlistDeclHandler && declAttributeType) { - if (*declAttributeType == XML_T(ASCII_LPAREN) - || (*declAttributeType == XML_T(ASCII_N) - && declAttributeType[1] == XML_T(ASCII_O))) { + if (parser->m_attlistDeclHandler && parser->m_declAttributeType) { + if (*parser->m_declAttributeType == XML_T(ASCII_LPAREN) + || (*parser->m_declAttributeType == XML_T(ASCII_N) + && parser->m_declAttributeType[1] == XML_T(ASCII_O))) { /* Enumerated or Notation type */ - if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) - || !poolAppendChar(&tempPool, XML_T('\0'))) + if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_RPAREN)) + || ! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - poolFinish(&tempPool); + parser->m_declAttributeType = parser->m_tempPool.start; + poolFinish(&parser->m_tempPool); } *eventEndPP = s; - attlistDeclHandler(handlerArg, declElementType->name, - declAttributeId->name, declAttributeType, - attVal, - role == XML_ROLE_FIXED_ATTRIBUTE_VALUE); - poolClear(&tempPool); + parser->m_attlistDeclHandler( + parser->m_handlerArg, parser->m_declElementType->name, + parser->m_declAttributeId->name, parser->m_declAttributeType, + attVal, role == XML_ROLE_FIXED_ATTRIBUTE_VALUE); + poolClear(&parser->m_tempPool); handleDefault = XML_FALSE; } } break; case XML_ROLE_ENTITY_VALUE: if (dtd->keepProcessing) { - enum XML_Error result = storeEntityValue(parser, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (declEntity) { - declEntity->textPtr = poolStart(&dtd->entityValuePool); - declEntity->textLen = (int)(poolLength(&dtd->entityValuePool)); + enum XML_Error result + = storeEntityValue(parser, enc, s + enc->minBytesPerChar, + next - enc->minBytesPerChar, XML_ACCOUNT_NONE); + if (parser->m_declEntity) { + parser->m_declEntity->textPtr = poolStart(&dtd->entityValuePool); + parser->m_declEntity->textLen + = (int)(poolLength(&dtd->entityValuePool)); poolFinish(&dtd->entityValuePool); - if (entityDeclHandler) { + if (parser->m_entityDeclHandler) { *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - declEntity->is_param, - declEntity->textPtr, - declEntity->textLen, - curBase, 0, 0, 0); + parser->m_entityDeclHandler( + parser->m_handlerArg, parser->m_declEntity->name, + parser->m_declEntity->is_param, parser->m_declEntity->textPtr, + parser->m_declEntity->textLen, parser->m_curBase, 0, 0, 0); handleDefault = XML_FALSE; } - } - else + } else poolDiscard(&dtd->entityValuePool); if (result != XML_ERROR_NONE) return result; @@ -4212,227 +5049,212 @@ doProlog(XML_Parser parser, break; case XML_ROLE_DOCTYPE_SYSTEM_ID: #ifdef XML_DTD - useForeignDTD = XML_FALSE; + parser->m_useForeignDTD = XML_FALSE; #endif /* XML_DTD */ dtd->hasParamEntityRefs = XML_TRUE; - if (startDoctypeDeclHandler) { - doctypeSysid = poolStoreString(&tempPool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (doctypeSysid == NULL) + if (parser->m_startDoctypeDeclHandler) { + parser->m_doctypeSysid = poolStoreString(&parser->m_tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (parser->m_doctypeSysid == NULL) return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); + poolFinish(&parser->m_tempPool); handleDefault = XML_FALSE; } #ifdef XML_DTD else - /* use externalSubsetName to make doctypeSysid non-NULL - for the case where no startDoctypeDeclHandler is set */ - doctypeSysid = externalSubsetName; + /* use externalSubsetName to make parser->m_doctypeSysid non-NULL + for the case where no parser->m_startDoctypeDeclHandler is set */ + parser->m_doctypeSysid = externalSubsetName; #endif /* XML_DTD */ - if (!dtd->standalone + if (! dtd->standalone #ifdef XML_DTD - && !paramEntityParsing + && ! parser->m_paramEntityParsing #endif /* XML_DTD */ - && notStandaloneHandler - && !notStandaloneHandler(handlerArg)) + && parser->m_notStandaloneHandler + && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) return XML_ERROR_NOT_STANDALONE; #ifndef XML_DTD break; -#else /* XML_DTD */ - if (!declEntity) { - declEntity = (ENTITY *)lookup(parser, - &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!declEntity) +#else /* XML_DTD */ + if (! parser->m_declEntity) { + parser->m_declEntity = (ENTITY *)lookup( + parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); + if (! parser->m_declEntity) return XML_ERROR_NO_MEMORY; - declEntity->publicId = NULL; + parser->m_declEntity->publicId = NULL; } - /* fall through */ #endif /* XML_DTD */ + /* fall through */ case XML_ROLE_ENTITY_SYSTEM_ID: - if (dtd->keepProcessing && declEntity) { - declEntity->systemId = poolStoreString(&dtd->pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!declEntity->systemId) + if (dtd->keepProcessing && parser->m_declEntity) { + parser->m_declEntity->systemId + = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! parser->m_declEntity->systemId) return XML_ERROR_NO_MEMORY; - declEntity->base = curBase; + parser->m_declEntity->base = parser->m_curBase; poolFinish(&dtd->pool); - if (entityDeclHandler) + /* Don't suppress the default handler if we fell through from + * the XML_ROLE_DOCTYPE_SYSTEM_ID case. + */ + if (parser->m_entityDeclHandler && role == XML_ROLE_ENTITY_SYSTEM_ID) handleDefault = XML_FALSE; } break; case XML_ROLE_ENTITY_COMPLETE: - if (dtd->keepProcessing && declEntity && entityDeclHandler) { + if (dtd->keepProcessing && parser->m_declEntity + && parser->m_entityDeclHandler) { *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - declEntity->is_param, - 0,0, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - 0); + parser->m_entityDeclHandler( + parser->m_handlerArg, parser->m_declEntity->name, + parser->m_declEntity->is_param, 0, 0, parser->m_declEntity->base, + parser->m_declEntity->systemId, parser->m_declEntity->publicId, 0); handleDefault = XML_FALSE; } break; case XML_ROLE_ENTITY_NOTATION_NAME: - if (dtd->keepProcessing && declEntity) { - declEntity->notation = poolStoreString(&dtd->pool, enc, s, next); - if (!declEntity->notation) + if (dtd->keepProcessing && parser->m_declEntity) { + parser->m_declEntity->notation + = poolStoreString(&dtd->pool, enc, s, next); + if (! parser->m_declEntity->notation) return XML_ERROR_NO_MEMORY; poolFinish(&dtd->pool); - if (unparsedEntityDeclHandler) { + if (parser->m_unparsedEntityDeclHandler) { *eventEndPP = s; - unparsedEntityDeclHandler(handlerArg, - declEntity->name, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - declEntity->notation); + parser->m_unparsedEntityDeclHandler( + parser->m_handlerArg, parser->m_declEntity->name, + parser->m_declEntity->base, parser->m_declEntity->systemId, + parser->m_declEntity->publicId, parser->m_declEntity->notation); handleDefault = XML_FALSE; - } - else if (entityDeclHandler) { + } else if (parser->m_entityDeclHandler) { *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - 0,0,0, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - declEntity->notation); + parser->m_entityDeclHandler( + parser->m_handlerArg, parser->m_declEntity->name, 0, 0, 0, + parser->m_declEntity->base, parser->m_declEntity->systemId, + parser->m_declEntity->publicId, parser->m_declEntity->notation); handleDefault = XML_FALSE; } } break; - case XML_ROLE_GENERAL_ENTITY_NAME: - { - if (XmlPredefinedEntityName(enc, s, next)) { - declEntity = NULL; - break; - } - if (dtd->keepProcessing) { - const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); - if (!name) - return XML_ERROR_NO_MEMORY; - declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, - sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; - if (declEntity->name != name) { - poolDiscard(&dtd->pool); - declEntity = NULL; - } - else { - poolFinish(&dtd->pool); - declEntity->publicId = NULL; - declEntity->is_param = XML_FALSE; - /* if we have a parent parser or are reading an internal parameter - entity, then the entity declaration is not considered "internal" - */ - declEntity->is_internal = !(parentParser || openInternalEntities); - if (entityDeclHandler) - handleDefault = XML_FALSE; - } - } - else { + case XML_ROLE_GENERAL_ENTITY_NAME: { + if (XmlPredefinedEntityName(enc, s, next)) { + parser->m_declEntity = NULL; + break; + } + if (dtd->keepProcessing) { + const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); + if (! name) + return XML_ERROR_NO_MEMORY; + parser->m_declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, + name, sizeof(ENTITY)); + if (! parser->m_declEntity) + return XML_ERROR_NO_MEMORY; + if (parser->m_declEntity->name != name) { poolDiscard(&dtd->pool); - declEntity = NULL; + parser->m_declEntity = NULL; + } else { + poolFinish(&dtd->pool); + parser->m_declEntity->publicId = NULL; + parser->m_declEntity->is_param = XML_FALSE; + /* if we have a parent parser or are reading an internal parameter + entity, then the entity declaration is not considered "internal" + */ + parser->m_declEntity->is_internal + = ! (parser->m_parentParser || parser->m_openInternalEntities); + if (parser->m_entityDeclHandler) + handleDefault = XML_FALSE; } + } else { + poolDiscard(&dtd->pool); + parser->m_declEntity = NULL; } - break; + } break; case XML_ROLE_PARAM_ENTITY_NAME: #ifdef XML_DTD if (dtd->keepProcessing) { const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); - if (!name) + if (! name) return XML_ERROR_NO_MEMORY; - declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, - name, sizeof(ENTITY)); - if (!declEntity) + parser->m_declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, + name, sizeof(ENTITY)); + if (! parser->m_declEntity) return XML_ERROR_NO_MEMORY; - if (declEntity->name != name) { + if (parser->m_declEntity->name != name) { poolDiscard(&dtd->pool); - declEntity = NULL; - } - else { + parser->m_declEntity = NULL; + } else { poolFinish(&dtd->pool); - declEntity->publicId = NULL; - declEntity->is_param = XML_TRUE; + parser->m_declEntity->publicId = NULL; + parser->m_declEntity->is_param = XML_TRUE; /* if we have a parent parser or are reading an internal parameter entity, then the entity declaration is not considered "internal" */ - declEntity->is_internal = !(parentParser || openInternalEntities); - if (entityDeclHandler) + parser->m_declEntity->is_internal + = ! (parser->m_parentParser || parser->m_openInternalEntities); + if (parser->m_entityDeclHandler) handleDefault = XML_FALSE; } - } - else { + } else { poolDiscard(&dtd->pool); - declEntity = NULL; + parser->m_declEntity = NULL; } -#else /* not XML_DTD */ - declEntity = NULL; +#else /* not XML_DTD */ + parser->m_declEntity = NULL; #endif /* XML_DTD */ break; case XML_ROLE_NOTATION_NAME: - declNotationPublicId = NULL; - declNotationName = NULL; - if (notationDeclHandler) { - declNotationName = poolStoreString(&tempPool, enc, s, next); - if (!declNotationName) + parser->m_declNotationPublicId = NULL; + parser->m_declNotationName = NULL; + if (parser->m_notationDeclHandler) { + parser->m_declNotationName + = poolStoreString(&parser->m_tempPool, enc, s, next); + if (! parser->m_declNotationName) return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); + poolFinish(&parser->m_tempPool); handleDefault = XML_FALSE; } break; case XML_ROLE_NOTATION_PUBLIC_ID: - if (!XmlIsPublicId(enc, s, next, eventPP)) + if (! XmlIsPublicId(enc, s, next, eventPP)) return XML_ERROR_PUBLICID; - if (declNotationName) { /* means notationDeclHandler != NULL */ - XML_Char *tem = poolStoreString(&tempPool, - enc, + if (parser + ->m_declNotationName) { /* means m_notationDeclHandler != NULL */ + XML_Char *tem = poolStoreString(&parser->m_tempPool, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); - if (!tem) + if (! tem) return XML_ERROR_NO_MEMORY; normalizePublicId(tem); - declNotationPublicId = tem; - poolFinish(&tempPool); + parser->m_declNotationPublicId = tem; + poolFinish(&parser->m_tempPool); handleDefault = XML_FALSE; } break; case XML_ROLE_NOTATION_SYSTEM_ID: - if (declNotationName && notationDeclHandler) { - const XML_Char *systemId - = poolStoreString(&tempPool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!systemId) + if (parser->m_declNotationName && parser->m_notationDeclHandler) { + const XML_Char *systemId = poolStoreString(&parser->m_tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! systemId) return XML_ERROR_NO_MEMORY; *eventEndPP = s; - notationDeclHandler(handlerArg, - declNotationName, - curBase, - systemId, - declNotationPublicId); + parser->m_notationDeclHandler( + parser->m_handlerArg, parser->m_declNotationName, parser->m_curBase, + systemId, parser->m_declNotationPublicId); handleDefault = XML_FALSE; } - poolClear(&tempPool); + poolClear(&parser->m_tempPool); break; case XML_ROLE_NOTATION_NO_SYSTEM_ID: - if (declNotationPublicId && notationDeclHandler) { + if (parser->m_declNotationPublicId && parser->m_notationDeclHandler) { *eventEndPP = s; - notationDeclHandler(handlerArg, - declNotationName, - curBase, - 0, - declNotationPublicId); + parser->m_notationDeclHandler( + parser->m_handlerArg, parser->m_declNotationName, parser->m_curBase, + 0, parser->m_declNotationPublicId); handleDefault = XML_FALSE; } - poolClear(&tempPool); + poolClear(&parser->m_tempPool); break; case XML_ROLE_ERROR: switch (tok) { @@ -4446,90 +5268,110 @@ doProlog(XML_Parser parser, return XML_ERROR_SYNTAX; } #ifdef XML_DTD - case XML_ROLE_IGNORE_SECT: - { - enum XML_Error result; - if (defaultHandler) - reportDefault(parser, enc, s, next); - handleDefault = XML_FALSE; - result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore); - if (result != XML_ERROR_NONE) - return result; - else if (!next) { - processor = ignoreSectionProcessor; - return result; - } + case XML_ROLE_IGNORE_SECT: { + enum XML_Error result; + if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + handleDefault = XML_FALSE; + result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore); + if (result != XML_ERROR_NONE) + return result; + else if (! next) { + parser->m_processor = ignoreSectionProcessor; + return result; } - break; + } break; #endif /* XML_DTD */ case XML_ROLE_GROUP_OPEN: - if (prologState.level >= groupSize) { - if (groupSize) { - char *temp = (char *)REALLOC(groupConnector, groupSize *= 2); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - groupConnector = temp; - if (dtd->scaffIndex) { - int *temp = (int *)REALLOC(dtd->scaffIndex, - groupSize * sizeof(int)); - if (temp == NULL) + if (parser->m_prologState.level >= parser->m_groupSize) { + if (parser->m_groupSize) { + { + /* Detect and prevent integer overflow */ + if (parser->m_groupSize > (unsigned int)(-1) / 2u) { return XML_ERROR_NO_MEMORY; - dtd->scaffIndex = temp; + } + + char *const new_connector = (char *)REALLOC( + parser, parser->m_groupConnector, parser->m_groupSize *= 2); + if (new_connector == NULL) { + parser->m_groupSize /= 2; + return XML_ERROR_NO_MEMORY; + } + parser->m_groupConnector = new_connector; + } + + if (dtd->scaffIndex) { + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if (parser->m_groupSize > (size_t)(-1) / sizeof(int)) { + return XML_ERROR_NO_MEMORY; + } +#endif + + int *const new_scaff_index = (int *)REALLOC( + parser, dtd->scaffIndex, parser->m_groupSize * sizeof(int)); + if (new_scaff_index == NULL) + return XML_ERROR_NO_MEMORY; + dtd->scaffIndex = new_scaff_index; + } + } else { + parser->m_groupConnector + = (char *)MALLOC(parser, parser->m_groupSize = 32); + if (! parser->m_groupConnector) { + parser->m_groupSize = 0; + return XML_ERROR_NO_MEMORY; } } - else { - groupConnector = (char *)MALLOC(groupSize = 32); - if (!groupConnector) - return XML_ERROR_NO_MEMORY; - } } - groupConnector[prologState.level] = 0; + parser->m_groupConnector[parser->m_prologState.level] = 0; if (dtd->in_eldecl) { int myindex = nextScaffoldPart(parser); if (myindex < 0) return XML_ERROR_NO_MEMORY; + assert(dtd->scaffIndex != NULL); dtd->scaffIndex[dtd->scaffLevel] = myindex; dtd->scaffLevel++; dtd->scaffold[myindex].type = XML_CTYPE_SEQ; - if (elementDeclHandler) + if (parser->m_elementDeclHandler) handleDefault = XML_FALSE; } break; case XML_ROLE_GROUP_SEQUENCE: - if (groupConnector[prologState.level] == ASCII_PIPE) + if (parser->m_groupConnector[parser->m_prologState.level] == ASCII_PIPE) return XML_ERROR_SYNTAX; - groupConnector[prologState.level] = ASCII_COMMA; - if (dtd->in_eldecl && elementDeclHandler) + parser->m_groupConnector[parser->m_prologState.level] = ASCII_COMMA; + if (dtd->in_eldecl && parser->m_elementDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_GROUP_CHOICE: - if (groupConnector[prologState.level] == ASCII_COMMA) + if (parser->m_groupConnector[parser->m_prologState.level] == ASCII_COMMA) return XML_ERROR_SYNTAX; if (dtd->in_eldecl - && !groupConnector[prologState.level] + && ! parser->m_groupConnector[parser->m_prologState.level] && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type - != XML_CTYPE_MIXED) - ) { + != XML_CTYPE_MIXED)) { dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type = XML_CTYPE_CHOICE; - if (elementDeclHandler) + if (parser->m_elementDeclHandler) handleDefault = XML_FALSE; } - groupConnector[prologState.level] = ASCII_PIPE; + parser->m_groupConnector[parser->m_prologState.level] = ASCII_PIPE; break; case XML_ROLE_PARAM_ENTITY_REF: #ifdef XML_DTD case XML_ROLE_INNER_PARAM_ENTITY_REF: dtd->hasParamEntityRefs = XML_TRUE; - if (!paramEntityParsing) + if (! parser->m_paramEntityParsing) dtd->keepProcessing = dtd->standalone; else { const XML_Char *name; ENTITY *entity; - name = poolStoreString(&dtd->pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) + name = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! name) return XML_ERROR_NO_MEMORY; entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); poolDiscard(&dtd->pool); @@ -4537,20 +5379,40 @@ doProlog(XML_Parser parser, if yes, check that the entity exists, and that it is internal, otherwise call the skipped entity handler */ - if (prologState.documentEntity && - (dtd->standalone - ? !openInternalEntities - : !dtd->hasParamEntityRefs)) { - if (!entity) + if (parser->m_prologState.documentEntity + && (dtd->standalone ? ! parser->m_openInternalEntities + : ! dtd->hasParamEntityRefs)) { + if (! entity) return XML_ERROR_UNDEFINED_ENTITY; - else if (!entity->is_internal) - return XML_ERROR_ENTITY_DECLARED_IN_PE; - } - else if (!entity) { + else if (! entity->is_internal) { + /* It's hard to exhaustively search the code to be sure, + * but there doesn't seem to be a way of executing the + * following line. There are two cases: + * + * If 'standalone' is false, the DTD must have no + * parameter entities or we wouldn't have passed the outer + * 'if' statement. That means the only entity in the hash + * table is the external subset name "#" which cannot be + * given as a parameter entity name in XML syntax, so the + * lookup must have returned NULL and we don't even reach + * the test for an internal entity. + * + * If 'standalone' is true, it does not seem to be + * possible to create entities taking this code path that + * are not internal entities, so fail the test above. + * + * Because this analysis is very uncertain, the code is + * being left in place and merely removed from the + * coverage test statistics. + */ + return XML_ERROR_ENTITY_DECLARED_IN_PE; /* LCOV_EXCL_LINE */ + } + } else if (! entity) { dtd->keepProcessing = dtd->standalone; /* cannot report skipped entities in declarations */ - if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) { - skippedEntityHandler(handlerArg, name, 1); + if ((role == XML_ROLE_PARAM_ENTITY_REF) + && parser->m_skippedEntityHandler) { + parser->m_skippedEntityHandler(parser->m_handlerArg, name, 1); handleDefault = XML_FALSE; } break; @@ -4559,50 +5421,49 @@ doProlog(XML_Parser parser, return XML_ERROR_RECURSIVE_ENTITY_REF; if (entity->textPtr) { enum XML_Error result; - XML_Bool betweenDecl = - (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE); + XML_Bool betweenDecl + = (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE); result = processInternalEntity(parser, entity, betweenDecl); if (result != XML_ERROR_NONE) return result; handleDefault = XML_FALSE; break; } - if (externalEntityRefHandler) { + if (parser->m_externalEntityRefHandler) { dtd->paramEntityRead = XML_FALSE; entity->open = XML_TRUE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) { + entityTrackingOnOpen(parser, entity, __LINE__); + if (! parser->m_externalEntityRefHandler( + parser->m_externalEntityRefHandlerArg, 0, entity->base, + entity->systemId, entity->publicId)) { + entityTrackingOnClose(parser, entity, __LINE__); entity->open = XML_FALSE; return XML_ERROR_EXTERNAL_ENTITY_HANDLING; } + entityTrackingOnClose(parser, entity, __LINE__); entity->open = XML_FALSE; handleDefault = XML_FALSE; - if (!dtd->paramEntityRead) { + if (! dtd->paramEntityRead) { dtd->keepProcessing = dtd->standalone; break; } - } - else { + } else { dtd->keepProcessing = dtd->standalone; break; } } #endif /* XML_DTD */ - if (!dtd->standalone && - notStandaloneHandler && - !notStandaloneHandler(handlerArg)) + if (! dtd->standalone && parser->m_notStandaloneHandler + && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) return XML_ERROR_NOT_STANDALONE; break; - /* Element declaration stuff */ + /* Element declaration stuff */ case XML_ROLE_ELEMENT_NAME: - if (elementDeclHandler) { - declElementType = getElementType(parser, enc, s, next); - if (!declElementType) + if (parser->m_elementDeclHandler) { + parser->m_declElementType = getElementType(parser, enc, s, next); + if (! parser->m_declElementType) return XML_ERROR_NO_MEMORY; dtd->scaffLevel = 0; dtd->scaffCount = 0; @@ -4614,19 +5475,20 @@ doProlog(XML_Parser parser, case XML_ROLE_CONTENT_ANY: case XML_ROLE_CONTENT_EMPTY: if (dtd->in_eldecl) { - if (elementDeclHandler) { - XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content)); - if (!content) + if (parser->m_elementDeclHandler) { + XML_Content *content + = (XML_Content *)MALLOC(parser, sizeof(XML_Content)); + if (! content) return XML_ERROR_NO_MEMORY; content->quant = XML_CQUANT_NONE; content->name = NULL; content->numchildren = 0; content->children = NULL; - content->type = ((role == XML_ROLE_CONTENT_ANY) ? - XML_CTYPE_ANY : - XML_CTYPE_EMPTY); + content->type = ((role == XML_ROLE_CONTENT_ANY) ? XML_CTYPE_ANY + : XML_CTYPE_EMPTY); *eventEndPP = s; - elementDeclHandler(handlerArg, declElementType->name, content); + parser->m_elementDeclHandler( + parser->m_handlerArg, parser->m_declElementType->name, content); handleDefault = XML_FALSE; } dtd->in_eldecl = XML_FALSE; @@ -4637,7 +5499,7 @@ doProlog(XML_Parser parser, if (dtd->in_eldecl) { dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type = XML_CTYPE_MIXED; - if (elementDeclHandler) + if (parser->m_elementDeclHandler) handleDefault = XML_FALSE; } break; @@ -4657,24 +5519,30 @@ doProlog(XML_Parser parser, if (dtd->in_eldecl) { ELEMENT_TYPE *el; const XML_Char *name; - int nameLen; - const char *nxt = (quant == XML_CQUANT_NONE - ? next - : next - enc->minBytesPerChar); + size_t nameLen; + const char *nxt + = (quant == XML_CQUANT_NONE ? next : next - enc->minBytesPerChar); int myindex = nextScaffoldPart(parser); if (myindex < 0) return XML_ERROR_NO_MEMORY; dtd->scaffold[myindex].type = XML_CTYPE_NAME; dtd->scaffold[myindex].quant = quant; el = getElementType(parser, enc, s, nxt); - if (!el) + if (! el) return XML_ERROR_NO_MEMORY; name = el->name; dtd->scaffold[myindex].name = name; nameLen = 0; - for (; name[nameLen++]; ); - dtd->contentStringLen += nameLen; - if (elementDeclHandler) + for (; name[nameLen++];) + ; + + /* Detect and prevent integer overflow */ + if (nameLen > UINT_MAX - dtd->contentStringLen) { + return XML_ERROR_NO_MEMORY; + } + + dtd->contentStringLen += (unsigned)nameLen; + if (parser->m_elementDeclHandler) handleDefault = XML_FALSE; } break; @@ -4692,17 +5560,18 @@ doProlog(XML_Parser parser, quant = XML_CQUANT_PLUS; closeGroup: if (dtd->in_eldecl) { - if (elementDeclHandler) + if (parser->m_elementDeclHandler) handleDefault = XML_FALSE; dtd->scaffLevel--; dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant; if (dtd->scaffLevel == 0) { - if (!handleDefault) { + if (! handleDefault) { XML_Content *model = build_model(parser); - if (!model) + if (! model) return XML_ERROR_NO_MEMORY; *eventEndPP = s; - elementDeclHandler(handlerArg, declElementType->name, model); + parser->m_elementDeclHandler( + parser->m_handlerArg, parser->m_declElementType->name, model); } dtd->in_eldecl = XML_FALSE; dtd->contentStringLen = 0; @@ -4712,12 +5581,12 @@ doProlog(XML_Parser parser, /* End element declaration stuff */ case XML_ROLE_PI: - if (!reportProcessingInstruction(parser, enc, s, next)) + if (! reportProcessingInstruction(parser, enc, s, next)) return XML_ERROR_NO_MEMORY; handleDefault = XML_FALSE; break; case XML_ROLE_COMMENT: - if (!reportComment(parser, enc, s, next)) + if (! reportComment(parser, enc, s, next)) return XML_ERROR_NO_MEMORY; handleDefault = XML_FALSE; break; @@ -4729,31 +5598,31 @@ doProlog(XML_Parser parser, } break; case XML_ROLE_DOCTYPE_NONE: - if (startDoctypeDeclHandler) + if (parser->m_startDoctypeDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_ENTITY_NONE: - if (dtd->keepProcessing && entityDeclHandler) + if (dtd->keepProcessing && parser->m_entityDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_NOTATION_NONE: - if (notationDeclHandler) + if (parser->m_notationDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_ATTLIST_NONE: - if (dtd->keepProcessing && attlistDeclHandler) + if (dtd->keepProcessing && parser->m_attlistDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_ELEMENT_NONE: - if (elementDeclHandler) + if (parser->m_elementDeclHandler) handleDefault = XML_FALSE; break; } /* end of big switch */ - if (handleDefault && defaultHandler) + if (handleDefault && parser->m_defaultHandler) reportDefault(parser, enc, s, next); - switch (ps_parsing) { + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: *nextPtr = next; return XML_ERROR_NONE; @@ -4768,23 +5637,27 @@ doProlog(XML_Parser parser, } static enum XML_Error PTRCALL -epilogProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - processor = epilogProcessor; - eventPtr = s; +epilogProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { + parser->m_processor = epilogProcessor; + parser->m_eventPtr = s; for (;;) { const char *next = NULL; - int tok = XmlPrologTok(encoding, s, end, &next); - eventEndPtr = next; + int tok = XmlPrologTok(parser->m_encoding, s, end, &next); +#ifdef XML_DTD + if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, + XML_ACCOUNT_DIRECT)) { + accountingOnAbort(parser); + return XML_ERROR_AMPLIFICATION_LIMIT_BREACH; + } +#endif + parser->m_eventEndPtr = next; switch (tok) { /* report partial linebreak - it might be the last token */ case -XML_TOK_PROLOG_S: - if (defaultHandler) { - reportDefault(parser, encoding, s, next); - if (ps_parsing == XML_FINISHED) + if (parser->m_defaultHandler) { + reportDefault(parser, parser->m_encoding, s, next); + if (parser->m_parsingStatus.parsing == XML_FINISHED) return XML_ERROR_ABORTED; } *nextPtr = next; @@ -4793,28 +5666,28 @@ epilogProcessor(XML_Parser parser, *nextPtr = s; return XML_ERROR_NONE; case XML_TOK_PROLOG_S: - if (defaultHandler) - reportDefault(parser, encoding, s, next); + if (parser->m_defaultHandler) + reportDefault(parser, parser->m_encoding, s, next); break; case XML_TOK_PI: - if (!reportProcessingInstruction(parser, encoding, s, next)) + if (! reportProcessingInstruction(parser, parser->m_encoding, s, next)) return XML_ERROR_NO_MEMORY; break; case XML_TOK_COMMENT: - if (!reportComment(parser, encoding, s, next)) + if (! reportComment(parser, parser->m_encoding, s, next)) return XML_ERROR_NO_MEMORY; break; case XML_TOK_INVALID: - eventPtr = next; + parser->m_eventPtr = next; return XML_ERROR_INVALID_TOKEN; case XML_TOK_PARTIAL: - if (!ps_finalBuffer) { + if (! parser->m_parsingStatus.finalBuffer) { *nextPtr = s; return XML_ERROR_NONE; } return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: - if (!ps_finalBuffer) { + if (! parser->m_parsingStatus.finalBuffer) { *nextPtr = s; return XML_ERROR_NONE; } @@ -4822,209 +5695,245 @@ epilogProcessor(XML_Parser parser, default: return XML_ERROR_JUNK_AFTER_DOC_ELEMENT; } - eventPtr = s = next; - switch (ps_parsing) { + parser->m_eventPtr = s = next; + switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: *nextPtr = next; return XML_ERROR_NONE; case XML_FINISHED: return XML_ERROR_ABORTED; - default: ; + default:; } } } static enum XML_Error -processInternalEntity(XML_Parser parser, ENTITY *entity, - XML_Bool betweenDecl) -{ +processInternalEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl) { const char *textStart, *textEnd; const char *next; enum XML_Error result; OPEN_INTERNAL_ENTITY *openEntity; - if (freeInternalEntities) { - openEntity = freeInternalEntities; - freeInternalEntities = openEntity->next; - } - else { - openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY)); - if (!openEntity) + if (parser->m_freeInternalEntities) { + openEntity = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = openEntity->next; + } else { + openEntity + = (OPEN_INTERNAL_ENTITY *)MALLOC(parser, sizeof(OPEN_INTERNAL_ENTITY)); + if (! openEntity) return XML_ERROR_NO_MEMORY; } entity->open = XML_TRUE; +#ifdef XML_DTD + entityTrackingOnOpen(parser, entity, __LINE__); +#endif entity->processed = 0; - openEntity->next = openInternalEntities; - openInternalEntities = openEntity; + openEntity->next = parser->m_openInternalEntities; + parser->m_openInternalEntities = openEntity; openEntity->entity = entity; - openEntity->startTagLevel = tagLevel; + openEntity->startTagLevel = parser->m_tagLevel; openEntity->betweenDecl = betweenDecl; openEntity->internalEventPtr = NULL; openEntity->internalEventEndPtr = NULL; - textStart = (char *)entity->textPtr; - textEnd = (char *)(entity->textPtr + entity->textLen); + textStart = (const char *)entity->textPtr; + textEnd = (const char *)(entity->textPtr + entity->textLen); + /* Set a safe default value in case 'next' does not get set */ + next = textStart; #ifdef XML_DTD if (entity->is_param) { - int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); - result = doProlog(parser, internalEncoding, textStart, textEnd, tok, - next, &next, XML_FALSE); - } - else + int tok + = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd, + tok, next, &next, XML_FALSE, XML_FALSE, + XML_ACCOUNT_ENTITY_EXPANSION); + } else #endif /* XML_DTD */ - result = doContent(parser, tagLevel, internalEncoding, textStart, - textEnd, &next, XML_FALSE); + result = doContent(parser, parser->m_tagLevel, parser->m_internalEncoding, + textStart, textEnd, &next, XML_FALSE, + XML_ACCOUNT_ENTITY_EXPANSION); if (result == XML_ERROR_NONE) { - if (textEnd != next && ps_parsing == XML_SUSPENDED) { + if (textEnd != next && parser->m_parsingStatus.parsing == XML_SUSPENDED) { entity->processed = (int)(next - textStart); - processor = internalEntityProcessor; - } - else { + parser->m_processor = internalEntityProcessor; + } else { +#ifdef XML_DTD + entityTrackingOnClose(parser, entity, __LINE__); +#endif /* XML_DTD */ entity->open = XML_FALSE; - openInternalEntities = openEntity->next; + parser->m_openInternalEntities = openEntity->next; /* put openEntity back in list of free instances */ - openEntity->next = freeInternalEntities; - freeInternalEntities = openEntity; + openEntity->next = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = openEntity; } } return result; } static enum XML_Error PTRCALL -internalEntityProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ +internalEntityProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { ENTITY *entity; const char *textStart, *textEnd; const char *next; enum XML_Error result; - OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities; - if (!openEntity) + OPEN_INTERNAL_ENTITY *openEntity = parser->m_openInternalEntities; + if (! openEntity) return XML_ERROR_UNEXPECTED_STATE; entity = openEntity->entity; - textStart = ((char *)entity->textPtr) + entity->processed; - textEnd = (char *)(entity->textPtr + entity->textLen); + textStart = ((const char *)entity->textPtr) + entity->processed; + textEnd = (const char *)(entity->textPtr + entity->textLen); + /* Set a safe default value in case 'next' does not get set */ + next = textStart; #ifdef XML_DTD if (entity->is_param) { - int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); - result = doProlog(parser, internalEncoding, textStart, textEnd, tok, - next, &next, XML_FALSE); - } - else + int tok + = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd, + tok, next, &next, XML_FALSE, XML_TRUE, + XML_ACCOUNT_ENTITY_EXPANSION); + } else #endif /* XML_DTD */ - result = doContent(parser, openEntity->startTagLevel, internalEncoding, - textStart, textEnd, &next, XML_FALSE); + result = doContent(parser, openEntity->startTagLevel, + parser->m_internalEncoding, textStart, textEnd, &next, + XML_FALSE, XML_ACCOUNT_ENTITY_EXPANSION); if (result != XML_ERROR_NONE) return result; - else if (textEnd != next && ps_parsing == XML_SUSPENDED) { - entity->processed = (int)(next - (char *)entity->textPtr); + + if (textEnd != next && parser->m_parsingStatus.parsing == XML_SUSPENDED) { + entity->processed = (int)(next - (const char *)entity->textPtr); return result; } - else { - entity->open = XML_FALSE; - openInternalEntities = openEntity->next; - /* put openEntity back in list of free instances */ - openEntity->next = freeInternalEntities; - freeInternalEntities = openEntity; + +#ifdef XML_DTD + entityTrackingOnClose(parser, entity, __LINE__); +#endif + entity->open = XML_FALSE; + parser->m_openInternalEntities = openEntity->next; + /* put openEntity back in list of free instances */ + openEntity->next = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = openEntity; + + // If there are more open entities we want to stop right here and have the + // upcoming call to XML_ResumeParser continue with entity content, or it would + // be ignored altogether. + if (parser->m_openInternalEntities != NULL + && parser->m_parsingStatus.parsing == XML_SUSPENDED) { + return XML_ERROR_NONE; } #ifdef XML_DTD if (entity->is_param) { int tok; - processor = prologProcessor; - tok = XmlPrologTok(encoding, s, end, &next); - return doProlog(parser, encoding, s, end, tok, next, nextPtr, - (XML_Bool)!ps_finalBuffer); - } - else + parser->m_processor = prologProcessor; + tok = XmlPrologTok(parser->m_encoding, s, end, &next); + return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE, + XML_ACCOUNT_DIRECT); + } else #endif /* XML_DTD */ { - processor = contentProcessor; + parser->m_processor = contentProcessor; /* see externalEntityContentProcessor vs contentProcessor */ - return doContent(parser, parentParser ? 1 : 0, encoding, s, end, - nextPtr, (XML_Bool)!ps_finalBuffer); + result = doContent(parser, parser->m_parentParser ? 1 : 0, + parser->m_encoding, s, end, nextPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, + XML_ACCOUNT_DIRECT); + if (result == XML_ERROR_NONE) { + if (! storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } + return result; } } static enum XML_Error PTRCALL -errorProcessor(XML_Parser parser, - const char *UNUSED_P(s), - const char *UNUSED_P(end), - const char **UNUSED_P(nextPtr)) -{ - return errorCode; +errorProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { + UNUSED_P(s); + UNUSED_P(end); + UNUSED_P(nextPtr); + return parser->m_errorCode; } static enum XML_Error storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, - const char *ptr, const char *end, - STRING_POOL *pool) -{ - enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr, - end, pool); + const char *ptr, const char *end, STRING_POOL *pool, + enum XML_Account account) { + enum XML_Error result + = appendAttributeValue(parser, enc, isCdata, ptr, end, pool, account); if (result) return result; - if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) + if (! isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) poolChop(pool); - if (!poolAppendChar(pool, XML_T('\0'))) + if (! poolAppendChar(pool, XML_T('\0'))) return XML_ERROR_NO_MEMORY; return XML_ERROR_NONE; } static enum XML_Error appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, - const char *ptr, const char *end, - STRING_POOL *pool) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ + const char *ptr, const char *end, STRING_POOL *pool, + enum XML_Account account) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ +#ifndef XML_DTD + UNUSED_P(account); +#endif + for (;;) { - const char *next; + const char *next + = ptr; /* XmlAttributeValueTok doesn't always set the last arg */ int tok = XmlAttributeValueTok(enc, ptr, end, &next); +#ifdef XML_DTD + if (! accountingDiffTolerated(parser, tok, ptr, next, __LINE__, account)) { + accountingOnAbort(parser); + return XML_ERROR_AMPLIFICATION_LIMIT_BREACH; + } +#endif switch (tok) { case XML_TOK_NONE: return XML_ERROR_NONE; case XML_TOK_INVALID: - if (enc == encoding) - eventPtr = next; + if (enc == parser->m_encoding) + parser->m_eventPtr = next; return XML_ERROR_INVALID_TOKEN; case XML_TOK_PARTIAL: - if (enc == encoding) - eventPtr = ptr; + if (enc == parser->m_encoding) + parser->m_eventPtr = ptr; return XML_ERROR_INVALID_TOKEN; - case XML_TOK_CHAR_REF: - { - XML_Char buf[XML_ENCODE_MAX]; - int i; - int n = XmlCharRefNumber(enc, ptr); - if (n < 0) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BAD_CHAR_REF; - } - if (!isCdata - && n == 0x20 /* space */ - && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) - break; - n = XmlEncode(n, (ICHAR *)buf); - if (!n) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BAD_CHAR_REF; - } - for (i = 0; i < n; i++) { - if (!poolAppendChar(pool, buf[i])) - return XML_ERROR_NO_MEMORY; - } + case XML_TOK_CHAR_REF: { + XML_Char buf[XML_ENCODE_MAX]; + int i; + int n = XmlCharRefNumber(enc, ptr); + if (n < 0) { + if (enc == parser->m_encoding) + parser->m_eventPtr = ptr; + return XML_ERROR_BAD_CHAR_REF; } - break; + if (! isCdata && n == 0x20 /* space */ + && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) + break; + n = XmlEncode(n, (ICHAR *)buf); + /* The XmlEncode() functions can never return 0 here. That + * error return happens if the code point passed in is either + * negative or greater than or equal to 0x110000. The + * XmlCharRefNumber() functions will all return a number + * strictly less than 0x110000 or a negative value if an error + * occurred. The negative value is intercepted above, so + * XmlEncode() is never passed a value it might return an + * error for. + */ + for (i = 0; i < n; i++) { + if (! poolAppendChar(pool, buf[i])) + return XML_ERROR_NO_MEMORY; + } + } break; case XML_TOK_DATA_CHARS: - if (!poolAppend(pool, enc, ptr, next)) + if (! poolAppend(pool, enc, ptr, next)) return XML_ERROR_NO_MEMORY; break; case XML_TOK_TRAILING_CR: @@ -5032,95 +5941,134 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, /* fall through */ case XML_TOK_ATTRIBUTE_VALUE_S: case XML_TOK_DATA_NEWLINE: - if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) + if (! isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) break; - if (!poolAppendChar(pool, 0x20)) + if (! poolAppendChar(pool, 0x20)) return XML_ERROR_NO_MEMORY; break; - case XML_TOK_ENTITY_REF: - { - const XML_Char *name; - ENTITY *entity; - char checkEntityDecl; - XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, - ptr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (ch) { - if (!poolAppendChar(pool, ch)) - return XML_ERROR_NO_MEMORY; - break; - } - name = poolStoreString(&temp2Pool, enc, - ptr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); - poolDiscard(&temp2Pool); - /* First, determine if a check for an existing declaration is needed; - if yes, check that the entity exists, and that it is internal. - */ - if (pool == &dtd->pool) /* are we called from prolog? */ - checkEntityDecl = + case XML_TOK_ENTITY_REF: { + const XML_Char *name; + ENTITY *entity; + char checkEntityDecl; + XML_Char ch = (XML_Char)XmlPredefinedEntityName( + enc, ptr + enc->minBytesPerChar, next - enc->minBytesPerChar); + if (ch) { #ifdef XML_DTD - prologState.documentEntity && + /* NOTE: We are replacing 4-6 characters original input for 1 character + * so there is no amplification and hence recording without + * protection. */ + accountingDiffTolerated(parser, tok, (char *)&ch, + ((char *)&ch) + sizeof(XML_Char), __LINE__, + XML_ACCOUNT_ENTITY_EXPANSION); #endif /* XML_DTD */ - (dtd->standalone - ? !openInternalEntities - : !dtd->hasParamEntityRefs); - else /* if (pool == &tempPool): we are called from content */ - checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone; - if (checkEntityDecl) { - if (!entity) - return XML_ERROR_UNDEFINED_ENTITY; - else if (!entity->is_internal) - return XML_ERROR_ENTITY_DECLARED_IN_PE; - } - else if (!entity) { - /* Cannot report skipped entity here - see comments on - skippedEntityHandler. - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, name, 0); - */ - /* Cannot call the default handler because this would be - out of sync with the call to the startElementHandler. - if ((pool == &tempPool) && defaultHandler) - reportDefault(parser, enc, ptr, next); - */ - break; - } - if (entity->open) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_RECURSIVE_ENTITY_REF; - } - if (entity->notation) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BINARY_ENTITY_REF; - } - if (!entity->textPtr) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; - } - else { - enum XML_Error result; - const XML_Char *textEnd = entity->textPtr + entity->textLen; - entity->open = XML_TRUE; - result = appendAttributeValue(parser, internalEncoding, isCdata, - (char *)entity->textPtr, - (char *)textEnd, pool); - entity->open = XML_FALSE; - if (result) - return result; - } + if (! poolAppendChar(pool, ch)) + return XML_ERROR_NO_MEMORY; + break; } - break; + name = poolStoreString(&parser->m_temp2Pool, enc, + ptr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); + poolDiscard(&parser->m_temp2Pool); + /* First, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal. + */ + if (pool == &dtd->pool) /* are we called from prolog? */ + checkEntityDecl = +#ifdef XML_DTD + parser->m_prologState.documentEntity && +#endif /* XML_DTD */ + (dtd->standalone ? ! parser->m_openInternalEntities + : ! dtd->hasParamEntityRefs); + else /* if (pool == &parser->m_tempPool): we are called from content */ + checkEntityDecl = ! dtd->hasParamEntityRefs || dtd->standalone; + if (checkEntityDecl) { + if (! entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (! entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } else if (! entity) { + /* Cannot report skipped entity here - see comments on + parser->m_skippedEntityHandler. + if (parser->m_skippedEntityHandler) + parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); + */ + /* Cannot call the default handler because this would be + out of sync with the call to the startElementHandler. + if ((pool == &parser->m_tempPool) && parser->m_defaultHandler) + reportDefault(parser, enc, ptr, next); + */ + break; + } + if (entity->open) { + if (enc == parser->m_encoding) { + /* It does not appear that this line can be executed. + * + * The "if (entity->open)" check catches recursive entity + * definitions. In order to be called with an open + * entity, it must have gone through this code before and + * been through the recursive call to + * appendAttributeValue() some lines below. That call + * sets the local encoding ("enc") to the parser's + * internal encoding (internal_utf8 or internal_utf16), + * which can never be the same as the principle encoding. + * It doesn't appear there is another code path that gets + * here with entity->open being TRUE. + * + * Since it is not certain that this logic is watertight, + * we keep the line and merely exclude it from coverage + * tests. + */ + parser->m_eventPtr = ptr; /* LCOV_EXCL_LINE */ + } + return XML_ERROR_RECURSIVE_ENTITY_REF; + } + if (entity->notation) { + if (enc == parser->m_encoding) + parser->m_eventPtr = ptr; + return XML_ERROR_BINARY_ENTITY_REF; + } + if (! entity->textPtr) { + if (enc == parser->m_encoding) + parser->m_eventPtr = ptr; + return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; + } else { + enum XML_Error result; + const XML_Char *textEnd = entity->textPtr + entity->textLen; + entity->open = XML_TRUE; +#ifdef XML_DTD + entityTrackingOnOpen(parser, entity, __LINE__); +#endif + result = appendAttributeValue(parser, parser->m_internalEncoding, + isCdata, (const char *)entity->textPtr, + (const char *)textEnd, pool, + XML_ACCOUNT_ENTITY_EXPANSION); +#ifdef XML_DTD + entityTrackingOnClose(parser, entity, __LINE__); +#endif + entity->open = XML_FALSE; + if (result) + return result; + } + } break; default: - if (enc == encoding) - eventPtr = ptr; + /* The only token returned by XmlAttributeValueTok() that does + * not have an explicit case here is XML_TOK_PARTIAL_CHAR. + * Getting that would require an entity name to contain an + * incomplete XML character (e.g. \xE2\x82); however previous + * tokenisers will have already recognised and rejected such + * names before XmlAttributeValueTok() gets a look-in. This + * default case should be retained as a safety net, but the code + * excluded from coverage tests. + * + * LCOV_EXCL_START + */ + if (enc == parser->m_encoding) + parser->m_eventPtr = ptr; return XML_ERROR_UNEXPECTED_STATE; + /* LCOV_EXCL_STOP */ } ptr = next; } @@ -5128,87 +6076,98 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, } static enum XML_Error -storeEntityValue(XML_Parser parser, - const ENCODING *enc, - const char *entityTextPtr, - const char *entityTextEnd) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ +storeEntityValue(XML_Parser parser, const ENCODING *enc, + const char *entityTextPtr, const char *entityTextEnd, + enum XML_Account account) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ STRING_POOL *pool = &(dtd->entityValuePool); enum XML_Error result = XML_ERROR_NONE; #ifdef XML_DTD - int oldInEntityValue = prologState.inEntityValue; - prologState.inEntityValue = 1; + int oldInEntityValue = parser->m_prologState.inEntityValue; + parser->m_prologState.inEntityValue = 1; +#else + UNUSED_P(account); #endif /* XML_DTD */ /* never return Null for the value argument in EntityDeclHandler, since this would indicate an external entity; therefore we have to make sure that entityValuePool.start is not null */ - if (!pool->blocks) { - if (!poolGrow(pool)) + if (! pool->blocks) { + if (! poolGrow(pool)) return XML_ERROR_NO_MEMORY; } for (;;) { - const char *next; + const char *next + = entityTextPtr; /* XmlEntityValueTok doesn't always set the last arg */ int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); + +#ifdef XML_DTD + if (! accountingDiffTolerated(parser, tok, entityTextPtr, next, __LINE__, + account)) { + accountingOnAbort(parser); + result = XML_ERROR_AMPLIFICATION_LIMIT_BREACH; + goto endEntityValue; + } +#endif + switch (tok) { case XML_TOK_PARAM_ENTITY_REF: #ifdef XML_DTD - if (isParamEntity || enc != encoding) { + if (parser->m_isParamEntity || enc != parser->m_encoding) { const XML_Char *name; ENTITY *entity; - name = poolStoreString(&tempPool, enc, + name = poolStoreString(&parser->m_tempPool, enc, entityTextPtr + enc->minBytesPerChar, next - enc->minBytesPerChar); - if (!name) { + if (! name) { result = XML_ERROR_NO_MEMORY; goto endEntityValue; } entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); - poolDiscard(&tempPool); - if (!entity) { + poolDiscard(&parser->m_tempPool); + if (! entity) { /* not a well-formedness error - see XML 1.0: WFC Entity Declared */ /* cannot report skipped entity here - see comments on - skippedEntityHandler - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, name, 0); + parser->m_skippedEntityHandler + if (parser->m_skippedEntityHandler) + parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); */ dtd->keepProcessing = dtd->standalone; goto endEntityValue; } if (entity->open) { - if (enc == encoding) - eventPtr = entityTextPtr; + if (enc == parser->m_encoding) + parser->m_eventPtr = entityTextPtr; result = XML_ERROR_RECURSIVE_ENTITY_REF; goto endEntityValue; } if (entity->systemId) { - if (externalEntityRefHandler) { + if (parser->m_externalEntityRefHandler) { dtd->paramEntityRead = XML_FALSE; entity->open = XML_TRUE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) { + entityTrackingOnOpen(parser, entity, __LINE__); + if (! parser->m_externalEntityRefHandler( + parser->m_externalEntityRefHandlerArg, 0, entity->base, + entity->systemId, entity->publicId)) { + entityTrackingOnClose(parser, entity, __LINE__); entity->open = XML_FALSE; result = XML_ERROR_EXTERNAL_ENTITY_HANDLING; goto endEntityValue; } + entityTrackingOnClose(parser, entity, __LINE__); entity->open = XML_FALSE; - if (!dtd->paramEntityRead) + if (! dtd->paramEntityRead) dtd->keepProcessing = dtd->standalone; - } - else + } else dtd->keepProcessing = dtd->standalone; - } - else { + } else { entity->open = XML_TRUE; - result = storeEntityValue(parser, - internalEncoding, - (char *)entity->textPtr, - (char *)(entity->textPtr - + entity->textLen)); + entityTrackingOnOpen(parser, entity, __LINE__); + result = storeEntityValue( + parser, parser->m_internalEncoding, (const char *)entity->textPtr, + (const char *)(entity->textPtr + entity->textLen), + XML_ACCOUNT_ENTITY_EXPANSION); + entityTrackingOnClose(parser, entity, __LINE__); entity->open = XML_FALSE; if (result) goto endEntityValue; @@ -5218,7 +6177,7 @@ storeEntityValue(XML_Parser parser, #endif /* XML_DTD */ /* In the internal subset, PE references are not legal within markup declarations, e.g entity values in this case. */ - eventPtr = entityTextPtr; + parser->m_eventPtr = entityTextPtr; result = XML_ERROR_PARAM_ENTITY_REF; goto endEntityValue; case XML_TOK_NONE: @@ -5226,7 +6185,7 @@ storeEntityValue(XML_Parser parser, goto endEntityValue; case XML_TOK_ENTITY_REF: case XML_TOK_DATA_CHARS: - if (!poolAppend(pool, enc, entityTextPtr, next)) { + if (! poolAppend(pool, enc, entityTextPtr, next)) { result = XML_ERROR_NO_MEMORY; goto endEntityValue; } @@ -5235,67 +6194,75 @@ storeEntityValue(XML_Parser parser, next = entityTextPtr + enc->minBytesPerChar; /* fall through */ case XML_TOK_DATA_NEWLINE: - if (pool->end == pool->ptr && !poolGrow(pool)) { - result = XML_ERROR_NO_MEMORY; + if (pool->end == pool->ptr && ! poolGrow(pool)) { + result = XML_ERROR_NO_MEMORY; goto endEntityValue; } *(pool->ptr)++ = 0xA; break; - case XML_TOK_CHAR_REF: - { - XML_Char buf[XML_ENCODE_MAX]; - int i; - int n = XmlCharRefNumber(enc, entityTextPtr); - if (n < 0) { - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_BAD_CHAR_REF; - goto endEntityValue; - } - n = XmlEncode(n, (ICHAR *)buf); - if (!n) { - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_BAD_CHAR_REF; - goto endEntityValue; - } - for (i = 0; i < n; i++) { - if (pool->end == pool->ptr && !poolGrow(pool)) { - result = XML_ERROR_NO_MEMORY; - goto endEntityValue; - } - *(pool->ptr)++ = buf[i]; - } + case XML_TOK_CHAR_REF: { + XML_Char buf[XML_ENCODE_MAX]; + int i; + int n = XmlCharRefNumber(enc, entityTextPtr); + if (n < 0) { + if (enc == parser->m_encoding) + parser->m_eventPtr = entityTextPtr; + result = XML_ERROR_BAD_CHAR_REF; + goto endEntityValue; } - break; + n = XmlEncode(n, (ICHAR *)buf); + /* The XmlEncode() functions can never return 0 here. That + * error return happens if the code point passed in is either + * negative or greater than or equal to 0x110000. The + * XmlCharRefNumber() functions will all return a number + * strictly less than 0x110000 or a negative value if an error + * occurred. The negative value is intercepted above, so + * XmlEncode() is never passed a value it might return an + * error for. + */ + for (i = 0; i < n; i++) { + if (pool->end == pool->ptr && ! poolGrow(pool)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + *(pool->ptr)++ = buf[i]; + } + } break; case XML_TOK_PARTIAL: - if (enc == encoding) - eventPtr = entityTextPtr; + if (enc == parser->m_encoding) + parser->m_eventPtr = entityTextPtr; result = XML_ERROR_INVALID_TOKEN; goto endEntityValue; case XML_TOK_INVALID: - if (enc == encoding) - eventPtr = next; + if (enc == parser->m_encoding) + parser->m_eventPtr = next; result = XML_ERROR_INVALID_TOKEN; goto endEntityValue; default: - if (enc == encoding) - eventPtr = entityTextPtr; + /* This default case should be unnecessary -- all the tokens + * that XmlEntityValueTok() can return have their own explicit + * cases -- but should be retained for safety. We do however + * exclude it from the coverage statistics. + * + * LCOV_EXCL_START + */ + if (enc == parser->m_encoding) + parser->m_eventPtr = entityTextPtr; result = XML_ERROR_UNEXPECTED_STATE; goto endEntityValue; + /* LCOV_EXCL_STOP */ } entityTextPtr = next; } endEntityValue: #ifdef XML_DTD - prologState.inEntityValue = oldInEntityValue; + parser->m_prologState.inEntityValue = oldInEntityValue; #endif /* XML_DTD */ return result; } static void FASTCALL -normalizeLines(XML_Char *s) -{ +normalizeLines(XML_Char *s) { XML_Char *p; for (;; s++) { if (*s == XML_T('\0')) @@ -5309,8 +6276,7 @@ normalizeLines(XML_Char *s) *p++ = 0xA; if (*++s == 0xA) s++; - } - else + } else *p++ = *s++; } while (*s); *p = XML_T('\0'); @@ -5318,88 +6284,100 @@ normalizeLines(XML_Char *s) static int reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end) -{ + const char *start, const char *end) { const XML_Char *target; XML_Char *data; const char *tem; - if (!processingInstructionHandler) { - if (defaultHandler) + if (! parser->m_processingInstructionHandler) { + if (parser->m_defaultHandler) reportDefault(parser, enc, start, end); return 1; } start += enc->minBytesPerChar * 2; tem = start + XmlNameLength(enc, start); - target = poolStoreString(&tempPool, enc, start, tem); - if (!target) + target = poolStoreString(&parser->m_tempPool, enc, start, tem); + if (! target) return 0; - poolFinish(&tempPool); - data = poolStoreString(&tempPool, enc, - XmlSkipS(enc, tem), - end - enc->minBytesPerChar*2); - if (!data) + poolFinish(&parser->m_tempPool); + data = poolStoreString(&parser->m_tempPool, enc, XmlSkipS(enc, tem), + end - enc->minBytesPerChar * 2); + if (! data) return 0; normalizeLines(data); - processingInstructionHandler(handlerArg, target, data); - poolClear(&tempPool); + parser->m_processingInstructionHandler(parser->m_handlerArg, target, data); + poolClear(&parser->m_tempPool); return 1; } static int -reportComment(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end) -{ +reportComment(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end) { XML_Char *data; - if (!commentHandler) { - if (defaultHandler) + if (! parser->m_commentHandler) { + if (parser->m_defaultHandler) reportDefault(parser, enc, start, end); return 1; } - data = poolStoreString(&tempPool, - enc, + data = poolStoreString(&parser->m_tempPool, enc, start + enc->minBytesPerChar * 4, end - enc->minBytesPerChar * 3); - if (!data) + if (! data) return 0; normalizeLines(data); - commentHandler(handlerArg, data); - poolClear(&tempPool); + parser->m_commentHandler(parser->m_handlerArg, data); + poolClear(&parser->m_tempPool); return 1; } static void -reportDefault(XML_Parser parser, const ENCODING *enc, - const char *s, const char *end) -{ +reportDefault(XML_Parser parser, const ENCODING *enc, const char *s, + const char *end) { if (MUST_CONVERT(enc, s)) { enum XML_Convert_Result convert_res; const char **eventPP; const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); + if (enc == parser->m_encoding) { + eventPP = &parser->m_eventPtr; + eventEndPP = &parser->m_eventEndPtr; + } else { + /* To get here, two things must be true; the parser must be + * using a character encoding that is not the same as the + * encoding passed in, and the encoding passed in must need + * conversion to the internal format (UTF-8 unless XML_UNICODE + * is defined). The only occasions on which the encoding passed + * in is not the same as the parser's encoding are when it is + * the internal encoding (e.g. a previously defined parameter + * entity, already converted to internal format). This by + * definition doesn't need conversion, so the whole branch never + * gets executed. + * + * For safety's sake we don't delete these lines and merely + * exclude them from coverage statistics. + * + * LCOV_EXCL_START + */ + eventPP = &(parser->m_openInternalEntities->internalEventPtr); + eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); + /* LCOV_EXCL_STOP */ } do { - ICHAR *dataPtr = (ICHAR *)dataBuf; - convert_res = XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); + ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; + convert_res + = XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)parser->m_dataBufEnd); *eventEndPP = s; - defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf)); + parser->m_defaultHandler(parser->m_handlerArg, parser->m_dataBuf, + (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); *eventPP = s; - } while ((convert_res != XML_CONVERT_COMPLETED) && (convert_res != XML_CONVERT_INPUT_INCOMPLETE)); - } - else - defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s)); + } while ((convert_res != XML_CONVERT_COMPLETED) + && (convert_res != XML_CONVERT_INPUT_INCOMPLETE)); + } else + parser->m_defaultHandler(parser->m_handlerArg, (XML_Char *)s, + (int)((XML_Char *)end - (XML_Char *)s)); } - static int defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, - XML_Bool isId, const XML_Char *value, XML_Parser parser) -{ + XML_Bool isId, const XML_Char *value, XML_Parser parser) { DEFAULT_ATTRIBUTE *att; if (value || isId) { /* The handling of default attributes gets messed up if we have @@ -5408,22 +6386,40 @@ defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, for (i = 0; i < type->nDefaultAtts; i++) if (attId == type->defaultAtts[i].id) return 1; - if (isId && !type->idAtt && !attId->xmlns) + if (isId && ! type->idAtt && ! attId->xmlns) type->idAtt = attId; } if (type->nDefaultAtts == type->allocDefaultAtts) { if (type->allocDefaultAtts == 0) { type->allocDefaultAtts = 8; - type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts - * sizeof(DEFAULT_ATTRIBUTE)); - if (!type->defaultAtts) + type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC( + parser, type->allocDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); + if (! type->defaultAtts) { + type->allocDefaultAtts = 0; return 0; - } - else { + } + } else { DEFAULT_ATTRIBUTE *temp; + + /* Detect and prevent integer overflow */ + if (type->allocDefaultAtts > INT_MAX / 2) { + return 0; + } + int count = type->allocDefaultAtts * 2; - temp = (DEFAULT_ATTRIBUTE *) - REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE))); + + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if ((unsigned)count > (size_t)(-1) / sizeof(DEFAULT_ATTRIBUTE)) { + return 0; + } +#endif + + temp = (DEFAULT_ATTRIBUTE *)REALLOC(parser, type->defaultAtts, + (count * sizeof(DEFAULT_ATTRIBUTE))); if (temp == NULL) return 0; type->allocDefaultAtts = count; @@ -5434,92 +6430,89 @@ defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, att->id = attId; att->value = value; att->isCdata = isCdata; - if (!isCdata) + if (! isCdata) attId->maybeTokenized = XML_TRUE; type->nDefaultAtts += 1; return 1; } static int -setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ +setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ const XML_Char *name; for (name = elementType->name; *name; name++) { if (*name == XML_T(ASCII_COLON)) { PREFIX *prefix; const XML_Char *s; for (s = elementType->name; s != name; s++) { - if (!poolAppendChar(&dtd->pool, *s)) + if (! poolAppendChar(&dtd->pool, *s)) return 0; } - if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + if (! poolAppendChar(&dtd->pool, XML_T('\0'))) return 0; prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), sizeof(PREFIX)); - if (!prefix) + if (! prefix) return 0; if (prefix->name == poolStart(&dtd->pool)) poolFinish(&dtd->pool); else poolDiscard(&dtd->pool); elementType->prefix = prefix; - + break; } } return 1; } static ATTRIBUTE_ID * -getAttributeId(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ +getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ ATTRIBUTE_ID *id; const XML_Char *name; - if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + if (! poolAppendChar(&dtd->pool, XML_T('\0'))) return NULL; name = poolStoreString(&dtd->pool, enc, start, end); - if (!name) + if (! name) return NULL; /* skip quotation mark - its storage will be re-used (like in name[-1]) */ ++name; - id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, sizeof(ATTRIBUTE_ID)); - if (!id) + id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, + sizeof(ATTRIBUTE_ID)); + if (! id) return NULL; if (id->name != name) poolDiscard(&dtd->pool); else { poolFinish(&dtd->pool); - if (!ns) + if (! parser->m_ns) ; - else if (name[0] == XML_T(ASCII_x) - && name[1] == XML_T(ASCII_m) - && name[2] == XML_T(ASCII_l) - && name[3] == XML_T(ASCII_n) - && name[4] == XML_T(ASCII_s) - && (name[5] == XML_T('\0') || name[5] == XML_T(ASCII_COLON))) { + else if (name[0] == XML_T(ASCII_x) && name[1] == XML_T(ASCII_m) + && name[2] == XML_T(ASCII_l) && name[3] == XML_T(ASCII_n) + && name[4] == XML_T(ASCII_s) + && (name[5] == XML_T('\0') || name[5] == XML_T(ASCII_COLON))) { if (name[5] == XML_T('\0')) id->prefix = &dtd->defaultPrefix; else - id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, sizeof(PREFIX)); + id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, + sizeof(PREFIX)); id->xmlns = XML_TRUE; - } - else { + } else { int i; for (i = 0; name[i]; i++) { /* attributes without prefix are *not* in the default namespace */ if (name[i] == XML_T(ASCII_COLON)) { int j; for (j = 0; j < i; j++) { - if (!poolAppendChar(&dtd->pool, name[j])) + if (! poolAppendChar(&dtd->pool, name[j])) return NULL; } - if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + if (! poolAppendChar(&dtd->pool, XML_T('\0'))) return NULL; - id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), - sizeof(PREFIX)); - if (!id->prefix) + id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, + poolStart(&dtd->pool), sizeof(PREFIX)); + if (! id->prefix) return NULL; if (id->prefix->name == poolStart(&dtd->pool)) poolFinish(&dtd->pool); @@ -5536,23 +6529,44 @@ getAttributeId(XML_Parser parser, const ENCODING *enc, #define CONTEXT_SEP XML_T(ASCII_FF) static const XML_Char * -getContext(XML_Parser parser) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ +getContext(XML_Parser parser) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ HASH_TABLE_ITER iter; XML_Bool needSep = XML_FALSE; if (dtd->defaultPrefix.binding) { int i; int len; - if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) + if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_EQUALS))) return NULL; len = dtd->defaultPrefix.binding->uriLen; - if (namespaceSeparator) + if (parser->m_namespaceSeparator) len--; - for (i = 0; i < len; i++) - if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i])) - return NULL; + for (i = 0; i < len; i++) { + if (! poolAppendChar(&parser->m_tempPool, + dtd->defaultPrefix.binding->uri[i])) { + /* Because of memory caching, I don't believe this line can be + * executed. + * + * This is part of a loop copying the default prefix binding + * URI into the parser's temporary string pool. Previously, + * that URI was copied into the same string pool, with a + * terminating NUL character, as part of setContext(). When + * the pool was cleared, that leaves a block definitely big + * enough to hold the URI on the free block list of the pool. + * The URI copy in getContext() therefore cannot run out of + * memory. + * + * If the pool is used between the setContext() and + * getContext() calls, the worst it can do is leave a bigger + * block on the front of the free list. Given that this is + * all somewhat inobvious and program logic can be changed, we + * don't delete the line but we do exclude it from the test + * coverage statistics. + */ + return NULL; /* LCOV_EXCL_LINE */ + } + } needSep = XML_TRUE; } @@ -5562,102 +6576,107 @@ getContext(XML_Parser parser) int len; const XML_Char *s; PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter); - if (!prefix) + if (! prefix) break; - if (!prefix->binding) - continue; - if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) + if (! prefix->binding) { + /* This test appears to be (justifiable) paranoia. There does + * not seem to be a way of injecting a prefix without a binding + * that doesn't get errored long before this function is called. + * The test should remain for safety's sake, so we instead + * exclude the following line from the coverage statistics. + */ + continue; /* LCOV_EXCL_LINE */ + } + if (needSep && ! poolAppendChar(&parser->m_tempPool, CONTEXT_SEP)) return NULL; for (s = prefix->name; *s; s++) - if (!poolAppendChar(&tempPool, *s)) + if (! poolAppendChar(&parser->m_tempPool, *s)) return NULL; - if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) + if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_EQUALS))) return NULL; len = prefix->binding->uriLen; - if (namespaceSeparator) + if (parser->m_namespaceSeparator) len--; for (i = 0; i < len; i++) - if (!poolAppendChar(&tempPool, prefix->binding->uri[i])) + if (! poolAppendChar(&parser->m_tempPool, prefix->binding->uri[i])) return NULL; needSep = XML_TRUE; } - hashTableIterInit(&iter, &(dtd->generalEntities)); for (;;) { const XML_Char *s; ENTITY *e = (ENTITY *)hashTableIterNext(&iter); - if (!e) + if (! e) break; - if (!e->open) + if (! e->open) continue; - if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) + if (needSep && ! poolAppendChar(&parser->m_tempPool, CONTEXT_SEP)) return NULL; for (s = e->name; *s; s++) - if (!poolAppendChar(&tempPool, *s)) + if (! poolAppendChar(&parser->m_tempPool, *s)) return 0; needSep = XML_TRUE; } - if (!poolAppendChar(&tempPool, XML_T('\0'))) + if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) return NULL; - return tempPool.start; + return parser->m_tempPool.start; } static XML_Bool -setContext(XML_Parser parser, const XML_Char *context) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ +setContext(XML_Parser parser, const XML_Char *context) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ const XML_Char *s = context; while (*context != XML_T('\0')) { if (*s == CONTEXT_SEP || *s == XML_T('\0')) { ENTITY *e; - if (!poolAppendChar(&tempPool, XML_T('\0'))) + if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) return XML_FALSE; - e = (ENTITY *)lookup(parser, &dtd->generalEntities, poolStart(&tempPool), 0); + e = (ENTITY *)lookup(parser, &dtd->generalEntities, + poolStart(&parser->m_tempPool), 0); if (e) e->open = XML_TRUE; if (*s != XML_T('\0')) s++; context = s; - poolDiscard(&tempPool); - } - else if (*s == XML_T(ASCII_EQUALS)) { + poolDiscard(&parser->m_tempPool); + } else if (*s == XML_T(ASCII_EQUALS)) { PREFIX *prefix; - if (poolLength(&tempPool) == 0) + if (poolLength(&parser->m_tempPool) == 0) prefix = &dtd->defaultPrefix; else { - if (!poolAppendChar(&tempPool, XML_T('\0'))) + if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) return XML_FALSE; - prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&tempPool), - sizeof(PREFIX)); - if (!prefix) + prefix + = (PREFIX *)lookup(parser, &dtd->prefixes, + poolStart(&parser->m_tempPool), sizeof(PREFIX)); + if (! prefix) return XML_FALSE; - if (prefix->name == poolStart(&tempPool)) { + if (prefix->name == poolStart(&parser->m_tempPool)) { prefix->name = poolCopyString(&dtd->pool, prefix->name); - if (!prefix->name) + if (! prefix->name) return XML_FALSE; } - poolDiscard(&tempPool); + poolDiscard(&parser->m_tempPool); } - for (context = s + 1; - *context != CONTEXT_SEP && *context != XML_T('\0'); + for (context = s + 1; *context != CONTEXT_SEP && *context != XML_T('\0'); context++) - if (!poolAppendChar(&tempPool, *context)) + if (! poolAppendChar(&parser->m_tempPool, *context)) return XML_FALSE; - if (!poolAppendChar(&tempPool, XML_T('\0'))) + if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) return XML_FALSE; - if (addBinding(parser, prefix, NULL, poolStart(&tempPool), - &inheritedBindings) != XML_ERROR_NONE) + if (addBinding(parser, prefix, NULL, poolStart(&parser->m_tempPool), + &parser->m_inheritedBindings) + != XML_ERROR_NONE) return XML_FALSE; - poolDiscard(&tempPool); + poolDiscard(&parser->m_tempPool); if (*context != XML_T('\0')) ++context; s = context; - } - else { - if (!poolAppendChar(&tempPool, *s)) + } else { + if (! poolAppendChar(&parser->m_tempPool, *s)) return XML_FALSE; s++; } @@ -5666,8 +6685,7 @@ setContext(XML_Parser parser, const XML_Char *context) } static void FASTCALL -normalizePublicId(XML_Char *publicId) -{ +normalizePublicId(XML_Char *publicId) { XML_Char *p = publicId; XML_Char *s; for (s = publicId; *s; s++) { @@ -5688,9 +6706,8 @@ normalizePublicId(XML_Char *publicId) } static DTD * -dtdCreate(const XML_Memory_Handling_Suite *ms) -{ - DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD)); +dtdCreate(const XML_Memory_Handling_Suite *ms) { + DTD *p = ms->malloc_fcn(sizeof(DTD)); if (p == NULL) return p; poolInit(&(p->pool), ms); @@ -5721,13 +6738,12 @@ dtdCreate(const XML_Memory_Handling_Suite *ms) } static void -dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) -{ +dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) { HASH_TABLE_ITER iter; hashTableIterInit(&iter, &(p->elementTypes)); for (;;) { ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!e) + if (! e) break; if (e->allocDefaultAtts != 0) ms->free_fcn(e->defaultAtts); @@ -5763,13 +6779,12 @@ dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) } static void -dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) -{ +dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) { HASH_TABLE_ITER iter; hashTableIterInit(&iter, &(p->elementTypes)); for (;;) { ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!e) + if (! e) break; if (e->allocDefaultAtts != 0) ms->free_fcn(e->defaultAtts); @@ -5794,8 +6809,8 @@ dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) The new DTD has already been initialized. */ static int -dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms) -{ +dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, + const XML_Memory_Handling_Suite *ms) { HASH_TABLE_ITER iter; /* Copy the prefix table. */ @@ -5804,12 +6819,12 @@ dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_H for (;;) { const XML_Char *name; const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter); - if (!oldP) + if (! oldP) break; name = poolCopyString(&(newDtd->pool), oldP->name); - if (!name) + if (! name) return 0; - if (!lookup(oldParser, &(newDtd->prefixes), name, sizeof(PREFIX))) + if (! lookup(oldParser, &(newDtd->prefixes), name, sizeof(PREFIX))) return 0; } @@ -5822,18 +6837,18 @@ dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_H const XML_Char *name; const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter); - if (!oldA) + if (! oldA) break; /* Remember to allocate the scratch byte before the name. */ - if (!poolAppendChar(&(newDtd->pool), XML_T('\0'))) + if (! poolAppendChar(&(newDtd->pool), XML_T('\0'))) return 0; name = poolCopyString(&(newDtd->pool), oldA->name); - if (!name) + if (! name) return 0; ++name; newA = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), name, sizeof(ATTRIBUTE_ID)); - if (!newA) + if (! newA) return 0; newA->maybeTokenized = oldA->maybeTokenized; if (oldA->prefix) { @@ -5855,58 +6870,52 @@ dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_H ELEMENT_TYPE *newE; const XML_Char *name; const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!oldE) + if (! oldE) break; name = poolCopyString(&(newDtd->pool), oldE->name); - if (!name) + if (! name) return 0; newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name, sizeof(ELEMENT_TYPE)); - if (!newE) + if (! newE) return 0; if (oldE->nDefaultAtts) { - newE->defaultAtts = (DEFAULT_ATTRIBUTE *) - ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); - if (!newE->defaultAtts) { - ms->free_fcn(newE); + newE->defaultAtts + = ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); + if (! newE->defaultAtts) { return 0; } } if (oldE->idAtt) - newE->idAtt = (ATTRIBUTE_ID *) - lookup(oldParser, &(newDtd->attributeIds), oldE->idAtt->name, 0); + newE->idAtt = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), + oldE->idAtt->name, 0); newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts; if (oldE->prefix) newE->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), oldE->prefix->name, 0); for (i = 0; i < newE->nDefaultAtts; i++) { - newE->defaultAtts[i].id = (ATTRIBUTE_ID *) - lookup(oldParser, &(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); + newE->defaultAtts[i].id = (ATTRIBUTE_ID *)lookup( + oldParser, &(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata; if (oldE->defaultAtts[i].value) { newE->defaultAtts[i].value = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value); - if (!newE->defaultAtts[i].value) + if (! newE->defaultAtts[i].value) return 0; - } - else + } else newE->defaultAtts[i].value = NULL; } } /* Copy the entity tables. */ - if (!copyEntityTable(oldParser, - &(newDtd->generalEntities), - &(newDtd->pool), - &(oldDtd->generalEntities))) - return 0; + if (! copyEntityTable(oldParser, &(newDtd->generalEntities), &(newDtd->pool), + &(oldDtd->generalEntities))) + return 0; #ifdef XML_DTD - if (!copyEntityTable(oldParser, - &(newDtd->paramEntities), - &(newDtd->pool), - &(oldDtd->paramEntities))) - return 0; + if (! copyEntityTable(oldParser, &(newDtd->paramEntities), &(newDtd->pool), + &(oldDtd->paramEntities))) + return 0; newDtd->paramEntityRead = oldDtd->paramEntityRead; #endif /* XML_DTD */ @@ -5923,14 +6932,11 @@ dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_H newDtd->scaffIndex = oldDtd->scaffIndex; return 1; -} /* End dtdCopy */ +} /* End dtdCopy */ static int -copyEntityTable(XML_Parser oldParser, - HASH_TABLE *newTable, - STRING_POOL *newPool, - const HASH_TABLE *oldTable) -{ +copyEntityTable(XML_Parser oldParser, HASH_TABLE *newTable, + STRING_POOL *newPool, const HASH_TABLE *oldTable) { HASH_TABLE_ITER iter; const XML_Char *cachedOldBase = NULL; const XML_Char *cachedNewBase = NULL; @@ -5941,17 +6947,17 @@ copyEntityTable(XML_Parser oldParser, ENTITY *newE; const XML_Char *name; const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter); - if (!oldE) + if (! oldE) break; name = poolCopyString(newPool, oldE->name); - if (!name) + if (! name) return 0; newE = (ENTITY *)lookup(oldParser, newTable, name, sizeof(ENTITY)); - if (!newE) + if (! newE) return 0; if (oldE->systemId) { const XML_Char *tem = poolCopyString(newPool, oldE->systemId); - if (!tem) + if (! tem) return 0; newE->systemId = tem; if (oldE->base) { @@ -5960,29 +6966,28 @@ copyEntityTable(XML_Parser oldParser, else { cachedOldBase = oldE->base; tem = poolCopyString(newPool, cachedOldBase); - if (!tem) + if (! tem) return 0; cachedNewBase = newE->base = tem; } } if (oldE->publicId) { tem = poolCopyString(newPool, oldE->publicId); - if (!tem) + if (! tem) return 0; newE->publicId = tem; } - } - else { - const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr, - oldE->textLen); - if (!tem) + } else { + const XML_Char *tem + = poolCopyStringN(newPool, oldE->textPtr, oldE->textLen); + if (! tem) return 0; newE->textPtr = tem; newE->textLen = oldE->textLen; } if (oldE->notation) { const XML_Char *tem = poolCopyString(newPool, oldE->notation); - if (!tem) + if (! tem) return 0; newE->notation = tem; } @@ -5995,44 +7000,57 @@ copyEntityTable(XML_Parser oldParser, #define INIT_POWER 6 static XML_Bool FASTCALL -keyeq(KEY s1, KEY s2) -{ +keyeq(KEY s1, KEY s2) { for (; *s1 == *s2; s1++, s2++) if (*s1 == 0) return XML_TRUE; return XML_FALSE; } +static size_t +keylen(KEY s) { + size_t len = 0; + for (; *s; s++, len++) + ; + return len; +} + +static void +copy_salt_to_sipkey(XML_Parser parser, struct sipkey *key) { + key->k[0] = 0; + key->k[1] = get_hash_secret_salt(parser); +} + static unsigned long FASTCALL -hash(XML_Parser parser, KEY s) -{ - unsigned long h = hash_secret_salt; - while (*s) - h = CHAR_HASH(h, *s++); - return h; +hash(XML_Parser parser, KEY s) { + struct siphash state; + struct sipkey key; + (void)sip24_valid; + copy_salt_to_sipkey(parser, &key); + sip24_init(&state, &key); + sip24_update(&state, s, keylen(s) * sizeof(XML_Char)); + return (unsigned long)sip24_final(&state); } static NAMED * -lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) -{ +lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { size_t i; if (table->size == 0) { size_t tsize; - if (!createSize) + if (! createSize) return NULL; table->power = INIT_POWER; /* table->size is a power of 2 */ table->size = (size_t)1 << INIT_POWER; tsize = table->size * sizeof(NAMED *); - table->v = (NAMED **)table->mem->malloc_fcn(tsize); - if (!table->v) { + table->v = table->mem->malloc_fcn(tsize); + if (! table->v) { table->size = 0; return NULL; } memset(table->v, 0, tsize); i = hash(parser, name) & ((unsigned long)table->size - 1); - } - else { + } else { unsigned long h = hash(parser, name); unsigned long mask = (unsigned long)table->size - 1; unsigned char step = 0; @@ -6040,21 +7058,33 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) while (table->v[i]) { if (keyeq(name, table->v[i]->name)) return table->v[i]; - if (!step) + if (! step) step = PROBE_STEP(h, mask, table->power); i < step ? (i += table->size - step) : (i -= step); } - if (!createSize) + if (! createSize) return NULL; /* check for overflow (table is half full) */ if (table->used >> (table->power - 1)) { unsigned char newPower = table->power + 1; + + /* Detect and prevent invalid shift */ + if (newPower >= sizeof(unsigned long) * 8 /* bits per byte */) { + return NULL; + } + size_t newSize = (size_t)1 << newPower; unsigned long newMask = (unsigned long)newSize - 1; + + /* Detect and prevent integer overflow */ + if (newSize > (size_t)(-1) / sizeof(NAMED *)) { + return NULL; + } + size_t tsize = newSize * sizeof(NAMED *); - NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize); - if (!newV) + NAMED **newV = table->mem->malloc_fcn(tsize); + if (! newV) return NULL; memset(newV, 0, tsize); for (i = 0; i < table->size; i++) @@ -6063,7 +7093,7 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) size_t j = newHash & newMask; step = 0; while (newV[j]) { - if (!step) + if (! step) step = PROBE_STEP(newHash, newMask, newPower); j < step ? (j += newSize - step) : (j -= step); } @@ -6076,14 +7106,14 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) i = h & newMask; step = 0; while (table->v[i]) { - if (!step) + if (! step) step = PROBE_STEP(h, newMask, newPower); i < step ? (i += newSize - step) : (i -= step); } } } - table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize); - if (!table->v[i]) + table->v[i] = table->mem->malloc_fcn(createSize); + if (! table->v[i]) return NULL; memset(table->v[i], 0, createSize); table->v[i]->name = name; @@ -6092,8 +7122,7 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) } static void FASTCALL -hashTableClear(HASH_TABLE *table) -{ +hashTableClear(HASH_TABLE *table) { size_t i; for (i = 0; i < table->size; i++) { table->mem->free_fcn(table->v[i]); @@ -6103,8 +7132,7 @@ hashTableClear(HASH_TABLE *table) } static void FASTCALL -hashTableDestroy(HASH_TABLE *table) -{ +hashTableDestroy(HASH_TABLE *table) { size_t i; for (i = 0; i < table->size; i++) table->mem->free_fcn(table->v[i]); @@ -6112,8 +7140,7 @@ hashTableDestroy(HASH_TABLE *table) } static void FASTCALL -hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) -{ +hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) { p->power = 0; p->size = 0; p->used = 0; @@ -6122,15 +7149,13 @@ hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) } static void FASTCALL -hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) -{ +hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) { iter->p = table->v; - iter->end = iter->p + table->size; + iter->end = iter->p ? iter->p + table->size : NULL; } -static NAMED * FASTCALL -hashTableIterNext(HASH_TABLE_ITER *iter) -{ +static NAMED *FASTCALL +hashTableIterNext(HASH_TABLE_ITER *iter) { while (iter->p != iter->end) { NAMED *tem = *(iter->p)++; if (tem) @@ -6140,8 +7165,7 @@ hashTableIterNext(HASH_TABLE_ITER *iter) } static void FASTCALL -poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) -{ +poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) { pool->blocks = NULL; pool->freeBlocks = NULL; pool->start = NULL; @@ -6151,9 +7175,8 @@ poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) } static void FASTCALL -poolClear(STRING_POOL *pool) -{ - if (!pool->freeBlocks) +poolClear(STRING_POOL *pool) { + if (! pool->freeBlocks) pool->freeBlocks = pool->blocks; else { BLOCK *p = pool->blocks; @@ -6171,8 +7194,7 @@ poolClear(STRING_POOL *pool) } static void FASTCALL -poolDestroy(STRING_POOL *pool) -{ +poolDestroy(STRING_POOL *pool) { BLOCK *p = pool->blocks; while (p) { BLOCK *tem = p->next; @@ -6188,26 +7210,26 @@ poolDestroy(STRING_POOL *pool) } static XML_Char * -poolAppend(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end) -{ - if (!pool->ptr && !poolGrow(pool)) +poolAppend(STRING_POOL *pool, const ENCODING *enc, const char *ptr, + const char *end) { + if (! pool->ptr && ! poolGrow(pool)) return NULL; for (;;) { - const enum XML_Convert_Result convert_res = XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); - if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + const enum XML_Convert_Result convert_res = XmlConvert( + enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); + if ((convert_res == XML_CONVERT_COMPLETED) + || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) break; - if (!poolGrow(pool)) + if (! poolGrow(pool)) return NULL; } return pool->start; } -static const XML_Char * FASTCALL -poolCopyString(STRING_POOL *pool, const XML_Char *s) -{ +static const XML_Char *FASTCALL +poolCopyString(STRING_POOL *pool, const XML_Char *s) { do { - if (!poolAppendChar(pool, *s)) + if (! poolAppendChar(pool, *s)) return NULL; } while (*s++); s = pool->start; @@ -6216,12 +7238,23 @@ poolCopyString(STRING_POOL *pool, const XML_Char *s) } static const XML_Char * -poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) -{ - if (!pool->ptr && !poolGrow(pool)) - return NULL; +poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) { + if (! pool->ptr && ! poolGrow(pool)) { + /* The following line is unreachable given the current usage of + * poolCopyStringN(). Currently it is called from exactly one + * place to copy the text of a simple general entity. By that + * point, the name of the entity is already stored in the pool, so + * pool->ptr cannot be NULL. + * + * If poolCopyStringN() is used elsewhere as it well might be, + * this line may well become executable again. Regardless, this + * sort of check shouldn't be removed lightly, so we just exclude + * it from the coverage statistics. + */ + return NULL; /* LCOV_EXCL_LINE */ + } for (; n > 0; --n, s++) { - if (!poolAppendChar(pool, *s)) + if (! poolAppendChar(pool, *s)) return NULL; } s = pool->start; @@ -6229,11 +7262,10 @@ poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) return s; } -static const XML_Char * FASTCALL -poolAppendString(STRING_POOL *pool, const XML_Char *s) -{ +static const XML_Char *FASTCALL +poolAppendString(STRING_POOL *pool, const XML_Char *s) { while (*s) { - if (!poolAppendChar(pool, *s)) + if (! poolAppendChar(pool, *s)) return NULL; s++; } @@ -6241,20 +7273,46 @@ poolAppendString(STRING_POOL *pool, const XML_Char *s) } static XML_Char * -poolStoreString(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end) -{ - if (!poolAppend(pool, enc, ptr, end)) +poolStoreString(STRING_POOL *pool, const ENCODING *enc, const char *ptr, + const char *end) { + if (! poolAppend(pool, enc, ptr, end)) return NULL; - if (pool->ptr == pool->end && !poolGrow(pool)) + if (pool->ptr == pool->end && ! poolGrow(pool)) return NULL; *(pool->ptr)++ = 0; return pool->start; } +static size_t +poolBytesToAllocateFor(int blockSize) { + /* Unprotected math would be: + ** return offsetof(BLOCK, s) + blockSize * sizeof(XML_Char); + ** + ** Detect overflow, avoiding _signed_ overflow undefined behavior + ** For a + b * c we check b * c in isolation first, so that addition of a + ** on top has no chance of making us accept a small non-negative number + */ + const size_t stretch = sizeof(XML_Char); /* can be 4 bytes */ + + if (blockSize <= 0) + return 0; + + if (blockSize > (int)(INT_MAX / stretch)) + return 0; + + { + const int stretchedBlockSize = blockSize * (int)stretch; + const int bytesToAllocate + = (int)(offsetof(BLOCK, s) + (unsigned)stretchedBlockSize); + if (bytesToAllocate < 0) + return 0; + + return (size_t)bytesToAllocate; + } +} + static XML_Bool FASTCALL -poolGrow(STRING_POOL *pool) -{ +poolGrow(STRING_POOL *pool) { if (pool->freeBlocks) { if (pool->start == 0) { pool->blocks = pool->freeBlocks; @@ -6280,44 +7338,76 @@ poolGrow(STRING_POOL *pool) } if (pool->blocks && pool->start == pool->blocks->s) { BLOCK *temp; - int blockSize = (int)((unsigned)(pool->end - pool->start)*2U); + int blockSize = (int)((unsigned)(pool->end - pool->start) * 2U); + size_t bytesToAllocate; - if (blockSize < 0) + /* NOTE: Needs to be calculated prior to calling `realloc` + to avoid dangling pointers: */ + const ptrdiff_t offsetInsideBlock = pool->ptr - pool->start; + + if (blockSize < 0) { + /* This condition traps a situation where either more than + * INT_MAX/2 bytes have already been allocated. This isn't + * readily testable, since it is unlikely that an average + * machine will have that much memory, so we exclude it from the + * coverage statistics. + */ + return XML_FALSE; /* LCOV_EXCL_LINE */ + } + + bytesToAllocate = poolBytesToAllocateFor(blockSize); + if (bytesToAllocate == 0) return XML_FALSE; - temp = (BLOCK *) - pool->mem->realloc_fcn(pool->blocks, - (offsetof(BLOCK, s) - + blockSize * sizeof(XML_Char))); + temp = (BLOCK *)pool->mem->realloc_fcn(pool->blocks, + (unsigned)bytesToAllocate); if (temp == NULL) return XML_FALSE; pool->blocks = temp; pool->blocks->size = blockSize; - pool->ptr = pool->blocks->s + (pool->ptr - pool->start); + pool->ptr = pool->blocks->s + offsetInsideBlock; pool->start = pool->blocks->s; pool->end = pool->start + blockSize; - } - else { + } else { BLOCK *tem; int blockSize = (int)(pool->end - pool->start); + size_t bytesToAllocate; - if (blockSize < 0) - return XML_FALSE; + if (blockSize < 0) { + /* This condition traps a situation where either more than + * INT_MAX bytes have already been allocated (which is prevented + * by various pieces of program logic, not least this one, never + * mind the unlikelihood of actually having that much memory) or + * the pool control fields have been corrupted (which could + * conceivably happen in an extremely buggy user handler + * function). Either way it isn't readily testable, so we + * exclude it from the coverage statistics. + */ + return XML_FALSE; /* LCOV_EXCL_LINE */ + } if (blockSize < INIT_BLOCK_SIZE) blockSize = INIT_BLOCK_SIZE; - else + else { + /* Detect overflow, avoiding _signed_ overflow undefined behavior */ + if ((int)((unsigned)blockSize * 2U) < 0) { + return XML_FALSE; + } blockSize *= 2; - tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s) - + blockSize * sizeof(XML_Char)); - if (!tem) + } + + bytesToAllocate = poolBytesToAllocateFor(blockSize); + if (bytesToAllocate == 0) + return XML_FALSE; + + tem = pool->mem->malloc_fcn(bytesToAllocate); + if (! tem) return XML_FALSE; tem->size = blockSize; tem->next = pool->blocks; pool->blocks = tem; if (pool->ptr != pool->start) - memcpy(tem->s, pool->start, - (pool->ptr - pool->start) * sizeof(XML_Char)); + memcpy(tem->s, pool->start, (pool->ptr - pool->start) * sizeof(XML_Char)); pool->ptr = tem->s + (pool->ptr - pool->start); pool->start = tem->s; pool->end = tem->s + blockSize; @@ -6326,15 +7416,14 @@ poolGrow(STRING_POOL *pool) } static int FASTCALL -nextScaffoldPart(XML_Parser parser) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - CONTENT_SCAFFOLD * me; +nextScaffoldPart(XML_Parser parser) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + CONTENT_SCAFFOLD *me; int next; - if (!dtd->scaffIndex) { - dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int)); - if (!dtd->scaffIndex) + if (! dtd->scaffIndex) { + dtd->scaffIndex = (int *)MALLOC(parser, parser->m_groupSize * sizeof(int)); + if (! dtd->scaffIndex) return -1; dtd->scaffIndex[0] = 0; } @@ -6342,15 +7431,28 @@ nextScaffoldPart(XML_Parser parser) if (dtd->scaffCount >= dtd->scaffSize) { CONTENT_SCAFFOLD *temp; if (dtd->scaffold) { - temp = (CONTENT_SCAFFOLD *) - REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); + /* Detect and prevent integer overflow */ + if (dtd->scaffSize > UINT_MAX / 2u) { + return -1; + } + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if (dtd->scaffSize > (size_t)(-1) / 2u / sizeof(CONTENT_SCAFFOLD)) { + return -1; + } +#endif + + temp = (CONTENT_SCAFFOLD *)REALLOC( + parser, dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); if (temp == NULL) return -1; dtd->scaffSize *= 2; - } - else { - temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS - * sizeof(CONTENT_SCAFFOLD)); + } else { + temp = (CONTENT_SCAFFOLD *)MALLOC(parser, INIT_SCAFFOLD_ELEMENTS + * sizeof(CONTENT_SCAFFOLD)); if (temp == NULL) return -1; dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS; @@ -6360,11 +7462,12 @@ nextScaffoldPart(XML_Parser parser) next = dtd->scaffCount++; me = &dtd->scaffold[next]; if (dtd->scaffLevel) { - CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]]; + CONTENT_SCAFFOLD *parent + = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]]; if (parent->lastchild) { dtd->scaffold[parent->lastchild].nextsib = next; } - if (!parent->childcnt) + if (! parent->childcnt) parent->firstchild = next; parent->lastchild = next; parent->childcnt++; @@ -6373,86 +7476,925 @@ nextScaffoldPart(XML_Parser parser) return next; } -static void -build_node(XML_Parser parser, - int src_node, - XML_Content *dest, - XML_Content **contpos, - XML_Char **strpos) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - dest->type = dtd->scaffold[src_node].type; - dest->quant = dtd->scaffold[src_node].quant; - if (dest->type == XML_CTYPE_NAME) { - const XML_Char *src; - dest->name = *strpos; - src = dtd->scaffold[src_node].name; - for (;;) { - *(*strpos)++ = *src; - if (!*src) - break; - src++; - } - dest->numchildren = 0; - dest->children = NULL; - } - else { - unsigned int i; - int cn; - dest->numchildren = dtd->scaffold[src_node].childcnt; - dest->children = *contpos; - *contpos += dest->numchildren; - for (i = 0, cn = dtd->scaffold[src_node].firstchild; - i < dest->numchildren; - i++, cn = dtd->scaffold[cn].nextsib) { - build_node(parser, cn, &(dest->children[i]), contpos, strpos); - } - dest->name = NULL; - } -} - static XML_Content * -build_model (XML_Parser parser) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ +build_model(XML_Parser parser) { + /* Function build_model transforms the existing parser->m_dtd->scaffold + * array of CONTENT_SCAFFOLD tree nodes into a new array of + * XML_Content tree nodes followed by a gapless list of zero-terminated + * strings. */ + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ XML_Content *ret; - XML_Content *cpos; - XML_Char * str; - int allocsize = (dtd->scaffCount * sizeof(XML_Content) - + (dtd->contentStringLen * sizeof(XML_Char))); + XML_Char *str; /* the current string writing location */ - ret = (XML_Content *)MALLOC(allocsize); - if (!ret) + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if (dtd->scaffCount > (size_t)(-1) / sizeof(XML_Content)) { + return NULL; + } + if (dtd->contentStringLen > (size_t)(-1) / sizeof(XML_Char)) { + return NULL; + } +#endif + if (dtd->scaffCount * sizeof(XML_Content) + > (size_t)(-1) - dtd->contentStringLen * sizeof(XML_Char)) { + return NULL; + } + + const size_t allocsize = (dtd->scaffCount * sizeof(XML_Content) + + (dtd->contentStringLen * sizeof(XML_Char))); + + ret = (XML_Content *)MALLOC(parser, allocsize); + if (! ret) return NULL; - str = (XML_Char *) (&ret[dtd->scaffCount]); - cpos = &ret[1]; + /* What follows is an iterative implementation (of what was previously done + * recursively in a dedicated function called "build_node". The old recursive + * build_node could be forced into stack exhaustion from input as small as a + * few megabyte, and so that was a security issue. Hence, a function call + * stack is avoided now by resolving recursion.) + * + * The iterative approach works as follows: + * + * - We have two writing pointers, both walking up the result array; one does + * the work, the other creates "jobs" for its colleague to do, and leads + * the way: + * + * - The faster one, pointer jobDest, always leads and writes "what job + * to do" by the other, once they reach that place in the + * array: leader "jobDest" stores the source node array index (relative + * to array dtd->scaffold) in field "numchildren". + * + * - The slower one, pointer dest, looks at the value stored in the + * "numchildren" field (which actually holds a source node array index + * at that time) and puts the real data from dtd->scaffold in. + * + * - Before the loop starts, jobDest writes source array index 0 + * (where the root node is located) so that dest will have something to do + * when it starts operation. + * + * - Whenever nodes with children are encountered, jobDest appends + * them as new jobs, in order. As a result, tree node siblings are + * adjacent in the resulting array, for example: + * + * [0] root, has two children + * [1] first child of 0, has three children + * [3] first child of 1, does not have children + * [4] second child of 1, does not have children + * [5] third child of 1, does not have children + * [2] second child of 0, does not have children + * + * Or (the same data) presented in flat array view: + * + * [0] root, has two children + * + * [1] first child of 0, has three children + * [2] second child of 0, does not have children + * + * [3] first child of 1, does not have children + * [4] second child of 1, does not have children + * [5] third child of 1, does not have children + * + * - The algorithm repeats until all target array indices have been processed. + */ + XML_Content *dest = ret; /* tree node writing location, moves upwards */ + XML_Content *const destLimit = &ret[dtd->scaffCount]; + XML_Content *jobDest = ret; /* next free writing location in target array */ + str = (XML_Char *)&ret[dtd->scaffCount]; + + /* Add the starting job, the root node (index 0) of the source tree */ + (jobDest++)->numchildren = 0; + + for (; dest < destLimit; dest++) { + /* Retrieve source tree array index from job storage */ + const int src_node = (int)dest->numchildren; + + /* Convert item */ + dest->type = dtd->scaffold[src_node].type; + dest->quant = dtd->scaffold[src_node].quant; + if (dest->type == XML_CTYPE_NAME) { + const XML_Char *src; + dest->name = str; + src = dtd->scaffold[src_node].name; + for (;;) { + *str++ = *src; + if (! *src) + break; + src++; + } + dest->numchildren = 0; + dest->children = NULL; + } else { + unsigned int i; + int cn; + dest->name = NULL; + dest->numchildren = dtd->scaffold[src_node].childcnt; + dest->children = jobDest; + + /* Append scaffold indices of children to array */ + for (i = 0, cn = dtd->scaffold[src_node].firstchild; + i < dest->numchildren; i++, cn = dtd->scaffold[cn].nextsib) + (jobDest++)->numchildren = (unsigned int)cn; + } + } - build_node(parser, 0, ret, &cpos, &str); return ret; } static ELEMENT_TYPE * -getElementType(XML_Parser parser, - const ENCODING *enc, - const char *ptr, - const char *end) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ +getElementType(XML_Parser parser, const ENCODING *enc, const char *ptr, + const char *end) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end); ELEMENT_TYPE *ret; - if (!name) + if (! name) return NULL; - ret = (ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE)); - if (!ret) + ret = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, + sizeof(ELEMENT_TYPE)); + if (! ret) return NULL; if (ret->name != name) poolDiscard(&dtd->pool); else { poolFinish(&dtd->pool); - if (!setElementTypePrefix(parser, ret)) + if (! setElementTypePrefix(parser, ret)) return NULL; } return ret; } + +static XML_Char * +copyString(const XML_Char *s, const XML_Memory_Handling_Suite *memsuite) { + size_t charsRequired = 0; + XML_Char *result; + + /* First determine how long the string is */ + while (s[charsRequired] != 0) { + charsRequired++; + } + /* Include the terminator */ + charsRequired++; + + /* Now allocate space for the copy */ + result = memsuite->malloc_fcn(charsRequired * sizeof(XML_Char)); + if (result == NULL) + return NULL; + /* Copy the original into place */ + memcpy(result, s, charsRequired * sizeof(XML_Char)); + return result; +} + +#ifdef XML_DTD + +static float +accountingGetCurrentAmplification(XML_Parser rootParser) { + const XmlBigCount countBytesOutput + = rootParser->m_accounting.countBytesDirect + + rootParser->m_accounting.countBytesIndirect; + const float amplificationFactor + = rootParser->m_accounting.countBytesDirect + ? (countBytesOutput + / (float)(rootParser->m_accounting.countBytesDirect)) + : 1.0f; + assert(! rootParser->m_parentParser); + return amplificationFactor; +} + +static void +accountingReportStats(XML_Parser originParser, const char *epilog) { + const XML_Parser rootParser = getRootParserOf(originParser, NULL); + assert(! rootParser->m_parentParser); + + if (rootParser->m_accounting.debugLevel < 1) { + return; + } + + const float amplificationFactor + = accountingGetCurrentAmplification(rootParser); + fprintf(stderr, + "expat: Accounting(%p): Direct " EXPAT_FMT_ULL( + "10") ", indirect " EXPAT_FMT_ULL("10") ", amplification %8.2f%s", + (void *)rootParser, rootParser->m_accounting.countBytesDirect, + rootParser->m_accounting.countBytesIndirect, + (double)amplificationFactor, epilog); +} + +static void +accountingOnAbort(XML_Parser originParser) { + accountingReportStats(originParser, " ABORTING\n"); +} + +static void +accountingReportDiff(XML_Parser rootParser, + unsigned int levelsAwayFromRootParser, const char *before, + const char *after, ptrdiff_t bytesMore, int source_line, + enum XML_Account account) { + assert(! rootParser->m_parentParser); + + fprintf(stderr, + " (+" EXPAT_FMT_PTRDIFF_T("6") " bytes %s|%d, xmlparse.c:%d) %*s\"", + bytesMore, (account == XML_ACCOUNT_DIRECT) ? "DIR" : "EXP", + levelsAwayFromRootParser, source_line, 10, ""); + + const char ellipis[] = "[..]"; + const size_t ellipsisLength = sizeof(ellipis) /* because compile-time */ - 1; + const unsigned int contextLength = 10; + + /* Note: Performance is of no concern here */ + const char *walker = before; + if ((rootParser->m_accounting.debugLevel >= 3) + || (after - before) + <= (ptrdiff_t)(contextLength + ellipsisLength + contextLength)) { + for (; walker < after; walker++) { + fprintf(stderr, "%s", unsignedCharToPrintable(walker[0])); + } + } else { + for (; walker < before + contextLength; walker++) { + fprintf(stderr, "%s", unsignedCharToPrintable(walker[0])); + } + fprintf(stderr, ellipis); + walker = after - contextLength; + for (; walker < after; walker++) { + fprintf(stderr, "%s", unsignedCharToPrintable(walker[0])); + } + } + fprintf(stderr, "\"\n"); +} + +static XML_Bool +accountingDiffTolerated(XML_Parser originParser, int tok, const char *before, + const char *after, int source_line, + enum XML_Account account) { + /* Note: We need to check the token type *first* to be sure that + * we can even access variable , safely. + * E.g. for XML_TOK_NONE may hold an invalid pointer. */ + switch (tok) { + case XML_TOK_INVALID: + case XML_TOK_PARTIAL: + case XML_TOK_PARTIAL_CHAR: + case XML_TOK_NONE: + return XML_TRUE; + } + + if (account == XML_ACCOUNT_NONE) + return XML_TRUE; /* because these bytes have been accounted for, already */ + + unsigned int levelsAwayFromRootParser; + const XML_Parser rootParser + = getRootParserOf(originParser, &levelsAwayFromRootParser); + assert(! rootParser->m_parentParser); + + const int isDirect + = (account == XML_ACCOUNT_DIRECT) && (originParser == rootParser); + const ptrdiff_t bytesMore = after - before; + + XmlBigCount *const additionTarget + = isDirect ? &rootParser->m_accounting.countBytesDirect + : &rootParser->m_accounting.countBytesIndirect; + + /* Detect and avoid integer overflow */ + if (*additionTarget > (XmlBigCount)(-1) - (XmlBigCount)bytesMore) + return XML_FALSE; + *additionTarget += bytesMore; + + const XmlBigCount countBytesOutput + = rootParser->m_accounting.countBytesDirect + + rootParser->m_accounting.countBytesIndirect; + const float amplificationFactor + = accountingGetCurrentAmplification(rootParser); + const XML_Bool tolerated + = (countBytesOutput < rootParser->m_accounting.activationThresholdBytes) + || (amplificationFactor + <= rootParser->m_accounting.maximumAmplificationFactor); + + if (rootParser->m_accounting.debugLevel >= 2) { + accountingReportStats(rootParser, ""); + accountingReportDiff(rootParser, levelsAwayFromRootParser, before, after, + bytesMore, source_line, account); + } + + return tolerated; +} + +unsigned long long +testingAccountingGetCountBytesDirect(XML_Parser parser) { + if (! parser) + return 0; + return parser->m_accounting.countBytesDirect; +} + +unsigned long long +testingAccountingGetCountBytesIndirect(XML_Parser parser) { + if (! parser) + return 0; + return parser->m_accounting.countBytesIndirect; +} + +static void +entityTrackingReportStats(XML_Parser rootParser, ENTITY *entity, + const char *action, int sourceLine) { + assert(! rootParser->m_parentParser); + if (rootParser->m_entity_stats.debugLevel < 1) + return; + +# if defined(XML_UNICODE) + const char *const entityName = "[..]"; +# else + const char *const entityName = entity->name; +# endif + + fprintf( + stderr, + "expat: Entities(%p): Count %9d, depth %2d/%2d %*s%s%s; %s length %d (xmlparse.c:%d)\n", + (void *)rootParser, rootParser->m_entity_stats.countEverOpened, + rootParser->m_entity_stats.currentDepth, + rootParser->m_entity_stats.maximumDepthSeen, + (rootParser->m_entity_stats.currentDepth - 1) * 2, "", + entity->is_param ? "%" : "&", entityName, action, entity->textLen, + sourceLine); +} + +static void +entityTrackingOnOpen(XML_Parser originParser, ENTITY *entity, int sourceLine) { + const XML_Parser rootParser = getRootParserOf(originParser, NULL); + assert(! rootParser->m_parentParser); + + rootParser->m_entity_stats.countEverOpened++; + rootParser->m_entity_stats.currentDepth++; + if (rootParser->m_entity_stats.currentDepth + > rootParser->m_entity_stats.maximumDepthSeen) { + rootParser->m_entity_stats.maximumDepthSeen++; + } + + entityTrackingReportStats(rootParser, entity, "OPEN ", sourceLine); +} + +static void +entityTrackingOnClose(XML_Parser originParser, ENTITY *entity, int sourceLine) { + const XML_Parser rootParser = getRootParserOf(originParser, NULL); + assert(! rootParser->m_parentParser); + + entityTrackingReportStats(rootParser, entity, "CLOSE", sourceLine); + rootParser->m_entity_stats.currentDepth--; +} + +static XML_Parser +getRootParserOf(XML_Parser parser, unsigned int *outLevelDiff) { + XML_Parser rootParser = parser; + unsigned int stepsTakenUpwards = 0; + while (rootParser->m_parentParser) { + rootParser = rootParser->m_parentParser; + stepsTakenUpwards++; + } + assert(! rootParser->m_parentParser); + if (outLevelDiff != NULL) { + *outLevelDiff = stepsTakenUpwards; + } + return rootParser; +} + +const char * +unsignedCharToPrintable(unsigned char c) { + switch (c) { + case 0: + return "\\0"; + case 1: + return "\\x1"; + case 2: + return "\\x2"; + case 3: + return "\\x3"; + case 4: + return "\\x4"; + case 5: + return "\\x5"; + case 6: + return "\\x6"; + case 7: + return "\\x7"; + case 8: + return "\\x8"; + case 9: + return "\\t"; + case 10: + return "\\n"; + case 11: + return "\\xB"; + case 12: + return "\\xC"; + case 13: + return "\\r"; + case 14: + return "\\xE"; + case 15: + return "\\xF"; + case 16: + return "\\x10"; + case 17: + return "\\x11"; + case 18: + return "\\x12"; + case 19: + return "\\x13"; + case 20: + return "\\x14"; + case 21: + return "\\x15"; + case 22: + return "\\x16"; + case 23: + return "\\x17"; + case 24: + return "\\x18"; + case 25: + return "\\x19"; + case 26: + return "\\x1A"; + case 27: + return "\\x1B"; + case 28: + return "\\x1C"; + case 29: + return "\\x1D"; + case 30: + return "\\x1E"; + case 31: + return "\\x1F"; + case 32: + return " "; + case 33: + return "!"; + case 34: + return "\\\""; + case 35: + return "#"; + case 36: + return "$"; + case 37: + return "%"; + case 38: + return "&"; + case 39: + return "'"; + case 40: + return "("; + case 41: + return ")"; + case 42: + return "*"; + case 43: + return "+"; + case 44: + return ","; + case 45: + return "-"; + case 46: + return "."; + case 47: + return "/"; + case 48: + return "0"; + case 49: + return "1"; + case 50: + return "2"; + case 51: + return "3"; + case 52: + return "4"; + case 53: + return "5"; + case 54: + return "6"; + case 55: + return "7"; + case 56: + return "8"; + case 57: + return "9"; + case 58: + return ":"; + case 59: + return ";"; + case 60: + return "<"; + case 61: + return "="; + case 62: + return ">"; + case 63: + return "?"; + case 64: + return "@"; + case 65: + return "A"; + case 66: + return "B"; + case 67: + return "C"; + case 68: + return "D"; + case 69: + return "E"; + case 70: + return "F"; + case 71: + return "G"; + case 72: + return "H"; + case 73: + return "I"; + case 74: + return "J"; + case 75: + return "K"; + case 76: + return "L"; + case 77: + return "M"; + case 78: + return "N"; + case 79: + return "O"; + case 80: + return "P"; + case 81: + return "Q"; + case 82: + return "R"; + case 83: + return "S"; + case 84: + return "T"; + case 85: + return "U"; + case 86: + return "V"; + case 87: + return "W"; + case 88: + return "X"; + case 89: + return "Y"; + case 90: + return "Z"; + case 91: + return "["; + case 92: + return "\\\\"; + case 93: + return "]"; + case 94: + return "^"; + case 95: + return "_"; + case 96: + return "`"; + case 97: + return "a"; + case 98: + return "b"; + case 99: + return "c"; + case 100: + return "d"; + case 101: + return "e"; + case 102: + return "f"; + case 103: + return "g"; + case 104: + return "h"; + case 105: + return "i"; + case 106: + return "j"; + case 107: + return "k"; + case 108: + return "l"; + case 109: + return "m"; + case 110: + return "n"; + case 111: + return "o"; + case 112: + return "p"; + case 113: + return "q"; + case 114: + return "r"; + case 115: + return "s"; + case 116: + return "t"; + case 117: + return "u"; + case 118: + return "v"; + case 119: + return "w"; + case 120: + return "x"; + case 121: + return "y"; + case 122: + return "z"; + case 123: + return "{"; + case 124: + return "|"; + case 125: + return "}"; + case 126: + return "~"; + case 127: + return "\\x7F"; + case 128: + return "\\x80"; + case 129: + return "\\x81"; + case 130: + return "\\x82"; + case 131: + return "\\x83"; + case 132: + return "\\x84"; + case 133: + return "\\x85"; + case 134: + return "\\x86"; + case 135: + return "\\x87"; + case 136: + return "\\x88"; + case 137: + return "\\x89"; + case 138: + return "\\x8A"; + case 139: + return "\\x8B"; + case 140: + return "\\x8C"; + case 141: + return "\\x8D"; + case 142: + return "\\x8E"; + case 143: + return "\\x8F"; + case 144: + return "\\x90"; + case 145: + return "\\x91"; + case 146: + return "\\x92"; + case 147: + return "\\x93"; + case 148: + return "\\x94"; + case 149: + return "\\x95"; + case 150: + return "\\x96"; + case 151: + return "\\x97"; + case 152: + return "\\x98"; + case 153: + return "\\x99"; + case 154: + return "\\x9A"; + case 155: + return "\\x9B"; + case 156: + return "\\x9C"; + case 157: + return "\\x9D"; + case 158: + return "\\x9E"; + case 159: + return "\\x9F"; + case 160: + return "\\xA0"; + case 161: + return "\\xA1"; + case 162: + return "\\xA2"; + case 163: + return "\\xA3"; + case 164: + return "\\xA4"; + case 165: + return "\\xA5"; + case 166: + return "\\xA6"; + case 167: + return "\\xA7"; + case 168: + return "\\xA8"; + case 169: + return "\\xA9"; + case 170: + return "\\xAA"; + case 171: + return "\\xAB"; + case 172: + return "\\xAC"; + case 173: + return "\\xAD"; + case 174: + return "\\xAE"; + case 175: + return "\\xAF"; + case 176: + return "\\xB0"; + case 177: + return "\\xB1"; + case 178: + return "\\xB2"; + case 179: + return "\\xB3"; + case 180: + return "\\xB4"; + case 181: + return "\\xB5"; + case 182: + return "\\xB6"; + case 183: + return "\\xB7"; + case 184: + return "\\xB8"; + case 185: + return "\\xB9"; + case 186: + return "\\xBA"; + case 187: + return "\\xBB"; + case 188: + return "\\xBC"; + case 189: + return "\\xBD"; + case 190: + return "\\xBE"; + case 191: + return "\\xBF"; + case 192: + return "\\xC0"; + case 193: + return "\\xC1"; + case 194: + return "\\xC2"; + case 195: + return "\\xC3"; + case 196: + return "\\xC4"; + case 197: + return "\\xC5"; + case 198: + return "\\xC6"; + case 199: + return "\\xC7"; + case 200: + return "\\xC8"; + case 201: + return "\\xC9"; + case 202: + return "\\xCA"; + case 203: + return "\\xCB"; + case 204: + return "\\xCC"; + case 205: + return "\\xCD"; + case 206: + return "\\xCE"; + case 207: + return "\\xCF"; + case 208: + return "\\xD0"; + case 209: + return "\\xD1"; + case 210: + return "\\xD2"; + case 211: + return "\\xD3"; + case 212: + return "\\xD4"; + case 213: + return "\\xD5"; + case 214: + return "\\xD6"; + case 215: + return "\\xD7"; + case 216: + return "\\xD8"; + case 217: + return "\\xD9"; + case 218: + return "\\xDA"; + case 219: + return "\\xDB"; + case 220: + return "\\xDC"; + case 221: + return "\\xDD"; + case 222: + return "\\xDE"; + case 223: + return "\\xDF"; + case 224: + return "\\xE0"; + case 225: + return "\\xE1"; + case 226: + return "\\xE2"; + case 227: + return "\\xE3"; + case 228: + return "\\xE4"; + case 229: + return "\\xE5"; + case 230: + return "\\xE6"; + case 231: + return "\\xE7"; + case 232: + return "\\xE8"; + case 233: + return "\\xE9"; + case 234: + return "\\xEA"; + case 235: + return "\\xEB"; + case 236: + return "\\xEC"; + case 237: + return "\\xED"; + case 238: + return "\\xEE"; + case 239: + return "\\xEF"; + case 240: + return "\\xF0"; + case 241: + return "\\xF1"; + case 242: + return "\\xF2"; + case 243: + return "\\xF3"; + case 244: + return "\\xF4"; + case 245: + return "\\xF5"; + case 246: + return "\\xF6"; + case 247: + return "\\xF7"; + case 248: + return "\\xF8"; + case 249: + return "\\xF9"; + case 250: + return "\\xFA"; + case 251: + return "\\xFB"; + case 252: + return "\\xFC"; + case 253: + return "\\xFD"; + case 254: + return "\\xFE"; + case 255: + return "\\xFF"; + default: + assert(0); /* never gets here */ + return "dead code"; + } + assert(0); /* never gets here */ +} + +#endif /* XML_DTD */ + +static unsigned long +getDebugLevel(const char *variableName, unsigned long defaultDebugLevel) { + const char *const valueOrNull = getenv(variableName); + if (valueOrNull == NULL) { + return defaultDebugLevel; + } + const char *const value = valueOrNull; + + errno = 0; + char *afterValue = (char *)value; + unsigned long debugLevel = strtoul(value, &afterValue, 10); + if ((errno != 0) || (afterValue[0] != '\0')) { + errno = 0; + return defaultDebugLevel; + } + + return debugLevel; +} diff --git a/deps/EXPAT/expat/xmlrole.c b/deps/EXPAT/expat/xmlrole.c index 8475238d3e..79eb6f11c1 100644 --- a/deps/EXPAT/expat/xmlrole.c +++ b/deps/EXPAT/expat/xmlrole.c @@ -1,9 +1,47 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2002 Greg Stein + Copyright (c) 2002-2006 Karl Waclawek + Copyright (c) 2002-2003 Fred L. Drake, Jr. + Copyright (c) 2005-2009 Steven Solie + Copyright (c) 2016-2021 Sebastian Pipping + Copyright (c) 2017 Rhodri James + Copyright (c) 2019 David Loffredo + Copyright (c) 2021 Dong-hee Na + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include + #include "expat_config.h" + #include "expat_external.h" #include "internal.h" #include "xmlrole.h" @@ -16,107 +54,88 @@ */ -static const char KW_ANY[] = { - ASCII_A, ASCII_N, ASCII_Y, '\0' }; -static const char KW_ATTLIST[] = { - ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; -static const char KW_CDATA[] = { - ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_DOCTYPE[] = { - ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; -static const char KW_ELEMENT[] = { - ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; -static const char KW_EMPTY[] = { - ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; -static const char KW_ENTITIES[] = { - ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, - '\0' }; -static const char KW_ENTITY[] = { - ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; -static const char KW_FIXED[] = { - ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; -static const char KW_ID[] = { - ASCII_I, ASCII_D, '\0' }; -static const char KW_IDREF[] = { - ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; -static const char KW_IDREFS[] = { - ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; +static const char KW_ANY[] = {ASCII_A, ASCII_N, ASCII_Y, '\0'}; +static const char KW_ATTLIST[] + = {ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0'}; +static const char KW_CDATA[] + = {ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0'}; +static const char KW_DOCTYPE[] + = {ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0'}; +static const char KW_ELEMENT[] + = {ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0'}; +static const char KW_EMPTY[] + = {ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0'}; +static const char KW_ENTITIES[] = {ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, + ASCII_I, ASCII_E, ASCII_S, '\0'}; +static const char KW_ENTITY[] + = {ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0'}; +static const char KW_FIXED[] + = {ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0'}; +static const char KW_ID[] = {ASCII_I, ASCII_D, '\0'}; +static const char KW_IDREF[] + = {ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0'}; +static const char KW_IDREFS[] + = {ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0'}; #ifdef XML_DTD -static const char KW_IGNORE[] = { - ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; +static const char KW_IGNORE[] + = {ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0'}; #endif -static const char KW_IMPLIED[] = { - ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; +static const char KW_IMPLIED[] + = {ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0'}; #ifdef XML_DTD -static const char KW_INCLUDE[] = { - ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; +static const char KW_INCLUDE[] + = {ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0'}; #endif -static const char KW_NDATA[] = { - ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_NMTOKEN[] = { - ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; -static const char KW_NMTOKENS[] = { - ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, - '\0' }; -static const char KW_NOTATION[] = - { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, - '\0' }; -static const char KW_PCDATA[] = { - ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_PUBLIC[] = { - ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; -static const char KW_REQUIRED[] = { - ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, - '\0' }; -static const char KW_SYSTEM[] = { - ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; +static const char KW_NDATA[] + = {ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0'}; +static const char KW_NMTOKEN[] + = {ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0'}; +static const char KW_NMTOKENS[] = {ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, + ASCII_E, ASCII_N, ASCII_S, '\0'}; +static const char KW_NOTATION[] = {ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, + ASCII_I, ASCII_O, ASCII_N, '\0'}; +static const char KW_PCDATA[] + = {ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0'}; +static const char KW_PUBLIC[] + = {ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0'}; +static const char KW_REQUIRED[] = {ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, + ASCII_R, ASCII_E, ASCII_D, '\0'}; +static const char KW_SYSTEM[] + = {ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0'}; #ifndef MIN_BYTES_PER_CHAR -#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) +# define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) #endif #ifdef XML_DTD -#define setTopLevel(state) \ - ((state)->handler = ((state)->documentEntity \ - ? internalSubset \ - : externalSubset1)) +# define setTopLevel(state) \ + ((state)->handler \ + = ((state)->documentEntity ? internalSubset : externalSubset1)) #else /* not XML_DTD */ -#define setTopLevel(state) ((state)->handler = internalSubset) +# define setTopLevel(state) ((state)->handler = internalSubset) #endif /* not XML_DTD */ -typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, +typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, int tok, + const char *ptr, const char *end, const ENCODING *enc); -static PROLOG_HANDLER - prolog0, prolog1, prolog2, - doctype0, doctype1, doctype2, doctype3, doctype4, doctype5, - internalSubset, - entity0, entity1, entity2, entity3, entity4, entity5, entity6, - entity7, entity8, entity9, entity10, - notation0, notation1, notation2, notation3, notation4, - attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6, - attlist7, attlist8, attlist9, - element0, element1, element2, element3, element4, element5, element6, - element7, +static PROLOG_HANDLER prolog0, prolog1, prolog2, doctype0, doctype1, doctype2, + doctype3, doctype4, doctype5, internalSubset, entity0, entity1, entity2, + entity3, entity4, entity5, entity6, entity7, entity8, entity9, entity10, + notation0, notation1, notation2, notation3, notation4, attlist0, attlist1, + attlist2, attlist3, attlist4, attlist5, attlist6, attlist7, attlist8, + attlist9, element0, element1, element2, element3, element4, element5, + element6, element7, #ifdef XML_DTD - externalSubset0, externalSubset1, - condSect0, condSect1, condSect2, + externalSubset0, externalSubset1, condSect0, condSect1, condSect2, #endif /* XML_DTD */ - declClose, - error; + declClose, error; static int FASTCALL common(PROLOG_STATE *state, int tok); static int PTRCALL -prolog0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +prolog0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: state->handler = prolog1; @@ -133,10 +152,8 @@ prolog0(PROLOG_STATE *state, case XML_TOK_BOM: return XML_ROLE_NONE; case XML_TOK_DECL_OPEN: - if (!XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_DOCTYPE)) + if (! XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, + KW_DOCTYPE)) break; state->handler = doctype0; return XML_ROLE_DOCTYPE_NONE; @@ -148,12 +165,8 @@ prolog0(PROLOG_STATE *state, } static int PTRCALL -prolog1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +prolog1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; @@ -162,12 +175,17 @@ prolog1(PROLOG_STATE *state, case XML_TOK_COMMENT: return XML_ROLE_COMMENT; case XML_TOK_BOM: - return XML_ROLE_NONE; + /* This case can never arise. To reach this role function, the + * parse must have passed through prolog0 and therefore have had + * some form of input, even if only a space. At that point, a + * byte order mark is no longer a valid character (though + * technically it should be interpreted as a non-breaking space), + * so will be rejected by the tokenizing stages. + */ + return XML_ROLE_NONE; /* LCOV_EXCL_LINE */ case XML_TOK_DECL_OPEN: - if (!XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_DOCTYPE)) + if (! XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, + KW_DOCTYPE)) break; state->handler = doctype0; return XML_ROLE_DOCTYPE_NONE; @@ -179,12 +197,11 @@ prolog1(PROLOG_STATE *state, } static int PTRCALL -prolog2(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +prolog2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; @@ -200,12 +217,11 @@ prolog2(PROLOG_STATE *state, } static int PTRCALL -doctype0(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +doctype0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; @@ -218,12 +234,8 @@ doctype0(PROLOG_STATE *state, } static int PTRCALL -doctype1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +doctype1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; @@ -248,12 +260,11 @@ doctype1(PROLOG_STATE *state, } static int PTRCALL -doctype2(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +doctype2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; @@ -265,12 +276,11 @@ doctype2(PROLOG_STATE *state, } static int PTRCALL -doctype3(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +doctype3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; @@ -282,12 +292,11 @@ doctype3(PROLOG_STATE *state, } static int PTRCALL -doctype4(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +doctype4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; @@ -302,12 +311,11 @@ doctype4(PROLOG_STATE *state, } static int PTRCALL -doctype5(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +doctype5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; @@ -319,40 +327,28 @@ doctype5(PROLOG_STATE *state, } static int PTRCALL -internalSubset(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +internalSubset(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; case XML_TOK_DECL_OPEN: - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, + if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_ENTITY)) { state->handler = entity0; return XML_ROLE_ENTITY_NONE; } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, + if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_ATTLIST)) { state->handler = attlist0; return XML_ROLE_ATTLIST_NONE; } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, + if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_ELEMENT)) { state->handler = element0; return XML_ROLE_ELEMENT_NONE; } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, + if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_NOTATION)) { state->handler = notation0; return XML_ROLE_NOTATION_NONE; @@ -376,12 +372,8 @@ internalSubset(PROLOG_STATE *state, #ifdef XML_DTD static int PTRCALL -externalSubset0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +externalSubset0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { state->handler = externalSubset1; if (tok == XML_TOK_XML_DECL) return XML_ROLE_TEXT_DECL; @@ -389,12 +381,8 @@ externalSubset0(PROLOG_STATE *state, } static int PTRCALL -externalSubset1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +externalSubset1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_COND_SECT_OPEN: state->handler = condSect0; @@ -421,12 +409,11 @@ externalSubset1(PROLOG_STATE *state, #endif /* XML_DTD */ static int PTRCALL -entity0(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +entity0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; @@ -441,12 +428,11 @@ entity0(PROLOG_STATE *state, } static int PTRCALL -entity1(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +entity1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; @@ -458,12 +444,8 @@ entity1(PROLOG_STATE *state, } static int PTRCALL -entity2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +entity2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; @@ -486,12 +468,11 @@ entity2(PROLOG_STATE *state, } static int PTRCALL -entity3(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +entity3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; @@ -503,12 +484,11 @@ entity3(PROLOG_STATE *state, } static int PTRCALL -entity4(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +entity4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; @@ -520,12 +500,8 @@ entity4(PROLOG_STATE *state, } static int PTRCALL -entity5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +entity5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; @@ -543,12 +519,11 @@ entity5(PROLOG_STATE *state, } static int PTRCALL -entity6(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +entity6(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; @@ -561,12 +536,8 @@ entity6(PROLOG_STATE *state, } static int PTRCALL -entity7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +entity7(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; @@ -589,12 +560,11 @@ entity7(PROLOG_STATE *state, } static int PTRCALL -entity8(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +entity8(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; @@ -606,12 +576,11 @@ entity8(PROLOG_STATE *state, } static int PTRCALL -entity9(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +entity9(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; @@ -623,12 +592,11 @@ entity9(PROLOG_STATE *state, } static int PTRCALL -entity10(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +entity10(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; @@ -640,12 +608,11 @@ entity10(PROLOG_STATE *state, } static int PTRCALL -notation0(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +notation0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NOTATION_NONE; @@ -657,12 +624,8 @@ notation0(PROLOG_STATE *state, } static int PTRCALL -notation1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +notation1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NOTATION_NONE; @@ -681,12 +644,11 @@ notation1(PROLOG_STATE *state, } static int PTRCALL -notation2(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +notation2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NOTATION_NONE; @@ -698,12 +660,11 @@ notation2(PROLOG_STATE *state, } static int PTRCALL -notation3(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +notation3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NOTATION_NONE; @@ -716,12 +677,11 @@ notation3(PROLOG_STATE *state, } static int PTRCALL -notation4(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +notation4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NOTATION_NONE; @@ -737,12 +697,11 @@ notation4(PROLOG_STATE *state, } static int PTRCALL -attlist0(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +attlist0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; @@ -755,12 +714,11 @@ attlist0(PROLOG_STATE *state, } static int PTRCALL -attlist1(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +attlist1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; @@ -776,34 +734,23 @@ attlist1(PROLOG_STATE *state, } static int PTRCALL -attlist2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +attlist2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; - case XML_TOK_NAME: - { - static const char * const types[] = { - KW_CDATA, - KW_ID, - KW_IDREF, - KW_IDREFS, - KW_ENTITY, - KW_ENTITIES, - KW_NMTOKEN, - KW_NMTOKENS, - }; - int i; - for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++) - if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { - state->handler = attlist8; - return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; - } - } + case XML_TOK_NAME: { + static const char *const types[] = { + KW_CDATA, KW_ID, KW_IDREF, KW_IDREFS, + KW_ENTITY, KW_ENTITIES, KW_NMTOKEN, KW_NMTOKENS, + }; + int i; + for (i = 0; i < (int)(sizeof(types) / sizeof(types[0])); i++) + if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { + state->handler = attlist8; + return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; + } + } if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { state->handler = attlist5; return XML_ROLE_ATTLIST_NONE; @@ -817,12 +764,11 @@ attlist2(PROLOG_STATE *state, } static int PTRCALL -attlist3(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +attlist3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; @@ -836,12 +782,11 @@ attlist3(PROLOG_STATE *state, } static int PTRCALL -attlist4(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +attlist4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; @@ -856,12 +801,11 @@ attlist4(PROLOG_STATE *state, } static int PTRCALL -attlist5(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +attlist5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; @@ -873,12 +817,11 @@ attlist5(PROLOG_STATE *state, } static int PTRCALL -attlist6(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +attlist6(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; @@ -890,12 +833,11 @@ attlist6(PROLOG_STATE *state, } static int PTRCALL -attlist7(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +attlist7(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; @@ -911,33 +853,23 @@ attlist7(PROLOG_STATE *state, /* default value */ static int PTRCALL -attlist8(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +attlist8(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; case XML_TOK_POUND_NAME: - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, + if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, KW_IMPLIED)) { state->handler = attlist1; return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE; } - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, + if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, KW_REQUIRED)) { state->handler = attlist1; return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE; } - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, + if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, KW_FIXED)) { state->handler = attlist9; return XML_ROLE_ATTLIST_NONE; @@ -951,12 +883,11 @@ attlist8(PROLOG_STATE *state, } static int PTRCALL -attlist9(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +attlist9(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; @@ -968,12 +899,11 @@ attlist9(PROLOG_STATE *state, } static int PTRCALL -element0(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +element0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; @@ -986,12 +916,8 @@ element0(PROLOG_STATE *state, } static int PTRCALL -element1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +element1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; @@ -1016,19 +942,13 @@ element1(PROLOG_STATE *state, } static int PTRCALL -element2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +element2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; case XML_TOK_POUND_NAME: - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, + if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, KW_PCDATA)) { state->handler = element3; return XML_ROLE_CONTENT_PCDATA; @@ -1056,12 +976,11 @@ element2(PROLOG_STATE *state, } static int PTRCALL -element3(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +element3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; @@ -1081,12 +1000,11 @@ element3(PROLOG_STATE *state, } static int PTRCALL -element4(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +element4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; @@ -1099,12 +1017,11 @@ element4(PROLOG_STATE *state, } static int PTRCALL -element5(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +element5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; @@ -1120,12 +1037,11 @@ element5(PROLOG_STATE *state, } static int PTRCALL -element6(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +element6(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; @@ -1150,12 +1066,11 @@ element6(PROLOG_STATE *state, } static int PTRCALL -element7(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +element7(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; @@ -1200,12 +1115,8 @@ element7(PROLOG_STATE *state, #ifdef XML_DTD static int PTRCALL -condSect0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ +condSect0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; @@ -1224,12 +1135,11 @@ condSect0(PROLOG_STATE *state, } static int PTRCALL -condSect1(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +condSect1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; @@ -1242,12 +1152,11 @@ condSect1(PROLOG_STATE *state, } static int PTRCALL -condSect2(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +condSect2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; @@ -1261,12 +1170,11 @@ condSect2(PROLOG_STATE *state, #endif /* XML_DTD */ static int PTRCALL -declClose(PROLOG_STATE *state, - int tok, - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +declClose(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); switch (tok) { case XML_TOK_PROLOG_S: return state->role_none; @@ -1277,30 +1185,52 @@ declClose(PROLOG_STATE *state, return common(state, tok); } +/* This function will only be invoked if the internal logic of the + * parser has broken down. It is used in two cases: + * + * 1: When the XML prolog has been finished. At this point the + * processor (the parser level above these role handlers) should + * switch from prologProcessor to contentProcessor and reinitialise + * the handler function. + * + * 2: When an error has been detected (via common() below). At this + * point again the processor should be switched to errorProcessor, + * which will never call a handler. + * + * The result of this is that error() can only be called if the + * processor switch failed to happen, which is an internal error and + * therefore we shouldn't be able to provoke it simply by using the + * library. It is a necessary backstop, however, so we merely exclude + * it from the coverage statistics. + * + * LCOV_EXCL_START + */ static int PTRCALL -error(PROLOG_STATE *UNUSED_P(state), - int UNUSED_P(tok), - const char *UNUSED_P(ptr), - const char *UNUSED_P(end), - const ENCODING *UNUSED_P(enc)) -{ +error(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(state); + UNUSED_P(tok); + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); return XML_ROLE_NONE; } +/* LCOV_EXCL_STOP */ static int FASTCALL -common(PROLOG_STATE *state, int tok) -{ +common(PROLOG_STATE *state, int tok) { #ifdef XML_DTD - if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) + if (! state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) return XML_ROLE_INNER_PARAM_ENTITY_REF; +#else + UNUSED_P(tok); #endif state->handler = error; return XML_ROLE_ERROR; } void -XmlPrologStateInit(PROLOG_STATE *state) -{ +XmlPrologStateInit(PROLOG_STATE *state) { state->handler = prolog0; #ifdef XML_DTD state->documentEntity = 1; @@ -1312,8 +1242,7 @@ XmlPrologStateInit(PROLOG_STATE *state) #ifdef XML_DTD void -XmlPrologStateInitExternalEntity(PROLOG_STATE *state) -{ +XmlPrologStateInitExternalEntity(PROLOG_STATE *state) { state->handler = externalSubset0; state->documentEntity = 0; state->includeLevel = 0; diff --git a/deps/EXPAT/expat/xmlrole.h b/deps/EXPAT/expat/xmlrole.h index 4dd9f06f97..d6e1fa150a 100644 --- a/deps/EXPAT/expat/xmlrole.h +++ b/deps/EXPAT/expat/xmlrole.h @@ -1,5 +1,36 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2002 Karl Waclawek + Copyright (c) 2002 Fred L. Drake, Jr. + Copyright (c) 2017 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef XmlRole_INCLUDED @@ -8,7 +39,7 @@ #ifdef __VMS /* 0 1 2 3 0 1 2 3 1234567890123456789012345678901 1234567890123456789012345678901 */ -#define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt +# define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt #endif #include "xmltok.h" @@ -85,11 +116,8 @@ enum { }; typedef struct prolog_state { - int (PTRCALL *handler) (struct prolog_state *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc); + int(PTRCALL *handler)(struct prolog_state *state, int tok, const char *ptr, + const char *end, const ENCODING *enc); unsigned level; int role_none; #ifdef XML_DTD @@ -104,8 +132,8 @@ void XmlPrologStateInit(PROLOG_STATE *); void XmlPrologStateInitExternalEntity(PROLOG_STATE *); #endif /* XML_DTD */ -#define XmlTokenRole(state, tok, ptr, end, enc) \ - (((state)->handler)(state, tok, ptr, end, enc)) +#define XmlTokenRole(state, tok, ptr, end, enc) \ + (((state)->handler)(state, tok, ptr, end, enc)) #ifdef __cplusplus } diff --git a/deps/EXPAT/expat/xmltok.c b/deps/EXPAT/expat/xmltok.c index f10b459ffd..45947d1155 100644 --- a/deps/EXPAT/expat/xmltok.c +++ b/deps/EXPAT/expat/xmltok.c @@ -1,68 +1,99 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2001-2003 Fred L. Drake, Jr. + Copyright (c) 2002 Greg Stein + Copyright (c) 2002-2016 Karl Waclawek + Copyright (c) 2005-2009 Steven Solie + Copyright (c) 2016-2022 Sebastian Pipping + Copyright (c) 2016 Pascal Cuoq + Copyright (c) 2016 Don Lewis + Copyright (c) 2017 Rhodri James + Copyright (c) 2017 Alexander Bluhm + Copyright (c) 2017 Benbuck Nason + Copyright (c) 2017 José Gutiérrez de la Concha + Copyright (c) 2019 David Loffredo + Copyright (c) 2021 Dong-hee Na + Copyright (c) 2022 Martin Ettl + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include +#include /* memcpy */ +#include + #include "expat_config.h" + #include "expat_external.h" #include "internal.h" #include "xmltok.h" #include "nametab.h" #ifdef XML_DTD -#define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok) +# define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok) #else -#define IGNORE_SECTION_TOK_VTABLE /* as nothing */ +# define IGNORE_SECTION_TOK_VTABLE /* as nothing */ #endif -#define VTABLE1 \ - { PREFIX(prologTok), PREFIX(contentTok), \ - PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \ - { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \ - PREFIX(sameName), \ - PREFIX(nameMatchesAscii), \ - PREFIX(nameLength), \ - PREFIX(skipS), \ - PREFIX(getAtts), \ - PREFIX(charRefNumber), \ - PREFIX(predefinedEntityName), \ - PREFIX(updatePosition), \ - PREFIX(isPublicId) +#define VTABLE1 \ + {PREFIX(prologTok), PREFIX(contentTok), \ + PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE}, \ + {PREFIX(attributeValueTok), PREFIX(entityValueTok)}, \ + PREFIX(nameMatchesAscii), PREFIX(nameLength), PREFIX(skipS), \ + PREFIX(getAtts), PREFIX(charRefNumber), PREFIX(predefinedEntityName), \ + PREFIX(updatePosition), PREFIX(isPublicId) #define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16) -#define UCS2_GET_NAMING(pages, hi, lo) \ - (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1u << ((lo) & 0x1F))) +#define UCS2_GET_NAMING(pages, hi, lo) \ + (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1u << ((lo)&0x1F))) /* A 2 byte UTF-8 representation splits the characters 11 bits between the bottom 5 and 6 bits of the bytes. We need 8 bits to index into pages, 3 bits to add to that index and 5 bits to generate the mask. */ -#define UTF8_GET_NAMING2(pages, byte) \ - (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \ - + ((((byte)[0]) & 3) << 1) \ - + ((((byte)[1]) >> 5) & 1)] \ - & (1u << (((byte)[1]) & 0x1F))) +#define UTF8_GET_NAMING2(pages, byte) \ + (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \ + + ((((byte)[0]) & 3) << 1) + ((((byte)[1]) >> 5) & 1)] \ + & (1u << (((byte)[1]) & 0x1F))) /* A 3 byte UTF-8 representation splits the characters 16 bits between the bottom 4, 6 and 6 bits of the bytes. We need 8 bits to index into pages, 3 bits to add to that index and 5 bits to generate the mask. */ -#define UTF8_GET_NAMING3(pages, byte) \ - (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \ - + ((((byte)[1]) >> 2) & 0xF)] \ - << 3) \ - + ((((byte)[1]) & 3) << 1) \ - + ((((byte)[2]) >> 5) & 1)] \ - & (1u << (((byte)[2]) & 0x1F))) - -#define UTF8_GET_NAMING(pages, p, n) \ - ((n) == 2 \ - ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \ - : ((n) == 3 \ - ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \ - : 0)) +#define UTF8_GET_NAMING3(pages, byte) \ + (namingBitmap \ + [((pages)[((((byte)[0]) & 0xF) << 4) + ((((byte)[1]) >> 2) & 0xF)] \ + << 3) \ + + ((((byte)[1]) & 3) << 1) + ((((byte)[2]) >> 5) & 1)] \ + & (1u << (((byte)[2]) & 0x1F))) /* Detection of invalid UTF-8 sequences is based on Table 3.1B of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/ @@ -74,88 +105,76 @@ (A & 0xC0) == 0xC0 means A > 0xBF */ -#define UTF8_INVALID2(p) \ +#define UTF8_INVALID2(p) \ ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0) -#define UTF8_INVALID3(p) \ - (((p)[2] & 0x80) == 0 \ - || \ - ((*p) == 0xEF && (p)[1] == 0xBF \ - ? \ - (p)[2] > 0xBD \ - : \ - ((p)[2] & 0xC0) == 0xC0) \ - || \ - ((*p) == 0xE0 \ - ? \ - (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \ - : \ - ((p)[1] & 0x80) == 0 \ - || \ - ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0))) +#define UTF8_INVALID3(p) \ + (((p)[2] & 0x80) == 0 \ + || ((*p) == 0xEF && (p)[1] == 0xBF ? (p)[2] > 0xBD \ + : ((p)[2] & 0xC0) == 0xC0) \ + || ((*p) == 0xE0 \ + ? (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \ + : ((p)[1] & 0x80) == 0 \ + || ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0))) -#define UTF8_INVALID4(p) \ - (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \ - || \ - ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \ - || \ - ((*p) == 0xF0 \ - ? \ - (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \ - : \ - ((p)[1] & 0x80) == 0 \ - || \ - ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0))) +#define UTF8_INVALID4(p) \ + (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 || ((p)[2] & 0x80) == 0 \ + || ((p)[2] & 0xC0) == 0xC0 \ + || ((*p) == 0xF0 \ + ? (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \ + : ((p)[1] & 0x80) == 0 \ + || ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0))) static int PTRFASTCALL -isNever(const ENCODING *UNUSED_P(enc), const char *UNUSED_P(p)) -{ +isNever(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + UNUSED_P(p); return 0; } static int PTRFASTCALL -utf8_isName2(const ENCODING *UNUSED_P(enc), const char *p) -{ +utf8_isName2(const ENCODING *enc, const char *p) { + UNUSED_P(enc); return UTF8_GET_NAMING2(namePages, (const unsigned char *)p); } static int PTRFASTCALL -utf8_isName3(const ENCODING *UNUSED_P(enc), const char *p) -{ +utf8_isName3(const ENCODING *enc, const char *p) { + UNUSED_P(enc); return UTF8_GET_NAMING3(namePages, (const unsigned char *)p); } #define utf8_isName4 isNever static int PTRFASTCALL -utf8_isNmstrt2(const ENCODING *UNUSED_P(enc), const char *p) -{ +utf8_isNmstrt2(const ENCODING *enc, const char *p) { + UNUSED_P(enc); return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p); } static int PTRFASTCALL -utf8_isNmstrt3(const ENCODING *UNUSED_P(enc), const char *p) -{ +utf8_isNmstrt3(const ENCODING *enc, const char *p) { + UNUSED_P(enc); return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p); } #define utf8_isNmstrt4 isNever static int PTRFASTCALL -utf8_isInvalid2(const ENCODING *UNUSED_P(enc), const char *p) -{ +utf8_isInvalid2(const ENCODING *enc, const char *p) { + UNUSED_P(enc); return UTF8_INVALID2((const unsigned char *)p); } static int PTRFASTCALL -utf8_isInvalid3(const ENCODING *UNUSED_P(enc), const char *p) -{ +utf8_isInvalid3(const ENCODING *enc, const char *p) { + UNUSED_P(enc); return UTF8_INVALID3((const unsigned char *)p); } static int PTRFASTCALL -utf8_isInvalid4(const ENCODING *UNUSED_P(enc), const char *p) -{ +utf8_isInvalid4(const ENCODING *enc, const char *p) { + UNUSED_P(enc); return UTF8_INVALID4((const unsigned char *)p); } @@ -163,61 +182,44 @@ struct normal_encoding { ENCODING enc; unsigned char type[256]; #ifdef XML_MIN_SIZE - int (PTRFASTCALL *byteType)(const ENCODING *, const char *); - int (PTRFASTCALL *isNameMin)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *); - int (PTRFASTCALL *byteToAscii)(const ENCODING *, const char *); - int (PTRCALL *charMatches)(const ENCODING *, const char *, int); + int(PTRFASTCALL *byteType)(const ENCODING *, const char *); + int(PTRFASTCALL *isNameMin)(const ENCODING *, const char *); + int(PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *); + int(PTRFASTCALL *byteToAscii)(const ENCODING *, const char *); + int(PTRCALL *charMatches)(const ENCODING *, const char *, int); #endif /* XML_MIN_SIZE */ - int (PTRFASTCALL *isName2)(const ENCODING *, const char *); - int (PTRFASTCALL *isName3)(const ENCODING *, const char *); - int (PTRFASTCALL *isName4)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *); - int (PTRFASTCALL *isInvalid2)(const ENCODING *, const char *); - int (PTRFASTCALL *isInvalid3)(const ENCODING *, const char *); - int (PTRFASTCALL *isInvalid4)(const ENCODING *, const char *); + int(PTRFASTCALL *isName2)(const ENCODING *, const char *); + int(PTRFASTCALL *isName3)(const ENCODING *, const char *); + int(PTRFASTCALL *isName4)(const ENCODING *, const char *); + int(PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *); + int(PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *); + int(PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *); + int(PTRFASTCALL *isInvalid2)(const ENCODING *, const char *); + int(PTRFASTCALL *isInvalid3)(const ENCODING *, const char *); + int(PTRFASTCALL *isInvalid4)(const ENCODING *, const char *); }; -#define AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *) (enc)) +#define AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *)(enc)) #ifdef XML_MIN_SIZE -#define STANDARD_VTABLE(E) \ - E ## byteType, \ - E ## isNameMin, \ - E ## isNmstrtMin, \ - E ## byteToAscii, \ - E ## charMatches, +# define STANDARD_VTABLE(E) \ + E##byteType, E##isNameMin, E##isNmstrtMin, E##byteToAscii, E##charMatches, #else -#define STANDARD_VTABLE(E) /* as nothing */ +# define STANDARD_VTABLE(E) /* as nothing */ #endif -#define NORMAL_VTABLE(E) \ - E ## isName2, \ - E ## isName3, \ - E ## isName4, \ - E ## isNmstrt2, \ - E ## isNmstrt3, \ - E ## isNmstrt4, \ - E ## isInvalid2, \ - E ## isInvalid3, \ - E ## isInvalid4 +#define NORMAL_VTABLE(E) \ + E##isName2, E##isName3, E##isName4, E##isNmstrt2, E##isNmstrt3, \ + E##isNmstrt4, E##isInvalid2, E##isInvalid3, E##isInvalid4 -#define NULL_VTABLE \ - /* isName2 */ NULL, \ - /* isName3 */ NULL, \ - /* isName4 */ NULL, \ - /* isNmstrt2 */ NULL, \ - /* isNmstrt3 */ NULL, \ - /* isNmstrt4 */ NULL, \ - /* isInvalid2 */ NULL, \ - /* isInvalid3 */ NULL, \ - /* isInvalid4 */ NULL +#define NULL_VTABLE \ + /* isName2 */ NULL, /* isName3 */ NULL, /* isName4 */ NULL, \ + /* isNmstrt2 */ NULL, /* isNmstrt3 */ NULL, /* isNmstrt4 */ NULL, \ + /* isInvalid2 */ NULL, /* isInvalid3 */ NULL, /* isInvalid4 */ NULL static int FASTCALL checkCharRefNumber(int); @@ -225,75 +227,76 @@ static int FASTCALL checkCharRefNumber(int); #include "ascii.h" #ifdef XML_MIN_SIZE -#define sb_isNameMin isNever -#define sb_isNmstrtMin isNever +# define sb_isNameMin isNever +# define sb_isNmstrtMin isNever #endif #ifdef XML_MIN_SIZE -#define MINBPC(enc) ((enc)->minBytesPerChar) +# define MINBPC(enc) ((enc)->minBytesPerChar) #else /* minimum bytes per character */ -#define MINBPC(enc) 1 +# define MINBPC(enc) 1 #endif -#define SB_BYTE_TYPE(enc, p) \ +#define SB_BYTE_TYPE(enc, p) \ (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)]) #ifdef XML_MIN_SIZE static int PTRFASTCALL -sb_byteType(const ENCODING *enc, const char *p) -{ +sb_byteType(const ENCODING *enc, const char *p) { return SB_BYTE_TYPE(enc, p); } -#define BYTE_TYPE(enc, p) \ - (AS_NORMAL_ENCODING(enc)->byteType(enc, p)) +# define BYTE_TYPE(enc, p) (AS_NORMAL_ENCODING(enc)->byteType(enc, p)) #else -#define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) +# define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) #endif #ifdef XML_MIN_SIZE -#define BYTE_TO_ASCII(enc, p) \ - (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p)) +# define BYTE_TO_ASCII(enc, p) (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p)) static int PTRFASTCALL -sb_byteToAscii(const ENCODING *enc, const char *p) -{ +sb_byteToAscii(const ENCODING *enc, const char *p) { + UNUSED_P(enc); return *p; } #else -#define BYTE_TO_ASCII(enc, p) (*(p)) +# define BYTE_TO_ASCII(enc, p) (*(p)) #endif -#define IS_NAME_CHAR(enc, p, n) \ - (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p)) -#define IS_NMSTRT_CHAR(enc, p, n) \ - (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p)) -#define IS_INVALID_CHAR(enc, p, n) \ - (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p)) - +#define IS_NAME_CHAR(enc, p, n) (AS_NORMAL_ENCODING(enc)->isName##n(enc, p)) +#define IS_NMSTRT_CHAR(enc, p, n) (AS_NORMAL_ENCODING(enc)->isNmstrt##n(enc, p)) #ifdef XML_MIN_SIZE -#define IS_NAME_CHAR_MINBPC(enc, p) \ - (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p)) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) \ - (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p)) +# define IS_INVALID_CHAR(enc, p, n) \ + (AS_NORMAL_ENCODING(enc)->isInvalid##n \ + && AS_NORMAL_ENCODING(enc)->isInvalid##n(enc, p)) #else -#define IS_NAME_CHAR_MINBPC(enc, p) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) (0) +# define IS_INVALID_CHAR(enc, p, n) \ + (AS_NORMAL_ENCODING(enc)->isInvalid##n(enc, p)) #endif #ifdef XML_MIN_SIZE -#define CHAR_MATCHES(enc, p, c) \ - (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c)) +# define IS_NAME_CHAR_MINBPC(enc, p) \ + (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p)) +# define IS_NMSTRT_CHAR_MINBPC(enc, p) \ + (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p)) +#else +# define IS_NAME_CHAR_MINBPC(enc, p) (0) +# define IS_NMSTRT_CHAR_MINBPC(enc, p) (0) +#endif + +#ifdef XML_MIN_SIZE +# define CHAR_MATCHES(enc, p, c) \ + (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c)) static int PTRCALL -sb_charMatches(const ENCODING *enc, const char *p, int c) -{ +sb_charMatches(const ENCODING *enc, const char *p, int c) { + UNUSED_P(enc); return *p == c; } #else /* c is an ASCII character */ -#define CHAR_MATCHES(enc, p, c) (*(p) == c) +# define CHAR_MATCHES(enc, p, c) (*(p) == (c)) #endif -#define PREFIX(ident) normal_ ## ident +#define PREFIX(ident) normal_##ident #define XML_TOK_IMPL_C #include "xmltok_impl.inc" #undef XML_TOK_IMPL_C @@ -308,42 +311,46 @@ sb_charMatches(const ENCODING *enc, const char *p, int c) #undef IS_NMSTRT_CHAR_MINBPC #undef IS_INVALID_CHAR -enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */ - UTF8_cval1 = 0x00, - UTF8_cval2 = 0xc0, - UTF8_cval3 = 0xe0, - UTF8_cval4 = 0xf0 +enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */ + UTF8_cval1 = 0x00, + UTF8_cval2 = 0xc0, + UTF8_cval3 = 0xe0, + UTF8_cval4 = 0xf0 }; void -align_limit_to_full_utf8_characters(const char * from, const char ** fromLimRef) -{ - const char * fromLim = *fromLimRef; +_INTERNAL_trim_to_complete_utf8_characters(const char *from, + const char **fromLimRef) { + const char *fromLim = *fromLimRef; size_t walked = 0; for (; fromLim > from; fromLim--, walked++) { const unsigned char prev = (unsigned char)fromLim[-1]; - if ((prev & 0xf8u) == 0xf0u) { /* 4-byte character, lead by 0b11110xxx byte */ + if ((prev & 0xf8u) + == 0xf0u) { /* 4-byte character, lead by 0b11110xxx byte */ if (walked + 1 >= 4) { fromLim += 4 - 1; break; } else { walked = 0; } - } else if ((prev & 0xf0u) == 0xe0u) { /* 3-byte character, lead by 0b1110xxxx byte */ + } else if ((prev & 0xf0u) + == 0xe0u) { /* 3-byte character, lead by 0b1110xxxx byte */ if (walked + 1 >= 3) { fromLim += 3 - 1; break; } else { walked = 0; } - } else if ((prev & 0xe0u) == 0xc0u) { /* 2-byte character, lead by 0b110xxxxx byte */ + } else if ((prev & 0xe0u) + == 0xc0u) { /* 2-byte character, lead by 0b110xxxxx byte */ if (walked + 1 >= 2) { fromLim += 2 - 1; break; } else { walked = 0; } - } else if ((prev & 0x80u) == 0x00u) { /* 1-byte character, matching 0b0xxxxxxx */ + } else if ((prev & 0x80u) + == 0x00u) { /* 1-byte character, matching 0b0xxxxxxx */ break; } } @@ -351,35 +358,47 @@ align_limit_to_full_utf8_characters(const char * from, const char ** fromLimRef) } static enum XML_Convert_Result PTRCALL -utf8_toUtf8(const ENCODING *UNUSED_P(enc), - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - enum XML_Convert_Result res = XML_CONVERT_COMPLETED; - char *to; - const char *from; - if (fromLim - *fromP > toLim - *toP) { - /* Avoid copying partial characters. */ - res = XML_CONVERT_OUTPUT_EXHAUSTED; - fromLim = *fromP + (toLim - *toP); - align_limit_to_full_utf8_characters(*fromP, &fromLim); - } - for (to = *toP, from = *fromP; (from < fromLim) && (to < toLim); from++, to++) - *to = *from; - *fromP = from; - *toP = to; +utf8_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, + char **toP, const char *toLim) { + bool input_incomplete = false; + bool output_exhausted = false; - if ((to == toLim) && (from < fromLim)) + /* Avoid copying partial characters (due to limited space). */ + const ptrdiff_t bytesAvailable = fromLim - *fromP; + const ptrdiff_t bytesStorable = toLim - *toP; + UNUSED_P(enc); + if (bytesAvailable > bytesStorable) { + fromLim = *fromP + bytesStorable; + output_exhausted = true; + } + + /* Avoid copying partial characters (from incomplete input). */ + { + const char *const fromLimBefore = fromLim; + _INTERNAL_trim_to_complete_utf8_characters(*fromP, &fromLim); + if (fromLim < fromLimBefore) { + input_incomplete = true; + } + } + + { + const ptrdiff_t bytesToCopy = fromLim - *fromP; + memcpy(*toP, *fromP, bytesToCopy); + *fromP += bytesToCopy; + *toP += bytesToCopy; + } + + if (output_exhausted) /* needs to go first */ return XML_CONVERT_OUTPUT_EXHAUSTED; + else if (input_incomplete) + return XML_CONVERT_INPUT_INCOMPLETE; else - return res; + return XML_CONVERT_COMPLETED; } static enum XML_Convert_Result PTRCALL -utf8_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ +utf8_toUtf16(const ENCODING *enc, const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) { enum XML_Convert_Result res = XML_CONVERT_COMPLETED; unsigned short *to = *toP; const char *from = *fromP; @@ -388,7 +407,7 @@ utf8_toUtf16(const ENCODING *enc, case BT_LEAD2: if (fromLim - from < 2) { res = XML_CONVERT_INPUT_INCOMPLETE; - break; + goto after; } *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f)); from += 2; @@ -396,37 +415,37 @@ utf8_toUtf16(const ENCODING *enc, case BT_LEAD3: if (fromLim - from < 3) { res = XML_CONVERT_INPUT_INCOMPLETE; - break; + goto after; } - *to++ = (unsigned short)(((from[0] & 0xf) << 12) - | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f)); + *to++ = (unsigned short)(((from[0] & 0xf) << 12) | ((from[1] & 0x3f) << 6) + | (from[2] & 0x3f)); from += 3; break; - case BT_LEAD4: - { - unsigned long n; - if (toLim - to < 2) { - res = XML_CONVERT_OUTPUT_EXHAUSTED; - goto after; - } - if (fromLim - from < 4) { - res = XML_CONVERT_INPUT_INCOMPLETE; - goto after; - } - n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) - | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); - n -= 0x10000; - to[0] = (unsigned short)((n >> 10) | 0xD800); - to[1] = (unsigned short)((n & 0x3FF) | 0xDC00); - to += 2; - from += 4; + case BT_LEAD4: { + unsigned long n; + if (toLim - to < 2) { + res = XML_CONVERT_OUTPUT_EXHAUSTED; + goto after; } - break; + if (fromLim - from < 4) { + res = XML_CONVERT_INPUT_INCOMPLETE; + goto after; + } + n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) + | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); + n -= 0x10000; + to[0] = (unsigned short)((n >> 10) | 0xD800); + to[1] = (unsigned short)((n & 0x3FF) | 0xDC00); + to += 2; + from += 4; + } break; default: *to++ = *from++; break; } } + if (from < fromLim) + res = XML_CONVERT_OUTPUT_EXHAUSTED; after: *fromP = from; *toP = to; @@ -434,56 +453,51 @@ after: } #ifdef XML_NS -static const struct normal_encoding utf8_encoding_ns = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#include "asciitab.h" -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; +static const struct normal_encoding utf8_encoding_ns + = {{VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0}, + { +# include "asciitab.h" +# include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)}; #endif -static const struct normal_encoding utf8_encoding = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { +static const struct normal_encoding utf8_encoding + = {{VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0}, + { #define BT_COLON BT_NMSTRT #include "asciitab.h" #undef BT_COLON #include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)}; #ifdef XML_NS -static const struct normal_encoding internal_utf8_encoding_ns = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#include "iasciitab.h" -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; +static const struct normal_encoding internal_utf8_encoding_ns + = {{VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0}, + { +# include "iasciitab.h" +# include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)}; #endif -static const struct normal_encoding internal_utf8_encoding = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { +static const struct normal_encoding internal_utf8_encoding + = {{VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0}, + { #define BT_COLON BT_NMSTRT #include "iasciitab.h" #undef BT_COLON #include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)}; static enum XML_Convert_Result PTRCALL -latin1_toUtf8(const ENCODING *UNUSED_P(enc), - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ +latin1_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, + char **toP, const char *toLim) { + UNUSED_P(enc); for (;;) { unsigned char c; if (*fromP == fromLim) @@ -495,8 +509,7 @@ latin1_toUtf8(const ENCODING *UNUSED_P(enc), *(*toP)++ = (char)((c >> 6) | UTF8_cval2); *(*toP)++ = (char)((c & 0x3f) | 0x80); (*fromP)++; - } - else { + } else { if (*toP == toLim) return XML_CONVERT_OUTPUT_EXHAUSTED; *(*toP)++ = *(*fromP)++; @@ -505,10 +518,9 @@ latin1_toUtf8(const ENCODING *UNUSED_P(enc), } static enum XML_Convert_Result PTRCALL -latin1_toUtf16(const ENCODING *UNUSED_P(enc), - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ +latin1_toUtf16(const ENCODING *enc, const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) { + UNUSED_P(enc); while (*fromP < fromLim && *toP < toLim) *(*toP)++ = (unsigned char)*(*fromP)++; @@ -520,33 +532,30 @@ latin1_toUtf16(const ENCODING *UNUSED_P(enc), #ifdef XML_NS -static const struct normal_encoding latin1_encoding_ns = { - { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(sb_) NULL_VTABLE -}; +static const struct normal_encoding latin1_encoding_ns + = {{VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0}, + { +# include "asciitab.h" +# include "latin1tab.h" + }, + STANDARD_VTABLE(sb_) NULL_VTABLE}; #endif -static const struct normal_encoding latin1_encoding = { - { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, - { +static const struct normal_encoding latin1_encoding + = {{VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0}, + { #define BT_COLON BT_NMSTRT #include "asciitab.h" #undef BT_COLON #include "latin1tab.h" - }, - STANDARD_VTABLE(sb_) NULL_VTABLE -}; + }, + STANDARD_VTABLE(sb_) NULL_VTABLE}; static enum XML_Convert_Result PTRCALL -ascii_toUtf8(const ENCODING *UNUSED_P(enc), - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ +ascii_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, + char **toP, const char *toLim) { + UNUSED_P(enc); while (*fromP < fromLim && *toP < toLim) *(*toP)++ = *(*fromP)++; @@ -558,40 +567,45 @@ ascii_toUtf8(const ENCODING *UNUSED_P(enc), #ifdef XML_NS -static const struct normal_encoding ascii_encoding_ns = { - { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, - { -#include "asciitab.h" -/* BT_NONXML == 0 */ - }, - STANDARD_VTABLE(sb_) NULL_VTABLE -}; +static const struct normal_encoding ascii_encoding_ns + = {{VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0}, + { +# include "asciitab.h" + /* BT_NONXML == 0 */ + }, + STANDARD_VTABLE(sb_) NULL_VTABLE}; #endif -static const struct normal_encoding ascii_encoding = { - { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, - { +static const struct normal_encoding ascii_encoding + = {{VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0}, + { #define BT_COLON BT_NMSTRT #include "asciitab.h" #undef BT_COLON -/* BT_NONXML == 0 */ - }, - STANDARD_VTABLE(sb_) NULL_VTABLE -}; + /* BT_NONXML == 0 */ + }, + STANDARD_VTABLE(sb_) NULL_VTABLE}; static int PTRFASTCALL -unicode_byte_type(char hi, char lo) -{ +unicode_byte_type(char hi, char lo) { switch ((unsigned char)hi) { - case 0xD8: case 0xD9: case 0xDA: case 0xDB: + /* 0xD800-0xDBFF first 16-bit code unit or high surrogate (W1) */ + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: return BT_LEAD4; - case 0xDC: case 0xDD: case 0xDE: case 0xDF: + /* 0xDC00-0xDFFF second 16-bit code unit or low surrogate (W2) */ + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: return BT_TRAIL; case 0xFF: switch ((unsigned char)lo) { - case 0xFF: - case 0xFE: + case 0xFF: /* noncharacter-FFFF */ + case 0xFE: /* noncharacter-FFFE */ return BT_NONXML; } break; @@ -599,102 +613,105 @@ unicode_byte_type(char hi, char lo) return BT_NONASCII; } -#define DEFINE_UTF16_TO_UTF8(E) \ -static enum XML_Convert_Result PTRCALL \ -E ## toUtf8(const ENCODING *UNUSED_P(enc), \ - const char **fromP, const char *fromLim, \ - char **toP, const char *toLim) \ -{ \ - const char *from = *fromP; \ - fromLim = from + (((fromLim - from) >> 1) << 1); /* shrink to even */ \ - for (; from < fromLim; from += 2) { \ - int plane; \ - unsigned char lo2; \ - unsigned char lo = GET_LO(from); \ - unsigned char hi = GET_HI(from); \ - switch (hi) { \ - case 0: \ - if (lo < 0x80) { \ - if (*toP == toLim) { \ - *fromP = from; \ - return XML_CONVERT_OUTPUT_EXHAUSTED; \ - } \ - *(*toP)++ = lo; \ - break; \ - } \ - /* fall through */ \ - case 0x1: case 0x2: case 0x3: \ - case 0x4: case 0x5: case 0x6: case 0x7: \ - if (toLim - *toP < 2) { \ - *fromP = from; \ - return XML_CONVERT_OUTPUT_EXHAUSTED; \ - } \ - *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \ - *(*toP)++ = ((lo & 0x3f) | 0x80); \ - break; \ - default: \ - if (toLim - *toP < 3) { \ - *fromP = from; \ - return XML_CONVERT_OUTPUT_EXHAUSTED; \ - } \ - /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \ - *(*toP)++ = ((hi >> 4) | UTF8_cval3); \ - *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \ - *(*toP)++ = ((lo & 0x3f) | 0x80); \ - break; \ - case 0xD8: case 0xD9: case 0xDA: case 0xDB: \ - if (toLim - *toP < 4) { \ - *fromP = from; \ - return XML_CONVERT_OUTPUT_EXHAUSTED; \ - } \ - if (fromLim - from < 4) { \ - *fromP = from; \ - return XML_CONVERT_INPUT_INCOMPLETE; \ - } \ - plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \ - *(*toP)++ = ((plane >> 2) | UTF8_cval4); \ - *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \ - from += 2; \ - lo2 = GET_LO(from); \ - *(*toP)++ = (((lo & 0x3) << 4) \ - | ((GET_HI(from) & 0x3) << 2) \ - | (lo2 >> 6) \ - | 0x80); \ - *(*toP)++ = ((lo2 & 0x3f) | 0x80); \ - break; \ - } \ - } \ - *fromP = from; \ - if (from < fromLim) \ - return XML_CONVERT_INPUT_INCOMPLETE; \ - else \ - return XML_CONVERT_COMPLETED; \ -} +#define DEFINE_UTF16_TO_UTF8(E) \ + static enum XML_Convert_Result PTRCALL E##toUtf8( \ + const ENCODING *enc, const char **fromP, const char *fromLim, \ + char **toP, const char *toLim) { \ + const char *from = *fromP; \ + UNUSED_P(enc); \ + fromLim = from + (((fromLim - from) >> 1) << 1); /* shrink to even */ \ + for (; from < fromLim; from += 2) { \ + int plane; \ + unsigned char lo2; \ + unsigned char lo = GET_LO(from); \ + unsigned char hi = GET_HI(from); \ + switch (hi) { \ + case 0: \ + if (lo < 0x80) { \ + if (*toP == toLim) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + *(*toP)++ = lo; \ + break; \ + } \ + /* fall through */ \ + case 0x1: \ + case 0x2: \ + case 0x3: \ + case 0x4: \ + case 0x5: \ + case 0x6: \ + case 0x7: \ + if (toLim - *toP < 2) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \ + *(*toP)++ = ((lo & 0x3f) | 0x80); \ + break; \ + default: \ + if (toLim - *toP < 3) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \ + *(*toP)++ = ((hi >> 4) | UTF8_cval3); \ + *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \ + *(*toP)++ = ((lo & 0x3f) | 0x80); \ + break; \ + case 0xD8: \ + case 0xD9: \ + case 0xDA: \ + case 0xDB: \ + if (toLim - *toP < 4) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + if (fromLim - from < 4) { \ + *fromP = from; \ + return XML_CONVERT_INPUT_INCOMPLETE; \ + } \ + plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \ + *(*toP)++ = (char)((plane >> 2) | UTF8_cval4); \ + *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \ + from += 2; \ + lo2 = GET_LO(from); \ + *(*toP)++ = (((lo & 0x3) << 4) | ((GET_HI(from) & 0x3) << 2) \ + | (lo2 >> 6) | 0x80); \ + *(*toP)++ = ((lo2 & 0x3f) | 0x80); \ + break; \ + } \ + } \ + *fromP = from; \ + if (from < fromLim) \ + return XML_CONVERT_INPUT_INCOMPLETE; \ + else \ + return XML_CONVERT_COMPLETED; \ + } -#define DEFINE_UTF16_TO_UTF16(E) \ -static enum XML_Convert_Result PTRCALL \ -E ## toUtf16(const ENCODING *UNUSED_P(enc), \ - const char **fromP, const char *fromLim, \ - unsigned short **toP, const unsigned short *toLim) \ -{ \ - enum XML_Convert_Result res = XML_CONVERT_COMPLETED; \ - fromLim = *fromP + (((fromLim - *fromP) >> 1) << 1); /* shrink to even */ \ - /* Avoid copying first half only of surrogate */ \ - if (fromLim - *fromP > ((toLim - *toP) << 1) \ - && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) { \ - fromLim -= 2; \ - res = XML_CONVERT_INPUT_INCOMPLETE; \ - } \ - for (; *fromP < fromLim && *toP < toLim; *fromP += 2) \ - *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \ - if ((*toP == toLim) && (*fromP < fromLim)) \ - return XML_CONVERT_OUTPUT_EXHAUSTED; \ - else \ - return res; \ -} +#define DEFINE_UTF16_TO_UTF16(E) \ + static enum XML_Convert_Result PTRCALL E##toUtf16( \ + const ENCODING *enc, const char **fromP, const char *fromLim, \ + unsigned short **toP, const unsigned short *toLim) { \ + enum XML_Convert_Result res = XML_CONVERT_COMPLETED; \ + UNUSED_P(enc); \ + fromLim = *fromP + (((fromLim - *fromP) >> 1) << 1); /* shrink to even */ \ + /* Avoid copying first half only of surrogate */ \ + if (fromLim - *fromP > ((toLim - *toP) << 1) \ + && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) { \ + fromLim -= 2; \ + res = XML_CONVERT_INPUT_INCOMPLETE; \ + } \ + for (; *fromP < fromLim && *toP < toLim; *fromP += 2) \ + *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \ + if ((*toP == toLim) && (*fromP < fromLim)) \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + else \ + return res; \ + } -#define SET2(ptr, ch) \ - (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8))) +#define SET2(ptr, ch) (((ptr)[0] = ((ch)&0xff)), ((ptr)[1] = ((ch) >> 8))) #define GET_LO(ptr) ((unsigned char)(ptr)[0]) #define GET_HI(ptr) ((unsigned char)(ptr)[1]) @@ -705,8 +722,7 @@ DEFINE_UTF16_TO_UTF16(little2_) #undef GET_LO #undef GET_HI -#define SET2(ptr, ch) \ - (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF))) +#define SET2(ptr, ch) (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch)&0xFF))) #define GET_LO(ptr) ((unsigned char)(ptr)[1]) #define GET_HI(ptr) ((unsigned char)(ptr)[0]) @@ -717,317 +733,307 @@ DEFINE_UTF16_TO_UTF16(big2_) #undef GET_LO #undef GET_HI -#define LITTLE2_BYTE_TYPE(enc, p) \ - ((p)[1] == 0 \ - ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \ - : unicode_byte_type((p)[1], (p)[0])) -#define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1) -#define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c) -#define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \ +#define LITTLE2_BYTE_TYPE(enc, p) \ + ((p)[1] == 0 ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \ + : unicode_byte_type((p)[1], (p)[0])) +#define LITTLE2_BYTE_TO_ASCII(p) ((p)[1] == 0 ? (p)[0] : -1) +#define LITTLE2_CHAR_MATCHES(p, c) ((p)[1] == 0 && (p)[0] == (c)) +#define LITTLE2_IS_NAME_CHAR_MINBPC(p) \ UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0]) -#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ +#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(p) \ UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0]) #ifdef XML_MIN_SIZE static int PTRFASTCALL -little2_byteType(const ENCODING *enc, const char *p) -{ +little2_byteType(const ENCODING *enc, const char *p) { return LITTLE2_BYTE_TYPE(enc, p); } static int PTRFASTCALL -little2_byteToAscii(const ENCODING *enc, const char *p) -{ - return LITTLE2_BYTE_TO_ASCII(enc, p); +little2_byteToAscii(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return LITTLE2_BYTE_TO_ASCII(p); } static int PTRCALL -little2_charMatches(const ENCODING *enc, const char *p, int c) -{ - return LITTLE2_CHAR_MATCHES(enc, p, c); +little2_charMatches(const ENCODING *enc, const char *p, int c) { + UNUSED_P(enc); + return LITTLE2_CHAR_MATCHES(p, c); } static int PTRFASTCALL -little2_isNameMin(const ENCODING *enc, const char *p) -{ - return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p); +little2_isNameMin(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return LITTLE2_IS_NAME_CHAR_MINBPC(p); } static int PTRFASTCALL -little2_isNmstrtMin(const ENCODING *enc, const char *p) -{ - return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p); +little2_isNmstrtMin(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return LITTLE2_IS_NMSTRT_CHAR_MINBPC(p); } -#undef VTABLE -#define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16 +# undef VTABLE +# define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16 #else /* not XML_MIN_SIZE */ -#undef PREFIX -#define PREFIX(ident) little2_ ## ident -#define MINBPC(enc) 2 +# undef PREFIX +# define PREFIX(ident) little2_##ident +# define MINBPC(enc) 2 /* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ -#define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) -#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p) -#define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c) -#define IS_NAME_CHAR(enc, p, n) 0 -#define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) -#define IS_NMSTRT_CHAR(enc, p, n) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) +# define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) +# define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(p) +# define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(p, c) +# define IS_NAME_CHAR(enc, p, n) 0 +# define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(p) +# define IS_NMSTRT_CHAR(enc, p, n) (0) +# define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(p) -#define XML_TOK_IMPL_C -#include "xmltok_impl.inc" -#undef XML_TOK_IMPL_C +# define XML_TOK_IMPL_C +# include "xmltok_impl.inc" +# undef XML_TOK_IMPL_C -#undef MINBPC -#undef BYTE_TYPE -#undef BYTE_TO_ASCII -#undef CHAR_MATCHES -#undef IS_NAME_CHAR -#undef IS_NAME_CHAR_MINBPC -#undef IS_NMSTRT_CHAR -#undef IS_NMSTRT_CHAR_MINBPC -#undef IS_INVALID_CHAR +# undef MINBPC +# undef BYTE_TYPE +# undef BYTE_TO_ASCII +# undef CHAR_MATCHES +# undef IS_NAME_CHAR +# undef IS_NAME_CHAR_MINBPC +# undef IS_NMSTRT_CHAR +# undef IS_NMSTRT_CHAR_MINBPC +# undef IS_INVALID_CHAR #endif /* not XML_MIN_SIZE */ #ifdef XML_NS -static const struct normal_encoding little2_encoding_ns = { - { VTABLE, 2, 0, -#if BYTEORDER == 1234 - 1 -#else - 0 -#endif - }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) NULL_VTABLE -}; +static const struct normal_encoding little2_encoding_ns + = {{VTABLE, 2, 0, +# if BYTEORDER == 1234 + 1 +# else + 0 +# endif + }, + { +# include "asciitab.h" +# include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) NULL_VTABLE}; #endif -static const struct normal_encoding little2_encoding = { - { VTABLE, 2, 0, +static const struct normal_encoding little2_encoding + = {{VTABLE, 2, 0, #if BYTEORDER == 1234 - 1 + 1 #else - 0 + 0 #endif - }, - { + }, + { #define BT_COLON BT_NMSTRT #include "asciitab.h" #undef BT_COLON #include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) NULL_VTABLE -}; + }, + STANDARD_VTABLE(little2_) NULL_VTABLE}; #if BYTEORDER != 4321 -#ifdef XML_NS +# ifdef XML_NS -static const struct normal_encoding internal_little2_encoding_ns = { - { VTABLE, 2, 0, 1 }, - { -#include "iasciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) NULL_VTABLE -}; +static const struct normal_encoding internal_little2_encoding_ns + = {{VTABLE, 2, 0, 1}, + { +# include "iasciitab.h" +# include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) NULL_VTABLE}; + +# endif + +static const struct normal_encoding internal_little2_encoding + = {{VTABLE, 2, 0, 1}, + { +# define BT_COLON BT_NMSTRT +# include "iasciitab.h" +# undef BT_COLON +# include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) NULL_VTABLE}; #endif -static const struct normal_encoding internal_little2_encoding = { - { VTABLE, 2, 0, 1 }, - { -#define BT_COLON BT_NMSTRT -#include "iasciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) NULL_VTABLE -}; - -#endif - - -#define BIG2_BYTE_TYPE(enc, p) \ - ((p)[0] == 0 \ - ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \ - : unicode_byte_type((p)[0], (p)[1])) -#define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1) -#define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c) -#define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \ +#define BIG2_BYTE_TYPE(enc, p) \ + ((p)[0] == 0 \ + ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \ + : unicode_byte_type((p)[0], (p)[1])) +#define BIG2_BYTE_TO_ASCII(p) ((p)[0] == 0 ? (p)[1] : -1) +#define BIG2_CHAR_MATCHES(p, c) ((p)[0] == 0 && (p)[1] == (c)) +#define BIG2_IS_NAME_CHAR_MINBPC(p) \ UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1]) -#define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ +#define BIG2_IS_NMSTRT_CHAR_MINBPC(p) \ UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1]) #ifdef XML_MIN_SIZE static int PTRFASTCALL -big2_byteType(const ENCODING *enc, const char *p) -{ +big2_byteType(const ENCODING *enc, const char *p) { return BIG2_BYTE_TYPE(enc, p); } static int PTRFASTCALL -big2_byteToAscii(const ENCODING *enc, const char *p) -{ - return BIG2_BYTE_TO_ASCII(enc, p); +big2_byteToAscii(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return BIG2_BYTE_TO_ASCII(p); } static int PTRCALL -big2_charMatches(const ENCODING *enc, const char *p, int c) -{ - return BIG2_CHAR_MATCHES(enc, p, c); +big2_charMatches(const ENCODING *enc, const char *p, int c) { + UNUSED_P(enc); + return BIG2_CHAR_MATCHES(p, c); } static int PTRFASTCALL -big2_isNameMin(const ENCODING *enc, const char *p) -{ - return BIG2_IS_NAME_CHAR_MINBPC(enc, p); +big2_isNameMin(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return BIG2_IS_NAME_CHAR_MINBPC(p); } static int PTRFASTCALL -big2_isNmstrtMin(const ENCODING *enc, const char *p) -{ - return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p); +big2_isNmstrtMin(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return BIG2_IS_NMSTRT_CHAR_MINBPC(p); } -#undef VTABLE -#define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16 +# undef VTABLE +# define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16 #else /* not XML_MIN_SIZE */ -#undef PREFIX -#define PREFIX(ident) big2_ ## ident -#define MINBPC(enc) 2 +# undef PREFIX +# define PREFIX(ident) big2_##ident +# define MINBPC(enc) 2 /* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ -#define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) -#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p) -#define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c) -#define IS_NAME_CHAR(enc, p, n) 0 -#define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p) -#define IS_NMSTRT_CHAR(enc, p, n) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) +# define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) +# define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(p) +# define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(p, c) +# define IS_NAME_CHAR(enc, p, n) 0 +# define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(p) +# define IS_NMSTRT_CHAR(enc, p, n) (0) +# define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(p) -#define XML_TOK_IMPL_C -#include "xmltok_impl.inc" -#undef XML_TOK_IMPL_C +# define XML_TOK_IMPL_C +# include "xmltok_impl.inc" +# undef XML_TOK_IMPL_C -#undef MINBPC -#undef BYTE_TYPE -#undef BYTE_TO_ASCII -#undef CHAR_MATCHES -#undef IS_NAME_CHAR -#undef IS_NAME_CHAR_MINBPC -#undef IS_NMSTRT_CHAR -#undef IS_NMSTRT_CHAR_MINBPC -#undef IS_INVALID_CHAR +# undef MINBPC +# undef BYTE_TYPE +# undef BYTE_TO_ASCII +# undef CHAR_MATCHES +# undef IS_NAME_CHAR +# undef IS_NAME_CHAR_MINBPC +# undef IS_NMSTRT_CHAR +# undef IS_NMSTRT_CHAR_MINBPC +# undef IS_INVALID_CHAR #endif /* not XML_MIN_SIZE */ #ifdef XML_NS -static const struct normal_encoding big2_encoding_ns = { - { VTABLE, 2, 0, -#if BYTEORDER == 4321 - 1 -#else - 0 -#endif - }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) NULL_VTABLE -}; +static const struct normal_encoding big2_encoding_ns + = {{VTABLE, 2, 0, +# if BYTEORDER == 4321 + 1 +# else + 0 +# endif + }, + { +# include "asciitab.h" +# include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) NULL_VTABLE}; #endif -static const struct normal_encoding big2_encoding = { - { VTABLE, 2, 0, +static const struct normal_encoding big2_encoding + = {{VTABLE, 2, 0, #if BYTEORDER == 4321 - 1 + 1 #else - 0 + 0 #endif - }, - { + }, + { #define BT_COLON BT_NMSTRT #include "asciitab.h" #undef BT_COLON #include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) NULL_VTABLE -}; + }, + STANDARD_VTABLE(big2_) NULL_VTABLE}; #if BYTEORDER != 1234 -#ifdef XML_NS +# ifdef XML_NS -static const struct normal_encoding internal_big2_encoding_ns = { - { VTABLE, 2, 0, 1 }, - { -#include "iasciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) NULL_VTABLE -}; +static const struct normal_encoding internal_big2_encoding_ns + = {{VTABLE, 2, 0, 1}, + { +# include "iasciitab.h" +# include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) NULL_VTABLE}; -#endif +# endif -static const struct normal_encoding internal_big2_encoding = { - { VTABLE, 2, 0, 1 }, - { -#define BT_COLON BT_NMSTRT -#include "iasciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) NULL_VTABLE -}; +static const struct normal_encoding internal_big2_encoding + = {{VTABLE, 2, 0, 1}, + { +# define BT_COLON BT_NMSTRT +# include "iasciitab.h" +# undef BT_COLON +# include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) NULL_VTABLE}; #endif #undef PREFIX static int FASTCALL -streqci(const char *s1, const char *s2) -{ +streqci(const char *s1, const char *s2) { for (;;) { char c1 = *s1++; char c2 = *s2++; if (ASCII_a <= c1 && c1 <= ASCII_z) c1 += ASCII_A - ASCII_a; if (ASCII_a <= c2 && c2 <= ASCII_z) - c2 += ASCII_A - ASCII_a; + /* The following line will never get executed. streqci() is + * only called from two places, both of which guarantee to put + * upper-case strings into s2. + */ + c2 += ASCII_A - ASCII_a; /* LCOV_EXCL_LINE */ if (c1 != c2) return 0; - if (!c1) + if (! c1) break; } return 1; } static void PTRCALL -initUpdatePosition(const ENCODING *UNUSED_P(enc), const char *ptr, - const char *end, POSITION *pos) -{ +initUpdatePosition(const ENCODING *enc, const char *ptr, const char *end, + POSITION *pos) { + UNUSED_P(enc); normal_updatePosition(&utf8_encoding.enc, ptr, end, pos); } static int -toAscii(const ENCODING *enc, const char *ptr, const char *end) -{ +toAscii(const ENCODING *enc, const char *ptr, const char *end) { char buf[1]; char *p = buf; XmlUtf8Convert(enc, &ptr, end, &p, p + 1); @@ -1038,8 +1044,7 @@ toAscii(const ENCODING *enc, const char *ptr, const char *end) } static int FASTCALL -isSpace(int c) -{ +isSpace(int c) { switch (c) { case 0x20: case 0xD: @@ -1054,21 +1059,16 @@ isSpace(int c) followed by name=val. */ static int -parsePseudoAttribute(const ENCODING *enc, - const char *ptr, - const char *end, - const char **namePtr, - const char **nameEndPtr, - const char **valPtr, - const char **nextTokPtr) -{ +parsePseudoAttribute(const ENCODING *enc, const char *ptr, const char *end, + const char **namePtr, const char **nameEndPtr, + const char **valPtr, const char **nextTokPtr) { int c; char open; if (ptr == end) { *namePtr = NULL; return 1; } - if (!isSpace(toAscii(enc, ptr, end))) { + if (! isSpace(toAscii(enc, ptr, end))) { *nextTokPtr = ptr; return 0; } @@ -1124,12 +1124,9 @@ parsePseudoAttribute(const ENCODING *enc, c = toAscii(enc, ptr, end); if (c == open) break; - if (!(ASCII_a <= c && c <= ASCII_z) - && !(ASCII_A <= c && c <= ASCII_Z) - && !(ASCII_0 <= c && c <= ASCII_9) - && c != ASCII_PERIOD - && c != ASCII_MINUS - && c != ASCII_UNDERSCORE) { + if (! (ASCII_a <= c && c <= ASCII_z) && ! (ASCII_A <= c && c <= ASCII_Z) + && ! (ASCII_0 <= c && c <= ASCII_9) && c != ASCII_PERIOD + && c != ASCII_MINUS && c != ASCII_UNDERSCORE) { *nextTokPtr = ptr; return 0; } @@ -1138,68 +1135,52 @@ parsePseudoAttribute(const ENCODING *enc, return 1; } -static const char KW_version[] = { - ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0' -}; +static const char KW_version[] + = {ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0'}; -static const char KW_encoding[] = { - ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0' -}; +static const char KW_encoding[] = {ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, + ASCII_i, ASCII_n, ASCII_g, '\0'}; -static const char KW_standalone[] = { - ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o, - ASCII_n, ASCII_e, '\0' -}; +static const char KW_standalone[] + = {ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, + ASCII_l, ASCII_o, ASCII_n, ASCII_e, '\0'}; -static const char KW_yes[] = { - ASCII_y, ASCII_e, ASCII_s, '\0' -}; +static const char KW_yes[] = {ASCII_y, ASCII_e, ASCII_s, '\0'}; -static const char KW_no[] = { - ASCII_n, ASCII_o, '\0' -}; +static const char KW_no[] = {ASCII_n, ASCII_o, '\0'}; static int -doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, - const char *, +doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, const char *, const char *), - int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingName, - const ENCODING **encoding, - int *standalone) -{ + int isGeneralTextEntity, const ENCODING *enc, const char *ptr, + const char *end, const char **badPtr, const char **versionPtr, + const char **versionEndPtr, const char **encodingName, + const ENCODING **encoding, int *standalone) { const char *val = NULL; const char *name = NULL; const char *nameEnd = NULL; ptr += 5 * enc->minBytesPerChar; end -= 2 * enc->minBytesPerChar; - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr) - || !name) { + if (! parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr) + || ! name) { *badPtr = ptr; return 0; } - if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) { - if (!isGeneralTextEntity) { + if (! XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) { + if (! isGeneralTextEntity) { *badPtr = name; return 0; } - } - else { + } else { if (versionPtr) *versionPtr = val; if (versionEndPtr) *versionEndPtr = ptr; - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { + if (! parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { *badPtr = ptr; return 0; } - if (!name) { + if (! name) { if (isGeneralTextEntity) { /* a TextDecl must have an EncodingDecl */ *badPtr = ptr; @@ -1210,7 +1191,7 @@ doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, } if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) { int c = toAscii(enc, val, end); - if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z)) { + if (! (ASCII_a <= c && c <= ASCII_z) && ! (ASCII_A <= c && c <= ASCII_Z)) { *badPtr = val; return 0; } @@ -1218,14 +1199,14 @@ doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, *encodingName = val; if (encoding) *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar); - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { + if (! parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { *badPtr = ptr; return 0; } - if (!name) + if (! name) return 1; } - if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone) + if (! XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone) || isGeneralTextEntity) { *badPtr = name; return 0; @@ -1233,12 +1214,10 @@ doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) { if (standalone) *standalone = 1; - } - else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) { + } else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) { if (standalone) *standalone = 0; - } - else { + } else { *badPtr = val; return 0; } @@ -1252,11 +1231,16 @@ doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, } static int FASTCALL -checkCharRefNumber(int result) -{ +checkCharRefNumber(int result) { switch (result >> 8) { - case 0xD8: case 0xD9: case 0xDA: case 0xDB: - case 0xDC: case 0xDD: case 0xDE: case 0xDF: + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: return -1; case 0: if (latin1_encoding.type[result] == BT_NONXML) @@ -1271,8 +1255,7 @@ checkCharRefNumber(int result) } int FASTCALL -XmlUtf8Encode(int c, char *buf) -{ +XmlUtf8Encode(int c, char *buf) { enum { /* minN is minimum legal resulting value for N byte sequence */ min2 = 0x80, @@ -1281,7 +1264,7 @@ XmlUtf8Encode(int c, char *buf) }; if (c < 0) - return 0; + return 0; /* LCOV_EXCL_LINE: this case is always eliminated beforehand */ if (c < min2) { buf[0] = (char)(c | UTF8_cval1); return 1; @@ -1304,12 +1287,11 @@ XmlUtf8Encode(int c, char *buf) buf[3] = (char)((c & 0x3f) | 0x80); return 4; } - return 0; + return 0; /* LCOV_EXCL_LINE: this case too is eliminated before calling */ } int FASTCALL -XmlUtf16Encode(int charNum, unsigned short *buf) -{ +XmlUtf16Encode(int charNum, unsigned short *buf) { if (charNum < 0) return 0; if (charNum < 0x10000) { @@ -1333,17 +1315,15 @@ struct unknown_encoding { char utf8[256][4]; }; -#define AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *) (enc)) +#define AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *)(enc)) int -XmlSizeOfUnknownEncoding(void) -{ +XmlSizeOfUnknownEncoding(void) { return sizeof(struct unknown_encoding); } static int PTRFASTCALL -unknown_isName(const ENCODING *enc, const char *p) -{ +unknown_isName(const ENCODING *enc, const char *p) { const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); int c = uenc->convert(uenc->userData, p); if (c & ~0xFFFF) @@ -1352,8 +1332,7 @@ unknown_isName(const ENCODING *enc, const char *p) } static int PTRFASTCALL -unknown_isNmstrt(const ENCODING *enc, const char *p) -{ +unknown_isNmstrt(const ENCODING *enc, const char *p) { const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); int c = uenc->convert(uenc->userData, p); if (c & ~0xFFFF) @@ -1362,18 +1341,15 @@ unknown_isNmstrt(const ENCODING *enc, const char *p) } static int PTRFASTCALL -unknown_isInvalid(const ENCODING *enc, const char *p) -{ +unknown_isInvalid(const ENCODING *enc, const char *p) { const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); int c = uenc->convert(uenc->userData, p); return (c & ~0xFFFF) || checkCharRefNumber(c) < 0; } static enum XML_Convert_Result PTRCALL -unknown_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ +unknown_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, + char **toP, const char *toLim) { const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); char buf[XML_UTF8_ENCODE_MAX]; for (;;) { @@ -1391,33 +1367,27 @@ unknown_toUtf8(const ENCODING *enc, utf8 = buf; *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] - (BT_LEAD2 - 2)); - } - else { + } else { if (n > toLim - *toP) return XML_CONVERT_OUTPUT_EXHAUSTED; (*fromP)++; } - do { - *(*toP)++ = *utf8++; - } while (--n != 0); + memcpy(*toP, utf8, n); + *toP += n; } } static enum XML_Convert_Result PTRCALL -unknown_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ +unknown_toUtf16(const ENCODING *enc, const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) { const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); while (*fromP < fromLim && *toP < toLim) { unsigned short c = uenc->utf16[(unsigned char)**fromP]; if (c == 0) { - c = (unsigned short) - uenc->convert(uenc->userData, *fromP); + c = (unsigned short)uenc->convert(uenc->userData, *fromP); *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] - (BT_LEAD2 - 2)); - } - else + } else (*fromP)++; *(*toP)++ = c; } @@ -1429,19 +1399,14 @@ unknown_toUtf16(const ENCODING *enc, } ENCODING * -XmlInitUnknownEncoding(void *mem, - int *table, - CONVERTER convert, - void *userData) -{ +XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert, + void *userData) { int i; struct unknown_encoding *e = (struct unknown_encoding *)mem; - for (i = 0; i < (int)sizeof(struct normal_encoding); i++) - ((char *)mem)[i] = ((char *)&latin1_encoding)[i]; + memcpy(mem, &latin1_encoding, sizeof(struct normal_encoding)); for (i = 0; i < 128; i++) if (latin1_encoding.type[i] != BT_OTHER - && latin1_encoding.type[i] != BT_NONXML - && table[i] != i) + && latin1_encoding.type[i] != BT_NONXML && table[i] != i) return 0; for (i = 0; i < 256; i++) { int c = table[i]; @@ -1451,32 +1416,30 @@ XmlInitUnknownEncoding(void *mem, e->utf16[i] = 0xFFFF; e->utf8[i][0] = 1; e->utf8[i][1] = 0; - } - else if (c < 0) { + } else if (c < 0) { if (c < -4) return 0; + /* Multi-byte sequences need a converter function */ + if (! convert) + return 0; e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2)); e->utf8[i][0] = 0; e->utf16[i] = 0; - } - else if (c < 0x80) { + } else if (c < 0x80) { if (latin1_encoding.type[c] != BT_OTHER - && latin1_encoding.type[c] != BT_NONXML - && c != i) + && latin1_encoding.type[c] != BT_NONXML && c != i) return 0; e->normal.type[i] = latin1_encoding.type[c]; e->utf8[i][0] = 1; e->utf8[i][1] = (char)c; e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c); - } - else if (checkCharRefNumber(c) < 0) { + } else if (checkCharRefNumber(c) < 0) { e->normal.type[i] = BT_NONXML; /* This shouldn't really get used. */ e->utf16[i] = 0xFFFF; e->utf8[i][0] = 1; e->utf8[i][1] = 0; - } - else { + } else { if (c > 0xFFFF) return 0; if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff)) @@ -1521,44 +1484,32 @@ enum { NO_ENC }; -static const char KW_ISO_8859_1[] = { - ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9, - ASCII_MINUS, ASCII_1, '\0' -}; -static const char KW_US_ASCII[] = { - ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I, - '\0' -}; -static const char KW_UTF_8[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0' -}; -static const char KW_UTF_16[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0' -}; -static const char KW_UTF_16BE[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E, - '\0' -}; -static const char KW_UTF_16LE[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E, - '\0' -}; +static const char KW_ISO_8859_1[] + = {ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, + ASCII_5, ASCII_9, ASCII_MINUS, ASCII_1, '\0'}; +static const char KW_US_ASCII[] + = {ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, + ASCII_C, ASCII_I, ASCII_I, '\0'}; +static const char KW_UTF_8[] + = {ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0'}; +static const char KW_UTF_16[] + = {ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0'}; +static const char KW_UTF_16BE[] + = {ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, + ASCII_6, ASCII_B, ASCII_E, '\0'}; +static const char KW_UTF_16LE[] + = {ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, + ASCII_6, ASCII_L, ASCII_E, '\0'}; static int FASTCALL -getEncodingIndex(const char *name) -{ - static const char * const encodingNames[] = { - KW_ISO_8859_1, - KW_US_ASCII, - KW_UTF_8, - KW_UTF_16, - KW_UTF_16BE, - KW_UTF_16LE, +getEncodingIndex(const char *name) { + static const char *const encodingNames[] = { + KW_ISO_8859_1, KW_US_ASCII, KW_UTF_8, KW_UTF_16, KW_UTF_16BE, KW_UTF_16LE, }; int i; if (name == NULL) return NO_ENC; - for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++) + for (i = 0; i < (int)(sizeof(encodingNames) / sizeof(encodingNames[0])); i++) if (streqci(name, encodingNames[i])) return i; return UNKNOWN_ENC; @@ -1578,15 +1529,9 @@ getEncodingIndex(const char *name) XML_PROLOG_STATE otherwise. */ - static int -initScan(const ENCODING * const *encodingTable, - const INIT_ENCODING *enc, - int state, - const char *ptr, - const char *end, - const char **nextTokPtr) -{ +initScan(const ENCODING *const *encodingTable, const INIT_ENCODING *enc, + int state, const char *ptr, const char *end, const char **nextTokPtr) { const ENCODING **encPtr; if (ptr >= end) @@ -1611,20 +1556,17 @@ initScan(const ENCODING * const *encodingTable, case 0xFE: case 0xFF: case 0xEF: /* possibly first byte of UTF-8 BOM */ - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC && state == XML_CONTENT_STATE) break; /* fall through */ case 0x00: case 0x3C: return XML_TOK_PARTIAL; } - } - else { + } else { switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) { case 0xFEFF: - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC && state == XML_CONTENT_STATE) break; *nextTokPtr = ptr + 2; *encPtr = encodingTable[UTF_16BE_ENC]; @@ -1638,8 +1580,7 @@ initScan(const ENCODING * const *encodingTable, *encPtr = encodingTable[UTF_16LE_ENC]; return XmlTok(*encPtr, state, ptr, end, nextTokPtr); case 0xFFFE: - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC && state == XML_CONTENT_STATE) break; *nextTokPtr = ptr + 2; *encPtr = encodingTable[UTF_16LE_ENC]; @@ -1654,8 +1595,8 @@ initScan(const ENCODING * const *encodingTable, */ if (state == XML_CONTENT_STATE) { int e = INIT_ENC_INDEX(enc); - if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC - || e == UTF_16LE_ENC || e == UTF_16_ENC) + if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC || e == UTF_16LE_ENC + || e == UTF_16_ENC) break; } if (ptr + 2 == end) @@ -1678,8 +1619,7 @@ initScan(const ENCODING * const *encodingTable, break; *encPtr = encodingTable[UTF_16BE_ENC]; return XmlTok(*encPtr, state, ptr, end, nextTokPtr); - } - else if (ptr[1] == '\0') { + } else if (ptr[1] == '\0') { /* We could recover here in the case: - parsing an external entity - second byte is 0 @@ -1701,7 +1641,6 @@ initScan(const ENCODING * const *encodingTable, return XmlTok(*encPtr, state, ptr, end, nextTokPtr); } - #define NS(x) x #define ns(x) x #define XML_TOK_NS_C @@ -1712,22 +1651,19 @@ initScan(const ENCODING * const *encodingTable, #ifdef XML_NS -#define NS(x) x ## NS -#define ns(x) x ## _ns +# define NS(x) x##NS +# define ns(x) x##_ns -#define XML_TOK_NS_C -#include "xmltok_ns.inc" -#undef XML_TOK_NS_C +# define XML_TOK_NS_C +# include "xmltok_ns.inc" +# undef XML_TOK_NS_C -#undef NS -#undef ns +# undef NS +# undef ns ENCODING * -XmlInitUnknownEncodingNS(void *mem, - int *table, - CONVERTER convert, - void *userData) -{ +XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert, + void *userData) { ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData); if (enc) ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON; diff --git a/deps/EXPAT/expat/xmltok.h b/deps/EXPAT/expat/xmltok.h index 752007e8b9..6f630c2f9b 100644 --- a/deps/EXPAT/expat/xmltok.h +++ b/deps/EXPAT/expat/xmltok.h @@ -1,5 +1,37 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2002 Fred L. Drake, Jr. + Copyright (c) 2002-2005 Karl Waclawek + Copyright (c) 2016-2017 Sebastian Pipping + Copyright (c) 2017 Rhodri James + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef XmlTok_INCLUDED @@ -10,16 +42,18 @@ extern "C" { #endif /* The following token may be returned by XmlContentTok */ -#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be - start of illegal ]]> sequence */ +#define XML_TOK_TRAILING_RSQB \ + -5 /* ] or ]] at the end of the scan; might be \ + start of illegal ]]> sequence */ /* The following tokens may be returned by both XmlPrologTok and XmlContentTok. */ -#define XML_TOK_NONE -4 /* The string to be scanned is empty */ -#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan; - might be part of CRLF sequence */ -#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ -#define XML_TOK_PARTIAL -1 /* only part of a token */ +#define XML_TOK_NONE -4 /* The string to be scanned is empty */ +#define XML_TOK_TRAILING_CR \ + -3 /* A CR at the end of the scan; \ + might be part of CRLF sequence */ +#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ +#define XML_TOK_PARTIAL -1 /* only part of a token */ #define XML_TOK_INVALID 0 /* The following tokens are returned by XmlContentTok; some are also @@ -34,24 +68,24 @@ extern "C" { #define XML_TOK_DATA_NEWLINE 7 #define XML_TOK_CDATA_SECT_OPEN 8 #define XML_TOK_ENTITY_REF 9 -#define XML_TOK_CHAR_REF 10 /* numeric character reference */ +#define XML_TOK_CHAR_REF 10 /* numeric character reference */ /* The following tokens may be returned by both XmlPrologTok and XmlContentTok. */ -#define XML_TOK_PI 11 /* processing instruction */ -#define XML_TOK_XML_DECL 12 /* XML decl or text decl */ +#define XML_TOK_PI 11 /* processing instruction */ +#define XML_TOK_XML_DECL 12 /* XML decl or text decl */ #define XML_TOK_COMMENT 13 -#define XML_TOK_BOM 14 /* Byte order mark */ +#define XML_TOK_BOM 14 /* Byte order mark */ /* The following tokens are returned only by XmlPrologTok */ #define XML_TOK_PROLOG_S 15 -#define XML_TOK_DECL_OPEN 16 /* */ +#define XML_TOK_DECL_OPEN 16 /* */ #define XML_TOK_NAME 18 #define XML_TOK_NMTOKEN 19 -#define XML_TOK_POUND_NAME 20 /* #name */ -#define XML_TOK_OR 21 /* | */ +#define XML_TOK_POUND_NAME 20 /* #name */ +#define XML_TOK_OR 21 /* | */ #define XML_TOK_PERCENT 22 #define XML_TOK_OPEN_PAREN 23 #define XML_TOK_CLOSE_PAREN 24 @@ -62,14 +96,14 @@ extern "C" { #define XML_TOK_INSTANCE_START 29 /* The following occur only in element type declarations */ -#define XML_TOK_NAME_QUESTION 30 /* name? */ -#define XML_TOK_NAME_ASTERISK 31 /* name* */ -#define XML_TOK_NAME_PLUS 32 /* name+ */ -#define XML_TOK_COND_SECT_OPEN 33 /* */ -#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ -#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ -#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ +#define XML_TOK_NAME_QUESTION 30 /* name? */ +#define XML_TOK_NAME_ASTERISK 31 /* name* */ +#define XML_TOK_NAME_PLUS 32 /* name+ */ +#define XML_TOK_COND_SECT_OPEN 33 /* */ +#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ +#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ +#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ #define XML_TOK_COMMA 38 /* The following token is returned only by XmlAttributeValueTok */ @@ -84,20 +118,20 @@ extern "C" { #define XML_TOK_PREFIXED_NAME 41 #ifdef XML_DTD -#define XML_TOK_IGNORE_SECT 42 +# define XML_TOK_IGNORE_SECT 42 #endif /* XML_DTD */ #ifdef XML_DTD -#define XML_N_STATES 4 +# define XML_N_STATES 4 #else /* not XML_DTD */ -#define XML_N_STATES 3 +# define XML_N_STATES 3 #endif /* not XML_DTD */ #define XML_PROLOG_STATE 0 #define XML_CONTENT_STATE 1 #define XML_CDATA_SECTION_STATE 2 #ifdef XML_DTD -#define XML_IGNORE_SECTION_STATE 3 +# define XML_IGNORE_SECTION_STATE 3 #endif /* XML_DTD */ #define XML_N_LITERAL_TYPES 2 @@ -125,55 +159,41 @@ typedef struct { struct encoding; typedef struct encoding ENCODING; -typedef int (PTRCALL *SCANNER)(const ENCODING *, - const char *, - const char *, - const char **); +typedef int(PTRCALL *SCANNER)(const ENCODING *, const char *, const char *, + const char **); enum XML_Convert_Result { XML_CONVERT_COMPLETED = 0, XML_CONVERT_INPUT_INCOMPLETE = 1, - XML_CONVERT_OUTPUT_EXHAUSTED = 2 /* and therefore potentially input remaining as well */ + XML_CONVERT_OUTPUT_EXHAUSTED + = 2 /* and therefore potentially input remaining as well */ }; struct encoding { SCANNER scanners[XML_N_STATES]; SCANNER literalScanners[XML_N_LITERAL_TYPES]; - int (PTRCALL *sameName)(const ENCODING *, - const char *, - const char *); - int (PTRCALL *nameMatchesAscii)(const ENCODING *, - const char *, - const char *, - const char *); - int (PTRFASTCALL *nameLength)(const ENCODING *, const char *); + int(PTRCALL *nameMatchesAscii)(const ENCODING *, const char *, const char *, + const char *); + int(PTRFASTCALL *nameLength)(const ENCODING *, const char *); const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *); - int (PTRCALL *getAtts)(const ENCODING *enc, - const char *ptr, - int attsMax, - ATTRIBUTE *atts); - int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr); - int (PTRCALL *predefinedEntityName)(const ENCODING *, - const char *, - const char *); - void (PTRCALL *updatePosition)(const ENCODING *, - const char *ptr, - const char *end, - POSITION *); - int (PTRCALL *isPublicId)(const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr); - enum XML_Convert_Result (PTRCALL *utf8Convert)(const ENCODING *enc, - const char **fromP, - const char *fromLim, - char **toP, - const char *toLim); - enum XML_Convert_Result (PTRCALL *utf16Convert)(const ENCODING *enc, - const char **fromP, - const char *fromLim, - unsigned short **toP, - const unsigned short *toLim); + int(PTRCALL *getAtts)(const ENCODING *enc, const char *ptr, int attsMax, + ATTRIBUTE *atts); + int(PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr); + int(PTRCALL *predefinedEntityName)(const ENCODING *, const char *, + const char *); + void(PTRCALL *updatePosition)(const ENCODING *, const char *ptr, + const char *end, POSITION *); + int(PTRCALL *isPublicId)(const ENCODING *enc, const char *ptr, + const char *end, const char **badPtr); + enum XML_Convert_Result(PTRCALL *utf8Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, char **toP, + const char *toLim); + enum XML_Convert_Result(PTRCALL *utf16Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, + unsigned short **toP, + const unsigned short *toLim); int minBytesPerChar; char isUtf8; char isUtf16; @@ -200,68 +220,62 @@ struct encoding { the prolog outside literals, comments and processing instructions. */ - -#define XmlTok(enc, state, ptr, end, nextTokPtr) \ +#define XmlTok(enc, state, ptr, end, nextTokPtr) \ (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) -#define XmlPrologTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) +#define XmlPrologTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) -#define XmlContentTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) +#define XmlContentTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) -#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) +#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) #ifdef XML_DTD -#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) +# define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) #endif /* XML_DTD */ /* This is used for performing a 2nd-level tokenization on the content of a literal that has already been returned by XmlTok. */ -#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ +#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) -#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) +#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) -#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) +#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) -#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2)) - -#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ +#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) -#define XmlNameLength(enc, ptr) \ - (((enc)->nameLength)(enc, ptr)) +#define XmlNameLength(enc, ptr) (((enc)->nameLength)(enc, ptr)) -#define XmlSkipS(enc, ptr) \ - (((enc)->skipS)(enc, ptr)) +#define XmlSkipS(enc, ptr) (((enc)->skipS)(enc, ptr)) -#define XmlGetAttributes(enc, ptr, attsMax, atts) \ +#define XmlGetAttributes(enc, ptr, attsMax, atts) \ (((enc)->getAtts)(enc, ptr, attsMax, atts)) -#define XmlCharRefNumber(enc, ptr) \ - (((enc)->charRefNumber)(enc, ptr)) +#define XmlCharRefNumber(enc, ptr) (((enc)->charRefNumber)(enc, ptr)) -#define XmlPredefinedEntityName(enc, ptr, end) \ +#define XmlPredefinedEntityName(enc, ptr, end) \ (((enc)->predefinedEntityName)(enc, ptr, end)) -#define XmlUpdatePosition(enc, ptr, end, pos) \ +#define XmlUpdatePosition(enc, ptr, end, pos) \ (((enc)->updatePosition)(enc, ptr, end, pos)) -#define XmlIsPublicId(enc, ptr, end, badPtr) \ +#define XmlIsPublicId(enc, ptr, end, badPtr) \ (((enc)->isPublicId)(enc, ptr, end, badPtr)) -#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ +#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) -#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ +#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) typedef struct { @@ -269,16 +283,11 @@ typedef struct { const ENCODING **encPtr; } INIT_ENCODING; -int XmlParseXmlDecl(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, +int XmlParseXmlDecl(int isGeneralTextEntity, const ENCODING *enc, + const char *ptr, const char *end, const char **badPtr, + const char **versionPtr, const char **versionEndPtr, const char **encodingNamePtr, - const ENCODING **namedEncodingPtr, - int *standalonePtr); + const ENCODING **namedEncodingPtr, int *standalonePtr); int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name); const ENCODING *XmlGetUtf8InternalEncoding(void); @@ -287,34 +296,22 @@ int FASTCALL XmlUtf8Encode(int charNumber, char *buf); int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf); int XmlSizeOfUnknownEncoding(void); +typedef int(XMLCALL *CONVERTER)(void *userData, const char *p); -typedef int (XMLCALL *CONVERTER) (void *userData, const char *p); +ENCODING *XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert, + void *userData); -ENCODING * -XmlInitUnknownEncoding(void *mem, - int *table, - CONVERTER convert, - void *userData); - -int XmlParseXmlDeclNS(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, +int XmlParseXmlDeclNS(int isGeneralTextEntity, const ENCODING *enc, + const char *ptr, const char *end, const char **badPtr, + const char **versionPtr, const char **versionEndPtr, const char **encodingNamePtr, - const ENCODING **namedEncodingPtr, - int *standalonePtr); + const ENCODING **namedEncodingPtr, int *standalonePtr); int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name); const ENCODING *XmlGetUtf8InternalEncodingNS(void); const ENCODING *XmlGetUtf16InternalEncodingNS(void); -ENCODING * -XmlInitUnknownEncodingNS(void *mem, - int *table, - CONVERTER convert, - void *userData); +ENCODING *XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert, + void *userData); #ifdef __cplusplus } #endif diff --git a/deps/EXPAT/expat/xmltok_impl.h b/deps/EXPAT/expat/xmltok_impl.h index da0ea60a65..3469c4ae13 100644 --- a/deps/EXPAT/expat/xmltok_impl.h +++ b/deps/EXPAT/expat/xmltok_impl.h @@ -1,46 +1,74 @@ /* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2017-2019 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ enum { - BT_NONXML, - BT_MALFORM, - BT_LT, - BT_AMP, - BT_RSQB, - BT_LEAD2, - BT_LEAD3, - BT_LEAD4, - BT_TRAIL, - BT_CR, - BT_LF, - BT_GT, - BT_QUOT, - BT_APOS, - BT_EQUALS, - BT_QUEST, - BT_EXCL, - BT_SOL, - BT_SEMI, - BT_NUM, - BT_LSQB, - BT_S, - BT_NMSTRT, - BT_COLON, - BT_HEX, - BT_DIGIT, - BT_NAME, - BT_MINUS, - BT_OTHER, /* known not to be a name or name start character */ + BT_NONXML, /* e.g. noncharacter-FFFF */ + BT_MALFORM, /* illegal, with regard to encoding */ + BT_LT, /* less than = "<" */ + BT_AMP, /* ampersand = "&" */ + BT_RSQB, /* right square bracket = "[" */ + BT_LEAD2, /* lead byte of a 2-byte UTF-8 character */ + BT_LEAD3, /* lead byte of a 3-byte UTF-8 character */ + BT_LEAD4, /* lead byte of a 4-byte UTF-8 character */ + BT_TRAIL, /* trailing unit, e.g. second 16-bit unit of a 4-byte char. */ + BT_CR, /* carriage return = "\r" */ + BT_LF, /* line feed = "\n" */ + BT_GT, /* greater than = ">" */ + BT_QUOT, /* quotation character = "\"" */ + BT_APOS, /* apostrophe = "'" */ + BT_EQUALS, /* equal sign = "=" */ + BT_QUEST, /* question mark = "?" */ + BT_EXCL, /* exclamation mark = "!" */ + BT_SOL, /* solidus, slash = "/" */ + BT_SEMI, /* semicolon = ";" */ + BT_NUM, /* number sign = "#" */ + BT_LSQB, /* left square bracket = "[" */ + BT_S, /* white space, e.g. "\t", " "[, "\r"] */ + BT_NMSTRT, /* non-hex name start letter = "G".."Z" + "g".."z" + "_" */ + BT_COLON, /* colon = ":" */ + BT_HEX, /* hex letter = "A".."F" + "a".."f" */ + BT_DIGIT, /* digit = "0".."9" */ + BT_NAME, /* dot and middle dot = "." + chr(0xb7) */ + BT_MINUS, /* minus = "-" */ + BT_OTHER, /* known not to be a name or name start character */ BT_NONASCII, /* might be a name or name start character */ - BT_PERCNT, - BT_LPAR, - BT_RPAR, - BT_AST, - BT_PLUS, - BT_COMMA, - BT_VERBAR + BT_PERCNT, /* percent sign = "%" */ + BT_LPAR, /* left parenthesis = "(" */ + BT_RPAR, /* right parenthesis = "(" */ + BT_AST, /* asterisk = "*" */ + BT_PLUS, /* plus sign = "+" */ + BT_COMMA, /* comma = "," */ + BT_VERBAR /* vertical bar = "|" */ }; #include diff --git a/deps/EXPAT/expat/xmltok_impl.inc b/deps/EXPAT/expat/xmltok_impl.inc index 5f779c0571..1971d74bf8 100644 --- a/deps/EXPAT/expat/xmltok_impl.inc +++ b/deps/EXPAT/expat/xmltok_impl.inc @@ -1,132 +1,165 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* This file is included (from xmltok.c, 1-3 times depending on XML_MIN_SIZE)! + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2002 Fred L. Drake, Jr. + Copyright (c) 2002-2016 Karl Waclawek + Copyright (c) 2016-2022 Sebastian Pipping + Copyright (c) 2017 Rhodri James + Copyright (c) 2018 Benjamin Peterson + Copyright (c) 2018 Anton Maklakov + Copyright (c) 2019 David Loffredo + Copyright (c) 2020 Boris Kolpackov + Copyright (c) 2022 Martin Ettl + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* This file is included! */ #ifdef XML_TOK_IMPL_C -#ifndef IS_INVALID_CHAR -#define IS_INVALID_CHAR(enc, ptr, n) (0) -#endif +# ifndef IS_INVALID_CHAR // i.e. for UTF-16 and XML_MIN_SIZE not defined +# define IS_INVALID_CHAR(enc, ptr, n) (0) +# endif -#define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (IS_INVALID_CHAR(enc, ptr, n)) { \ - *(nextTokPtr) = (ptr); \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; +# define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \ + case BT_LEAD##n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (IS_INVALID_CHAR(enc, ptr, n)) { \ + *(nextTokPtr) = (ptr); \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; -#define INVALID_CASES(ptr, nextTokPtr) \ - INVALID_LEAD_CASE(2, ptr, nextTokPtr) \ - INVALID_LEAD_CASE(3, ptr, nextTokPtr) \ - INVALID_LEAD_CASE(4, ptr, nextTokPtr) \ - case BT_NONXML: \ - case BT_MALFORM: \ - case BT_TRAIL: \ - *(nextTokPtr) = (ptr); \ +# define INVALID_CASES(ptr, nextTokPtr) \ + INVALID_LEAD_CASE(2, ptr, nextTokPtr) \ + INVALID_LEAD_CASE(3, ptr, nextTokPtr) \ + INVALID_LEAD_CASE(4, ptr, nextTokPtr) \ + case BT_NONXML: \ + case BT_MALFORM: \ + case BT_TRAIL: \ + *(nextTokPtr) = (ptr); \ return XML_TOK_INVALID; -#define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (!IS_NAME_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; +# define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \ + case BT_LEAD##n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NAME_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; -#define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \ - case BT_NONASCII: \ - if (!IS_NAME_CHAR_MINBPC(enc, ptr)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - case BT_NMSTRT: \ - case BT_HEX: \ - case BT_DIGIT: \ - case BT_NAME: \ - case BT_MINUS: \ - ptr += MINBPC(enc); \ - break; \ - CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \ - CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \ - CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr) +# define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \ + case BT_NONASCII: \ + if (! IS_NAME_CHAR_MINBPC(enc, ptr)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + /* fall through */ \ + case BT_NMSTRT: \ + case BT_HEX: \ + case BT_DIGIT: \ + case BT_NAME: \ + case BT_MINUS: \ + ptr += MINBPC(enc); \ + break; \ + CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \ + CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \ + CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr) -#define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; +# define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \ + case BT_LEAD##n: \ + if ((end) - (ptr) < (n)) \ + return XML_TOK_PARTIAL_CHAR; \ + if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NMSTRT_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; -#define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \ - case BT_NONASCII: \ - if (!IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - case BT_NMSTRT: \ - case BT_HEX: \ - ptr += MINBPC(enc); \ - break; \ - CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \ - CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \ - CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr) +# define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \ + case BT_NONASCII: \ + if (! IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + /* fall through */ \ + case BT_NMSTRT: \ + case BT_HEX: \ + ptr += MINBPC(enc); \ + break; \ + CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \ + CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \ + CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr) -#ifndef PREFIX -#define PREFIX(ident) ident -#endif +# ifndef PREFIX +# define PREFIX(ident) ident +# endif +# define HAS_CHARS(enc, ptr, end, count) \ + ((end) - (ptr) >= ((count)*MINBPC(enc))) -#define HAS_CHARS(enc, ptr, end, count) \ - (end - ptr >= count * MINBPC(enc)) +# define HAS_CHAR(enc, ptr, end) HAS_CHARS(enc, ptr, end, 1) -#define HAS_CHAR(enc, ptr, end) \ - HAS_CHARS(enc, ptr, end, 1) - -#define REQUIRE_CHARS(enc, ptr, end, count) \ - { \ - if (! HAS_CHARS(enc, ptr, end, count)) { \ - return XML_TOK_PARTIAL; \ - } \ +# define REQUIRE_CHARS(enc, ptr, end, count) \ + { \ + if (! HAS_CHARS(enc, ptr, end, count)) { \ + return XML_TOK_PARTIAL; \ + } \ } -#define REQUIRE_CHAR(enc, ptr, end) \ - REQUIRE_CHARS(enc, ptr, end, 1) - +# define REQUIRE_CHAR(enc, ptr, end) REQUIRE_CHARS(enc, ptr, end, 1) /* ptr points to character following " */ switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) { - case BT_S: case BT_CR: case BT_LF: case BT_PERCNT: + case BT_S: + case BT_CR: + case BT_LF: + case BT_PERCNT: *nextTokPtr = ptr; return XML_TOK_INVALID; } /* fall through */ - case BT_S: case BT_CR: case BT_LF: + case BT_S: + case BT_CR: + case BT_LF: *nextTokPtr = ptr; return XML_TOK_DECL_OPEN; case BT_NMSTRT: @@ -191,12 +228,12 @@ PREFIX(scanDecl)(const ENCODING *enc, const char *ptr, } static int PTRCALL -PREFIX(checkPiTarget)(const ENCODING *UNUSED_P(enc), const char *ptr, - const char *end, int *tokPtr) -{ +PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, const char *end, + int *tokPtr) { int upper = 0; + UNUSED_P(enc); *tokPtr = XML_TOK_PI; - if (end - ptr != MINBPC(enc)*3) + if (end - ptr != MINBPC(enc) * 3) return 1; switch (BYTE_TO_ASCII(enc, ptr)) { case ASCII_x: @@ -236,30 +273,31 @@ PREFIX(checkPiTarget)(const ENCODING *UNUSED_P(enc), const char *ptr, /* ptr points to character following "= end) return XML_TOK_NONE; if (MINBPC(enc) > 1) { @@ -332,11 +369,11 @@ PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, case BT_RSQB: ptr += MINBPC(enc); REQUIRE_CHAR(enc, ptr, end); - if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) + if (! CHAR_MATCHES(enc, ptr, ASCII_RSQB)) break; ptr += MINBPC(enc); REQUIRE_CHAR(enc, ptr, end); - if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { + if (! CHAR_MATCHES(enc, ptr, ASCII_GT)) { ptr -= MINBPC(enc); break; } @@ -352,23 +389,25 @@ PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, case BT_LF: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_DATA_NEWLINE; - INVALID_CASES(ptr, nextTokPtr) + INVALID_CASES(ptr, nextTokPtr) default: ptr += MINBPC(enc); break; } while (HAS_CHAR(enc, ptr, end)) { switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_DATA_CHARS; \ - } \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_DATA_CHARS; \ + } \ + ptr += n; \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE case BT_NONXML: case BT_MALFORM: case BT_TRAIL: @@ -389,23 +428,26 @@ PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, /* ptr points to character following "= end) return XML_TOK_NONE; if (MINBPC(enc) > 1) { @@ -813,48 +853,50 @@ PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end, ptr += MINBPC(enc); if (! HAS_CHAR(enc, ptr, end)) return XML_TOK_TRAILING_RSQB; - if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) + if (! CHAR_MATCHES(enc, ptr, ASCII_RSQB)) break; ptr += MINBPC(enc); if (! HAS_CHAR(enc, ptr, end)) return XML_TOK_TRAILING_RSQB; - if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { + if (! CHAR_MATCHES(enc, ptr, ASCII_GT)) { ptr -= MINBPC(enc); break; } *nextTokPtr = ptr; return XML_TOK_INVALID; - INVALID_CASES(ptr, nextTokPtr) + INVALID_CASES(ptr, nextTokPtr) default: ptr += MINBPC(enc); break; } while (HAS_CHAR(enc, ptr, end)) { switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_DATA_CHARS; \ - } \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_DATA_CHARS; \ + } \ + ptr += n; \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE case BT_RSQB: if (HAS_CHARS(enc, ptr, end, 2)) { - if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) { - ptr += MINBPC(enc); - break; - } - if (HAS_CHARS(enc, ptr, end, 3)) { - if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) { - ptr += MINBPC(enc); - break; - } - *nextTokPtr = ptr + 2*MINBPC(enc); - return XML_TOK_INVALID; - } + if (! CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) { + ptr += MINBPC(enc); + break; + } + if (HAS_CHARS(enc, ptr, end, 3)) { + if (! CHAR_MATCHES(enc, ptr + 2 * MINBPC(enc), ASCII_GT)) { + ptr += MINBPC(enc); + break; + } + *nextTokPtr = ptr + 2 * MINBPC(enc); + return XML_TOK_INVALID; + } } /* fall through */ case BT_AMP: @@ -879,12 +921,14 @@ PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end, static int PTRCALL PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ + const char **nextTokPtr) { REQUIRE_CHAR(enc, ptr, end); switch (BYTE_TYPE(enc, ptr)) { - CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) - case BT_S: case BT_LF: case BT_CR: case BT_PERCNT: + CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) + case BT_S: + case BT_LF: + case BT_CR: + case BT_PERCNT: *nextTokPtr = ptr; return XML_TOK_PERCENT; default: @@ -893,7 +937,7 @@ PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, } while (HAS_CHAR(enc, ptr, end)) { switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) case BT_SEMI: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_PARAM_ENTITY_REF; @@ -907,20 +951,24 @@ PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, static int PTRCALL PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ + const char **nextTokPtr) { REQUIRE_CHAR(enc, ptr, end); switch (BYTE_TYPE(enc, ptr)) { - CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) + CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) default: *nextTokPtr = ptr; return XML_TOK_INVALID; } while (HAS_CHAR(enc, ptr, end)) { switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - case BT_CR: case BT_LF: case BT_S: - case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR: + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_CR: + case BT_LF: + case BT_S: + case BT_RPAR: + case BT_GT: + case BT_PERCNT: + case BT_VERBAR: *nextTokPtr = ptr; return XML_TOK_POUND_NAME; default: @@ -932,14 +980,12 @@ PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, } static int PTRCALL -PREFIX(scanLit)(int open, const ENCODING *enc, - const char *ptr, const char *end, - const char **nextTokPtr) -{ +PREFIX(scanLit)(int open, const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { while (HAS_CHAR(enc, ptr, end)) { int t = BYTE_TYPE(enc, ptr); switch (t) { - INVALID_CASES(ptr, nextTokPtr) + INVALID_CASES(ptr, nextTokPtr) case BT_QUOT: case BT_APOS: ptr += MINBPC(enc); @@ -949,8 +995,12 @@ PREFIX(scanLit)(int open, const ENCODING *enc, return -XML_TOK_LITERAL; *nextTokPtr = ptr; switch (BYTE_TYPE(enc, ptr)) { - case BT_S: case BT_CR: case BT_LF: - case BT_GT: case BT_PERCNT: case BT_LSQB: + case BT_S: + case BT_CR: + case BT_LF: + case BT_GT: + case BT_PERCNT: + case BT_LSQB: return XML_TOK_LITERAL; default: return XML_TOK_INVALID; @@ -965,8 +1015,7 @@ PREFIX(scanLit)(int open, const ENCODING *enc, static int PTRCALL PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ + const char **nextTokPtr) { int tok; if (ptr >= end) return XML_TOK_NONE; @@ -984,27 +1033,26 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr); case BT_APOS: return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_LT: - { - ptr += MINBPC(enc); - REQUIRE_CHAR(enc, ptr, end); - switch (BYTE_TYPE(enc, ptr)) { - case BT_EXCL: - return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_QUEST: - return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_NMSTRT: - case BT_HEX: - case BT_NONASCII: - case BT_LEAD2: - case BT_LEAD3: - case BT_LEAD4: - *nextTokPtr = ptr - MINBPC(enc); - return XML_TOK_INSTANCE_START; - } - *nextTokPtr = ptr; - return XML_TOK_INVALID; + case BT_LT: { + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + switch (BYTE_TYPE(enc, ptr)) { + case BT_EXCL: + return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_QUEST: + return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_NMSTRT: + case BT_HEX: + case BT_NONASCII: + case BT_LEAD2: + case BT_LEAD3: + case BT_LEAD4: + *nextTokPtr = ptr - MINBPC(enc); + return XML_TOK_INSTANCE_START; } + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } case BT_CR: if (ptr + MINBPC(enc) == end) { *nextTokPtr = end; @@ -1012,13 +1060,15 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, return -XML_TOK_PROLOG_S; } /* fall through */ - case BT_S: case BT_LF: + case BT_S: + case BT_LF: for (;;) { ptr += MINBPC(enc); if (! HAS_CHAR(enc, ptr, end)) break; switch (BYTE_TYPE(enc, ptr)) { - case BT_S: case BT_LF: + case BT_S: + case BT_LF: break; case BT_CR: /* don't split CR/LF pair */ @@ -1047,7 +1097,7 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { REQUIRE_CHARS(enc, ptr, end, 2); if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) { - *nextTokPtr = ptr + 2*MINBPC(enc); + *nextTokPtr = ptr + 2 * MINBPC(enc); return XML_TOK_COND_SECT_CLOSE; } } @@ -1070,8 +1120,12 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, case BT_PLUS: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_CLOSE_PAREN_PLUS; - case BT_CR: case BT_LF: case BT_S: - case BT_GT: case BT_COMMA: case BT_VERBAR: + case BT_CR: + case BT_LF: + case BT_S: + case BT_GT: + case BT_COMMA: + case BT_VERBAR: case BT_RPAR: *nextTokPtr = ptr; return XML_TOK_CLOSE_PAREN; @@ -1086,24 +1140,30 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, return XML_TOK_DECL_CLOSE; case BT_NUM: return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr); -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ - ptr += n; \ - tok = XML_TOK_NAME; \ - break; \ - } \ - if (IS_NAME_CHAR(enc, ptr, n)) { \ - ptr += n; \ - tok = XML_TOK_NMTOKEN; \ - break; \ - } \ - *nextTokPtr = ptr; \ +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (IS_INVALID_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ + ptr += n; \ + tok = XML_TOK_NAME; \ + break; \ + } \ + if (IS_NAME_CHAR(enc, ptr, n)) { \ + ptr += n; \ + tok = XML_TOK_NMTOKEN; \ + break; \ + } \ + *nextTokPtr = ptr; \ return XML_TOK_INVALID; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE case BT_NMSTRT: case BT_HEX: tok = XML_TOK_NAME; @@ -1112,9 +1172,9 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, case BT_DIGIT: case BT_NAME: case BT_MINUS: -#ifdef XML_NS +# ifdef XML_NS case BT_COLON: -#endif +# endif tok = XML_TOK_NMTOKEN; ptr += MINBPC(enc); break; @@ -1136,13 +1196,19 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, } while (HAS_CHAR(enc, ptr, end)) { switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - case BT_GT: case BT_RPAR: case BT_COMMA: - case BT_VERBAR: case BT_LSQB: case BT_PERCNT: - case BT_S: case BT_CR: case BT_LF: + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_GT: + case BT_RPAR: + case BT_COMMA: + case BT_VERBAR: + case BT_LSQB: + case BT_PERCNT: + case BT_S: + case BT_CR: + case BT_LF: *nextTokPtr = ptr; return tok; -#ifdef XML_NS +# ifdef XML_NS case BT_COLON: ptr += MINBPC(enc); switch (tok) { @@ -1150,7 +1216,7 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, REQUIRE_CHAR(enc, ptr, end); tok = XML_TOK_PREFIXED_NAME; switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) default: tok = XML_TOK_NMTOKEN; break; @@ -1161,23 +1227,23 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, break; } break; -#endif +# endif case BT_PLUS: - if (tok == XML_TOK_NMTOKEN) { + if (tok == XML_TOK_NMTOKEN) { *nextTokPtr = ptr; return XML_TOK_INVALID; } *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_NAME_PLUS; case BT_AST: - if (tok == XML_TOK_NMTOKEN) { + if (tok == XML_TOK_NMTOKEN) { *nextTokPtr = ptr; return XML_TOK_INVALID; } *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_NAME_ASTERISK; case BT_QUEST: - if (tok == XML_TOK_NMTOKEN) { + if (tok == XML_TOK_NMTOKEN) { *nextTokPtr = ptr; return XML_TOK_INVALID; } @@ -1192,21 +1258,30 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, } static int PTRCALL -PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, - const char *end, const char **nextTokPtr) -{ +PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { const char *start; if (ptr >= end) return XML_TOK_NONE; - else if (! HAS_CHAR(enc, ptr, end)) - return XML_TOK_PARTIAL; + else if (! HAS_CHAR(enc, ptr, end)) { + /* This line cannot be executed. The incoming data has already + * been tokenized once, so incomplete characters like this have + * already been eliminated from the input. Retaining the paranoia + * check is still valuable, however. + */ + return XML_TOK_PARTIAL; /* LCOV_EXCL_LINE */ + } start = ptr; while (HAS_CHAR(enc, ptr, end)) { switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + ptr += n; /* NOTE: The encoding has already been validated. */ \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE case BT_AMP: if (ptr == start) return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); @@ -1252,21 +1327,30 @@ PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, } static int PTRCALL -PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, - const char *end, const char **nextTokPtr) -{ +PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { const char *start; if (ptr >= end) return XML_TOK_NONE; - else if (! HAS_CHAR(enc, ptr, end)) - return XML_TOK_PARTIAL; + else if (! HAS_CHAR(enc, ptr, end)) { + /* This line cannot be executed. The incoming data has already + * been tokenized once, so incomplete characters like this have + * already been eliminated from the input. Retaining the paranoia + * check is still valuable, however. + */ + return XML_TOK_PARTIAL; /* LCOV_EXCL_LINE */ + } start = ptr; while (HAS_CHAR(enc, ptr, end)) { switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + ptr += n; /* NOTE: The encoding has already been validated. */ \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE case BT_AMP: if (ptr == start) return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); @@ -1274,8 +1358,7 @@ PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, return XML_TOK_DATA_CHARS; case BT_PERCNT: if (ptr == start) { - int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc), - end, nextTokPtr); + int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok; } *nextTokPtr = ptr; @@ -1308,12 +1391,11 @@ PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, return XML_TOK_DATA_CHARS; } -#ifdef XML_DTD +# ifdef XML_DTD static int PTRCALL -PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, - const char *end, const char **nextTokPtr) -{ +PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { int level = 0; if (MINBPC(enc) > 1) { size_t n = end - ptr; @@ -1324,7 +1406,7 @@ PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, } while (HAS_CHAR(enc, ptr, end)) { switch (BYTE_TYPE(enc, ptr)) { - INVALID_CASES(ptr, nextTokPtr) + INVALID_CASES(ptr, nextTokPtr) case BT_LT: ptr += MINBPC(enc); REQUIRE_CHAR(enc, ptr, end); @@ -1361,12 +1443,11 @@ PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, return XML_TOK_PARTIAL; } -#endif /* XML_DTD */ +# endif /* XML_DTD */ static int PTRCALL PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, - const char **badPtr) -{ + const char **badPtr) { ptr += MINBPC(enc); end -= MINBPC(enc); for (; HAS_CHAR(enc, ptr, end); ptr += MINBPC(enc)) { @@ -1389,9 +1470,9 @@ PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, case BT_AST: case BT_PERCNT: case BT_NUM: -#ifdef XML_NS +# ifdef XML_NS case BT_COLON: -#endif +# endif break; case BT_S: if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) { @@ -1401,8 +1482,9 @@ PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, break; case BT_NAME: case BT_NMSTRT: - if (!(BYTE_TO_ASCII(enc, ptr) & ~0x7f)) + if (! (BYTE_TO_ASCII(enc, ptr) & ~0x7f)) break; + /* fall through */ default: switch (BYTE_TO_ASCII(enc, ptr)) { case 0x24: /* $ */ @@ -1424,9 +1506,8 @@ PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, */ static int PTRCALL -PREFIX(getAtts)(const ENCODING *enc, const char *ptr, - int attsMax, ATTRIBUTE *atts) -{ +PREFIX(getAtts)(const ENCODING *enc, const char *ptr, int attsMax, + ATTRIBUTE *atts) { enum { other, inName, inValue } state = inName; int nAtts = 0; int open = 0; /* defined when state == inValue; @@ -1434,32 +1515,35 @@ PREFIX(getAtts)(const ENCODING *enc, const char *ptr, for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) { switch (BYTE_TYPE(enc, ptr)) { -#define START_NAME \ - if (state == other) { \ - if (nAtts < attsMax) { \ - atts[nAtts].name = ptr; \ - atts[nAtts].normalized = 1; \ - } \ - state = inName; \ - } -#define LEAD_CASE(n) \ - case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE +# define START_NAME \ + if (state == other) { \ + if (nAtts < attsMax) { \ + atts[nAtts].name = ptr; \ + atts[nAtts].normalized = 1; \ + } \ + state = inName; \ + } +# define LEAD_CASE(n) \ + case BT_LEAD##n: /* NOTE: The encoding has already been validated. */ \ + START_NAME ptr += (n - MINBPC(enc)); \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE case BT_NONASCII: case BT_NMSTRT: case BT_HEX: START_NAME break; -#undef START_NAME +# undef START_NAME case BT_QUOT: if (state != inValue) { if (nAtts < attsMax) atts[nAtts].valuePtr = ptr + MINBPC(enc); state = inValue; open = BT_QUOT; - } - else if (open == BT_QUOT) { + } else if (open == BT_QUOT) { state = other; if (nAtts < attsMax) atts[nAtts].valueEnd = ptr; @@ -1472,8 +1556,7 @@ PREFIX(getAtts)(const ENCODING *enc, const char *ptr, atts[nAtts].valuePtr = ptr + MINBPC(enc); state = inValue; open = BT_APOS; - } - else if (open == BT_APOS) { + } else if (open == BT_APOS) { state = other; if (nAtts < attsMax) atts[nAtts].valueEnd = ptr; @@ -1487,16 +1570,15 @@ PREFIX(getAtts)(const ENCODING *enc, const char *ptr, case BT_S: if (state == inName) state = other; - else if (state == inValue - && nAtts < attsMax - && atts[nAtts].normalized + else if (state == inValue && nAtts < attsMax && atts[nAtts].normalized && (ptr == atts[nAtts].valuePtr || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open)) atts[nAtts].normalized = 0; break; - case BT_CR: case BT_LF: + case BT_CR: + case BT_LF: /* This case ensures that the first attribute name is counted Apart from that we could just change state on the quote. */ if (state == inName) @@ -1517,29 +1599,44 @@ PREFIX(getAtts)(const ENCODING *enc, const char *ptr, } static int PTRFASTCALL -PREFIX(charRefNumber)(const ENCODING *UNUSED_P(enc), const char *ptr) -{ +PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) { int result = 0; /* skip &# */ - ptr += 2*MINBPC(enc); + UNUSED_P(enc); + ptr += 2 * MINBPC(enc); if (CHAR_MATCHES(enc, ptr, ASCII_x)) { - for (ptr += MINBPC(enc); - !CHAR_MATCHES(enc, ptr, ASCII_SEMI); + for (ptr += MINBPC(enc); ! CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { int c = BYTE_TO_ASCII(enc, ptr); switch (c) { - case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4: - case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9: + case ASCII_0: + case ASCII_1: + case ASCII_2: + case ASCII_3: + case ASCII_4: + case ASCII_5: + case ASCII_6: + case ASCII_7: + case ASCII_8: + case ASCII_9: result <<= 4; result |= (c - ASCII_0); break; - case ASCII_A: case ASCII_B: case ASCII_C: - case ASCII_D: case ASCII_E: case ASCII_F: + case ASCII_A: + case ASCII_B: + case ASCII_C: + case ASCII_D: + case ASCII_E: + case ASCII_F: result <<= 4; result += 10 + (c - ASCII_A); break; - case ASCII_a: case ASCII_b: case ASCII_c: - case ASCII_d: case ASCII_e: case ASCII_f: + case ASCII_a: + case ASCII_b: + case ASCII_c: + case ASCII_d: + case ASCII_e: + case ASCII_f: result <<= 4; result += 10 + (c - ASCII_a); break; @@ -1547,9 +1644,8 @@ PREFIX(charRefNumber)(const ENCODING *UNUSED_P(enc), const char *ptr) if (result >= 0x110000) return -1; } - } - else { - for (; !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { + } else { + for (; ! CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { int c = BYTE_TO_ASCII(enc, ptr); result *= 10; result += (c - ASCII_0); @@ -1561,10 +1657,10 @@ PREFIX(charRefNumber)(const ENCODING *UNUSED_P(enc), const char *ptr) } static int PTRCALL -PREFIX(predefinedEntityName)(const ENCODING *UNUSED_P(enc), const char *ptr, - const char *end) -{ - switch ((end - ptr)/MINBPC(enc)) { +PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr, + const char *end) { + UNUSED_P(enc); + switch ((end - ptr) / MINBPC(enc)) { case 2: if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) { switch (BYTE_TO_ASCII(enc, ptr)) { @@ -1615,97 +1711,42 @@ PREFIX(predefinedEntityName)(const ENCODING *UNUSED_P(enc), const char *ptr, } static int PTRCALL -PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2) -{ - for (;;) { - switch (BYTE_TYPE(enc, ptr1)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (*ptr1++ != *ptr2++) \ - return 0; - LEAD_CASE(4) LEAD_CASE(3) LEAD_CASE(2) -#undef LEAD_CASE - /* fall through */ - if (*ptr1++ != *ptr2++) - return 0; - break; - case BT_NONASCII: - case BT_NMSTRT: -#ifdef XML_NS - case BT_COLON: -#endif - case BT_HEX: - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 1) { - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 2) { - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 3) { - if (*ptr2++ != *ptr1++) - return 0; - } - } - } - break; - default: - if (MINBPC(enc) == 1 && *ptr1 == *ptr2) - return 1; - switch (BYTE_TYPE(enc, ptr2)) { - case BT_LEAD2: - case BT_LEAD3: - case BT_LEAD4: - case BT_NONASCII: - case BT_NMSTRT: -#ifdef XML_NS - case BT_COLON: -#endif - case BT_HEX: - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: - return 0; - default: - return 1; - } - } - } - /* not reached */ -} - -static int PTRCALL -PREFIX(nameMatchesAscii)(const ENCODING *UNUSED_P(enc), const char *ptr1, - const char *end1, const char *ptr2) -{ +PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1, + const char *end1, const char *ptr2) { + UNUSED_P(enc); for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) { - if (end1 - ptr1 < MINBPC(enc)) - return 0; - if (!CHAR_MATCHES(enc, ptr1, *ptr2)) + if (end1 - ptr1 < MINBPC(enc)) { + /* This line cannot be executed. The incoming data has already + * been tokenized once, so incomplete characters like this have + * already been eliminated from the input. Retaining the + * paranoia check is still valuable, however. + */ + return 0; /* LCOV_EXCL_LINE */ + } + if (! CHAR_MATCHES(enc, ptr1, *ptr2)) return 0; } return ptr1 == end1; } static int PTRFASTCALL -PREFIX(nameLength)(const ENCODING *enc, const char *ptr) -{ +PREFIX(nameLength)(const ENCODING *enc, const char *ptr) { const char *start = ptr; for (;;) { switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + ptr += n; /* NOTE: The encoding has already been validated. */ \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE case BT_NONASCII: case BT_NMSTRT: -#ifdef XML_NS +# ifdef XML_NS case BT_COLON: -#endif +# endif case BT_HEX: case BT_DIGIT: case BT_NAME: @@ -1718,9 +1759,8 @@ PREFIX(nameLength)(const ENCODING *enc, const char *ptr) } } -static const char * PTRFASTCALL -PREFIX(skipS)(const ENCODING *enc, const char *ptr) -{ +static const char *PTRFASTCALL +PREFIX(skipS)(const ENCODING *enc, const char *ptr) { for (;;) { switch (BYTE_TYPE(enc, ptr)) { case BT_LF: @@ -1735,21 +1775,21 @@ PREFIX(skipS)(const ENCODING *enc, const char *ptr) } static void PTRCALL -PREFIX(updatePosition)(const ENCODING *enc, - const char *ptr, - const char *end, - POSITION *pos) -{ +PREFIX(updatePosition)(const ENCODING *enc, const char *ptr, const char *end, + POSITION *pos) { while (HAS_CHAR(enc, ptr, end)) { switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + ptr += n; /* NOTE: The encoding has already been validated. */ \ + pos->columnNumber++; \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE case BT_LF: - pos->columnNumber = (XML_Size)-1; + pos->columnNumber = 0; pos->lineNumber++; ptr += MINBPC(enc); break; @@ -1758,22 +1798,22 @@ PREFIX(updatePosition)(const ENCODING *enc, ptr += MINBPC(enc); if (HAS_CHAR(enc, ptr, end) && BYTE_TYPE(enc, ptr) == BT_LF) ptr += MINBPC(enc); - pos->columnNumber = (XML_Size)-1; + pos->columnNumber = 0; break; default: ptr += MINBPC(enc); + pos->columnNumber++; break; } - pos->columnNumber++; } } -#undef DO_LEAD_CASE -#undef MULTIBYTE_CASES -#undef INVALID_CASES -#undef CHECK_NAME_CASE -#undef CHECK_NAME_CASES -#undef CHECK_NMSTRT_CASE -#undef CHECK_NMSTRT_CASES +# undef DO_LEAD_CASE +# undef MULTIBYTE_CASES +# undef INVALID_CASES +# undef CHECK_NAME_CASE +# undef CHECK_NAME_CASES +# undef CHECK_NMSTRT_CASE +# undef CHECK_NMSTRT_CASES #endif /* XML_TOK_IMPL_C */ diff --git a/deps/EXPAT/expat/xmltok_ns.inc b/deps/EXPAT/expat/xmltok_ns.inc index c3b88fdf4e..fbdd3e3c7b 100644 --- a/deps/EXPAT/expat/xmltok_ns.inc +++ b/deps/EXPAT/expat/xmltok_ns.inc @@ -1,61 +1,83 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. +/* This file is included! + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2002 Greg Stein + Copyright (c) 2002 Fred L. Drake, Jr. + Copyright (c) 2002-2006 Karl Waclawek + Copyright (c) 2017-2021 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* This file is included! */ #ifdef XML_TOK_NS_C const ENCODING * -NS(XmlGetUtf8InternalEncoding)(void) -{ +NS(XmlGetUtf8InternalEncoding)(void) { return &ns(internal_utf8_encoding).enc; } const ENCODING * -NS(XmlGetUtf16InternalEncoding)(void) -{ -#if BYTEORDER == 1234 +NS(XmlGetUtf16InternalEncoding)(void) { +# if BYTEORDER == 1234 return &ns(internal_little2_encoding).enc; -#elif BYTEORDER == 4321 +# elif BYTEORDER == 4321 return &ns(internal_big2_encoding).enc; -#else +# else const short n = 1; - return (*(const char *)&n - ? &ns(internal_little2_encoding).enc - : &ns(internal_big2_encoding).enc); -#endif + return (*(const char *)&n ? &ns(internal_little2_encoding).enc + : &ns(internal_big2_encoding).enc); +# endif } -static const ENCODING * const NS(encodings)[] = { - &ns(latin1_encoding).enc, - &ns(ascii_encoding).enc, - &ns(utf8_encoding).enc, - &ns(big2_encoding).enc, - &ns(big2_encoding).enc, - &ns(little2_encoding).enc, - &ns(utf8_encoding).enc /* NO_ENC */ +static const ENCODING *const NS(encodings)[] = { + &ns(latin1_encoding).enc, &ns(ascii_encoding).enc, + &ns(utf8_encoding).enc, &ns(big2_encoding).enc, + &ns(big2_encoding).enc, &ns(little2_encoding).enc, + &ns(utf8_encoding).enc /* NO_ENC */ }; static int PTRCALL NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - return initScan(NS(encodings), (const INIT_ENCODING *)enc, - XML_PROLOG_STATE, ptr, end, nextTokPtr); + const char **nextTokPtr) { + return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_PROLOG_STATE, + ptr, end, nextTokPtr); } static int PTRCALL NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - return initScan(NS(encodings), (const INIT_ENCODING *)enc, - XML_CONTENT_STATE, ptr, end, nextTokPtr); + const char **nextTokPtr) { + return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_CONTENT_STATE, + ptr, end, nextTokPtr); } int NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, - const char *name) -{ + const char *name) { int i = getEncodingIndex(name); if (i == UNKNOWN_ENC) return 0; @@ -69,10 +91,9 @@ NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, } static const ENCODING * -NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) -{ -#define ENCODING_MAX 128 - char buf[ENCODING_MAX]; +NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) { +# define ENCODING_MAX 128 + char buf[ENCODING_MAX] = ""; char *p = buf; int i; XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); @@ -88,28 +109,14 @@ NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) } int -NS(XmlParseXmlDecl)(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingName, - const ENCODING **encoding, - int *standalone) -{ - return doParseXmlDecl(NS(findEncoding), - isGeneralTextEntity, - enc, - ptr, - end, - badPtr, - versionPtr, - versionEndPtr, - encodingName, - encoding, - standalone); +NS(XmlParseXmlDecl)(int isGeneralTextEntity, const ENCODING *enc, + const char *ptr, const char *end, const char **badPtr, + const char **versionPtr, const char **versionEndPtr, + const char **encodingName, const ENCODING **encoding, + int *standalone) { + return doParseXmlDecl(NS(findEncoding), isGeneralTextEntity, enc, ptr, end, + badPtr, versionPtr, versionEndPtr, encodingName, + encoding, standalone); } #endif /* XML_TOK_NS_C */ diff --git a/deps/OpenSSL/OpenSSL.cmake b/deps/OpenSSL/OpenSSL.cmake index 5715c4a001..b42b1a808d 100644 --- a/deps/OpenSSL/OpenSSL.cmake +++ b/deps/OpenSSL/OpenSSL.cmake @@ -40,8 +40,10 @@ endif() ExternalProject_Add(dep_OpenSSL #EXCLUDE_FROM_ALL ON - URL "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1k.tar.gz" - URL_HASH SHA256=b92f9d3d12043c02860e5e602e50a73ed21a69947bcc74d391f41148e9f6aa95 + #URL "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1k.tar.gz" + URL "https://github.com/openssl/openssl/archive/refs/tags/openssl-3.1.2.tar.gz" + #URL_HASH SHA256=b92f9d3d12043c02860e5e602e50a73ed21a69947bcc74d391f41148e9f6aa95 + URL_HASH SHA256=8c776993154652d0bb393f506d850b811517c8bd8d24b1008aef57fbe55d3f31 DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/OpenSSL CONFIGURE_COMMAND ${_conf_cmd} ${_cross_arch} "--openssldir=${DESTDIR}/usr/local" @@ -61,4 +63,4 @@ ExternalProject_Add_Step(dep_OpenSSL install_cmake_files COMMAND ${CMAKE_COMMAND} -E copy_directory openssl "${DESTDIR}/usr/local/${CMAKE_INSTALL_LIBDIR}/cmake/openssl" WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}" -) \ No newline at end of file +) diff --git a/deps/ZLIB/0001-Respect-BUILD_SHARED_LIBS.patch b/deps/ZLIB/0001-Respect-BUILD_SHARED_LIBS.patch index f176ce2872..b7a2f93716 100644 --- a/deps/ZLIB/0001-Respect-BUILD_SHARED_LIBS.patch +++ b/deps/ZLIB/0001-Respect-BUILD_SHARED_LIBS.patch @@ -1,16 +1,16 @@ -Common subdirectories: ../zlib-1.2.11/amiga and ./amiga -diff -u ../zlib-1.2.11/CMakeLists.txt ./CMakeLists.txt ---- ../zlib-1.2.11/CMakeLists.txt 2017-01-15 09:29:40.000000000 +0100 -+++ ./CMakeLists.txt 2021-03-24 15:24:48.190291072 +0100 -@@ -183,10 +183,12 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b412dc7..5ca7fa8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -147,10 +147,12 @@ if(MINGW) set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) endif(MINGW) --add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) --add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) +-add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) +-add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) -set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) -set_target_properties(zlib PROPERTIES SOVERSION 1) -+add_library(zlib ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) ++add_library(zlib ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) +if (BUILD_SHARED_LIBS) + target_sources(zlib PRIVATE ${ZLIB_DLL_SRCS}) + set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) @@ -19,7 +19,7 @@ diff -u ../zlib-1.2.11/CMakeLists.txt ./CMakeLists.txt if(NOT CYGWIN) # This property causes shared libraries on Linux to have the full version -@@ -201,7 +203,7 @@ +@@ -165,7 +167,7 @@ endif() if(UNIX) # On unix-like platforms the library is almost always called libz @@ -28,7 +28,7 @@ diff -u ../zlib-1.2.11/CMakeLists.txt ./CMakeLists.txt if(NOT APPLE) set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"") endif() -@@ -211,7 +213,7 @@ +@@ -175,7 +177,7 @@ elseif(BUILD_SHARED_LIBS AND WIN32) endif() if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) @@ -37,15 +37,3 @@ diff -u ../zlib-1.2.11/CMakeLists.txt ./CMakeLists.txt RUNTIME DESTINATION "${INSTALL_BIN_DIR}" ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" LIBRARY DESTINATION "${INSTALL_LIB_DIR}" ) -Common subdirectories: ../zlib-1.2.11/contrib and ./contrib -Common subdirectories: ../zlib-1.2.11/doc and ./doc -Common subdirectories: ../zlib-1.2.11/examples and ./examples -Common subdirectories: ../zlib-1.2.11/msdos and ./msdos -Common subdirectories: ../zlib-1.2.11/nintendods and ./nintendods -Common subdirectories: ../zlib-1.2.11/old and ./old -Common subdirectories: ../zlib-1.2.11/os400 and ./os400 -Common subdirectories: ../zlib-1.2.11/qnx and ./qnx -Common subdirectories: ../zlib-1.2.11/test and ./test -Common subdirectories: ../zlib-1.2.11/watcom and ./watcom -Common subdirectories: ../zlib-1.2.11/win32 and ./win32 -Only in ./: ZLIB.patch diff --git a/deps/ZLIB/ZLIB.cmake b/deps/ZLIB/ZLIB.cmake index 63002f9460..0d5497e414 100644 --- a/deps/ZLIB/ZLIB.cmake +++ b/deps/ZLIB/ZLIB.cmake @@ -1,9 +1,13 @@ +set(patch_command git init && ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-Respect-BUILD_SHARED_LIBS.patch) + orcaslicer_add_cmake_project(ZLIB # GIT_REPOSITORY https://github.com/madler/zlib.git # GIT_TAG v1.2.11 - URL https://github.com/madler/zlib/archive/refs/tags/v1.2.11.zip - URL_HASH SHA256=f5cc4ab910db99b2bdbba39ebbdc225ffc2aa04b4057bc2817f1b94b6978cfc3 - PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-Respect-BUILD_SHARED_LIBS.patch + #URL https://github.com/madler/zlib/archive/refs/tags/v1.2.11.zip + URL https://github.com/madler/zlib/archive/refs/tags/v1.2.13.zip + #URL_HASH SHA256=f5cc4ab910db99b2bdbba39ebbdc225ffc2aa04b4057bc2817f1b94b6978cfc3 + URL_HASH SHA256=c2856951bbf30e30861ace3765595d86ba13f2cf01279d901f6c62258c57f4ff + PATCH_COMMAND ${patch_command} CMAKE_ARGS -DSKIP_INSTALL_FILES=ON # Prevent installation of man pages et al. -DCMAKE_POSITION_INDEPENDENT_CODE=ON diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 88bce11516..26aa1b30e3 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: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -644,6 +644,9 @@ msgstr "" msgid "Choose one file (3mf):" msgstr "" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "" @@ -1470,6 +1473,9 @@ msgstr "" msgid "?" msgstr "" +msgid "/" +msgstr "" + msgid "Empty" msgstr "" @@ -1482,12 +1488,6 @@ msgstr "" msgid "AMS not connected" msgstr "" -msgid "Cali" -msgstr "" - -msgid "Calibration of extrusion" -msgstr "" - msgid "Load Filament" msgstr "" @@ -1518,6 +1518,9 @@ msgstr "" msgid "Cancel calibration" msgstr "" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "" @@ -1533,7 +1536,13 @@ msgstr "" msgid "Purge old filament" msgstr "" -msgid "Push new filament into the extruder" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" msgstr "" msgid "Grab new filament" @@ -2276,25 +2285,18 @@ msgid "" "centigrade" msgstr "" -#, possible-c-format, possible-boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" msgstr "" +#, possible-c-format, possible-boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2333,6 +2335,9 @@ msgid "" "layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2439,6 +2444,36 @@ msgstr "" msgid "Paused due to heat bed temperature malfunction" msgstr "" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "" @@ -2475,6 +2510,24 @@ msgstr "" msgid "Update failed." msgstr "" +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "" @@ -2600,12 +2653,15 @@ msgstr "" msgid "Total" msgstr "" -msgid "Total Time Estimation" +msgid "Total Estimation" msgstr "" msgid "Total time" msgstr "" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "" @@ -2693,9 +2749,6 @@ msgstr "" msgid "Print settings" msgstr "" -msgid "Total Estimation" -msgstr "" - msgid "Time Estimation" msgstr "" @@ -2804,6 +2857,9 @@ msgstr "" msgid "Avoid extrusion calibration region" msgstr "" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "" @@ -2894,7 +2950,10 @@ msgstr "" msgid "Bed leveling" msgstr "" -msgid "Resonance frequency identification" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" msgstr "" msgid "Calibration program" @@ -2912,6 +2971,9 @@ msgstr "" msgid "Start Calibration" msgstr "" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "" @@ -2986,9 +3048,6 @@ msgstr "" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "" -msgid "Upload" -msgstr "" - msgid "Slice plate" msgstr "" @@ -3640,10 +3699,18 @@ msgstr "" msgid "Layer: N/A" msgstr "" -msgid "Immediately score" +msgid "Clear" msgstr "" -msgid "Clear" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" msgstr "" msgid "Camera" @@ -3711,12 +3778,6 @@ msgstr "" msgid "Layer: %s" msgstr "" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "" - -msgid "Score" -msgstr "" - #, possible-c-format, possible-boost-format msgid "Layer: %d/%d" msgstr "" @@ -3756,6 +3817,97 @@ msgstr "" msgid "Can't start this without SD card." msgstr "" +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "" @@ -3882,6 +4034,9 @@ msgstr "" msgid "Export successfully." msgstr "" +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "" @@ -3963,6 +4118,9 @@ msgstr "" msgid "Auto-recovery from step loss" msgstr "" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "" @@ -4102,6 +4260,11 @@ msgid "" "filament, otherwise, the nozzle will be attrited or damaged." msgstr "" +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, possible-c-format, possible-boost-format msgid "Loading file: %s" msgstr "" @@ -4294,6 +4457,11 @@ msgstr "" msgid "Project downloaded %d%%" msgstr "" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "" @@ -4661,9 +4829,6 @@ msgstr "" msgid "warning" msgstr "" -msgid "info" -msgstr "" - msgid "debug" msgstr "" @@ -4913,10 +5078,16 @@ msgstr "" msgid "PLA Plate" msgstr "" -msgid "Bamabu Engineering Plate" +msgid "Bambu Engineering Plate" msgstr "" -msgid "Bamabu High Temperature Plate" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" msgstr "" msgid "Send print job to" @@ -4931,7 +5102,7 @@ msgstr "" msgid "Flow Dynamics Calibration" msgstr "" -msgid "Can't connect to the printer" +msgid "Click here if you can't connect to the printer" msgstr "" msgid "send completed" @@ -5025,6 +5196,16 @@ msgstr "" msgid "This printer does not support printing all plates" msgstr "" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "" @@ -5298,6 +5479,9 @@ msgstr "" msgid "Support filament" msgstr "" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "" @@ -5346,9 +5530,6 @@ msgstr "" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" -msgid "Recommended temperature range" -msgstr "" - msgid "Print temperature" msgstr "" @@ -5374,12 +5555,13 @@ msgid "" "filament does not support to print on the Engineering Plate" msgstr "" -msgid "High Temp Plate" +msgid "Smooth PEI Plate / High Temp Plate" msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" msgid "Textured PEI Plate" @@ -5423,6 +5605,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "" @@ -5474,6 +5665,9 @@ msgstr "" msgid "Layer change G-code" msgstr "" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "" @@ -6288,6 +6482,11 @@ msgstr "" msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "" @@ -6433,6 +6632,24 @@ msgid "" "materials." msgstr "" +#, possible-boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, possible-boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "" @@ -6861,6 +7078,14 @@ msgstr "" msgid "Enable this option to slow printing down for different overhang degree" msgstr "" +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "" @@ -6984,6 +7209,23 @@ msgstr "" msgid "Default process profile when switch to this machine profile" msgstr "" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "" @@ -7038,17 +7280,6 @@ msgid "" "thickness (top+bottom solid layers)" msgstr "" -msgid "Internal bridge support thickness" -msgstr "" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" - msgid "Top surface pattern" msgstr "" @@ -7578,7 +7809,12 @@ msgid "accel_to_decel" msgstr "" #, possible-c-format, possible-boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "%%" msgstr "" msgid "Jerk of outer walls" @@ -7764,6 +8000,30 @@ msgstr "" msgid "HRC" msgstr "" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "" @@ -7796,6 +8056,28 @@ msgid "" "Set to 0 to deactivate." msgstr "" +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "" @@ -8033,9 +8315,6 @@ msgstr "" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -msgid "Fan speed" -msgstr "" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8049,6 +8328,55 @@ msgid "" "layer hight when enable adaptive layer height" msgstr "" +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "" @@ -8302,6 +8630,22 @@ msgid "" "print when travel move. Using spiral line to lift z can prevent stringing" msgstr "" +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "" @@ -8750,9 +9094,10 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" msgid "Snug" @@ -8899,21 +9244,19 @@ msgstr "" msgid "Chamber temperature" msgstr "" -msgid "Target chamber temperature" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "" -msgid "Bed temperature difference" -msgstr "" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" - msgid "Detect thin wall" msgstr "" @@ -9256,6 +9599,12 @@ msgstr "" msgid "Load first filament as default for those not loaded" msgstr "" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "" @@ -9310,13 +9659,38 @@ msgstr "" msgid "Repetions count of the whole model" msgstr "" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "" msgid "Convert the units of model" msgstr "" -msgid "Orient the model" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." msgstr "" msgid "Scale the model by a float factor" @@ -9371,6 +9745,12 @@ msgid "" "trace\n" msgstr "" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "" @@ -9558,6 +9938,15 @@ msgstr "" msgid "The name cannot exceed 40 characters." msgstr "" +#, possible-c-format, possible-boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "" @@ -9587,6 +9976,9 @@ msgstr "" msgid "Please select filament to calibrate." msgstr "" +msgid "The input value size must be 3." +msgstr "" + msgid "Connecting to printer..." msgstr "" @@ -9605,9 +9997,6 @@ msgstr "" msgid "Flow rate calibration result has been saved to preset" msgstr "" -msgid "The input value size must be 3." -msgstr "" - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" @@ -9743,6 +10132,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "" @@ -9845,6 +10237,12 @@ msgstr "" msgid "Extra info" msgstr "" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "" + #, possible-c-format, possible-boost-format msgid "%s is not compatible with %s" msgstr "" @@ -9855,6 +10253,21 @@ msgstr "" msgid "Connecting to printer" msgstr "" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" @@ -9967,6 +10380,9 @@ msgstr "" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" +msgid "Upload" +msgstr "" + msgid "Print host upload queue" msgstr "" @@ -10028,9 +10444,6 @@ msgstr "" msgid "PA Pattern" msgstr "" -msgid "Method" -msgstr "" - msgid "Start PA: " msgstr "" @@ -10104,7 +10517,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10119,7 +10533,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10175,6 +10590,17 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "" +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "3D Scene Operations\nDid you know how to control view and object/part selection with mouse and touchpanel in the 3D scene?" msgstr "" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 8ada37f59d..2a01068ada 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-12 20:34+0800\n" -"PO-Revision-Date: 2023-07-17 21:51+0200\n" -"Last-Translator: Momo \n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" +"PO-Revision-Date: 2023-09-30 15:15+0200\n" +"Last-Translator: René Mošner \n" "Language-Team: \n" "Language: cs_CZ\n" "MIME-Version: 1.0\n" @@ -111,12 +111,11 @@ msgstr "Plochou na podložku" #, boost-format msgid "" -"Filament count exceeds the maximum number that painting tool supports. only " -"the first %1% filaments will be available in painting tool." +"Filament count exceeds the maximum number that painting tool supports. only the first %1% filaments will " +"be available in painting tool." msgstr "" -"Počet filamentů překračuje maximální počet, který nástroj pro malování " -"podporuje. Pouze prvních %1% filamentů bude k dispozici v nástroji pro " -"malování." +"Počet filamentů překračuje maximální počet, který nástroj pro malování podporuje. Pouze prvních %1% " +"filamentů bude k dispozici v nástroji pro malování." msgid "Color Painting" msgstr "Barevná malba" @@ -416,11 +415,11 @@ msgstr "Procento decimace" #, boost-format msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is " -"highly recommended to simplify the model." +"Processing model '%1%' with more than 1M triangles could be slow. It is highly recommended to simplify " +"the model." msgstr "" -"Zpracování modelu '%1%' s více než 1 milionem trojúhelníků může být pomalé. " -"Je to Vřele doporučujeme pro zjednodušení modelu." +"Zpracování modelu '%1%' s více než 1 milionem trojúhelníků může být pomalé. Je to Vřele doporučujeme pro " +"zjednodušení modelu." msgid "Simplify model" msgstr "Zjednodušit model" @@ -429,8 +428,7 @@ msgid "Simplify" msgstr "Zjednodušit" msgid "Simplification is currently only allowed when a single part is selected" -msgstr "" -"Zjednodušení je v současné době povoleno pouze pokud je vybrán jeden díl" +msgstr "Zjednodušení je v současné době povoleno pouze pokud je vybrán jeden díl" msgid "Error" msgstr "Chyba" @@ -560,35 +558,31 @@ msgid "Machine" msgstr "Stroj" msgid "Configuration package was loaded, but some values were not recognized." -msgstr "" -"Konfigurační balíček byl načten, ale některé hodnoty nebyly rozpoznány." +msgstr "Konfigurační balíček byl načten, ale některé hodnoty nebyly rozpoznány." #, boost-format -msgid "" -"Configuration file \"%1%\" was loaded, but some values were not recognized." -msgstr "" -"Konfigurační soubor \" %1% \" byl načten, ale některé hodnoty nebyly " -"rozpoznány." +msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." +msgstr "Konfigurační soubor \" %1% \" byl načten, ale některé hodnoty nebyly rozpoznány." msgid "V" msgstr "V" msgid "" -"OrcaSlicer will terminate because of running out of memory.It may be a bug. " -"It will be appreciated if you report the issue to our team." +"OrcaSlicer will terminate because of running out of memory.It may be a bug. It will be appreciated if " +"you report the issue to our team." msgstr "" -"OrcaSlicer se ukončí z důvodu nedostatku paměti. Může to být chyba. Uvítáme, " -"když problém nahlásíte našemu týmu." +"OrcaSlicer se ukončí z důvodu nedostatku paměti. Může to být chyba. Uvítáme, když problém nahlásíte " +"našemu týmu." msgid "Fatal error" msgstr "Fatální chyba" msgid "" -"OrcaSlicer will terminate because of a localization error. It will be " -"appreciated if you report the specific scenario this issue happened." +"OrcaSlicer will terminate because of a localization error. It will be appreciated if you report the " +"specific scenario this issue happened." msgstr "" -"OrcaSlicer se ukončí kvůli chybě lokalizace. Bude to Oceňujeme, pokud " -"nahlásíte konkrétní scénář, kdy k tomuto problému došlo." +"OrcaSlicer se ukončí kvůli chybě lokalizace. Bude to Oceňujeme, pokud nahlásíte konkrétní scénář, kdy k " +"tomuto problému došlo." msgid "Critical error" msgstr "Kritická chyba" @@ -611,20 +605,20 @@ msgid "Connect %s failed! [SN:%s, code=%s]" msgstr "Připojení %s selhalo! [SN:%s, kód=%s]" msgid "" -"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " -"features.\n" +"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain features.\n" "Click Yes to install it now." msgstr "" +"Orca Slicer vyžaduje Microsoft WebView2 Runtime pro provádění určitých funkcí.\n" +"Klikněte na Ano pro jeho nainstalování nyní." msgid "WebView2 Runtime" msgstr "" msgid "" -"OrcaSlicer configuration file may be corrupted and is not abled to be parsed." -"Please delete the file and try again." +"OrcaSlicer configuration file may be corrupted and is not abled to be parsed.Please delete the file and " +"try again." msgstr "" -"Konfigurační soubor OrcaSlicer může být poškozen a nelze jej analyzovat." -"Smažte soubor a zkuste to znovu." +"Konfigurační soubor OrcaSlicer může být poškozen a nelze jej analyzovat.Smažte soubor a zkuste to znovu." #, c-format, boost-format msgid "" @@ -665,6 +659,9 @@ msgstr "Načítání zobrazení režimu" msgid "Choose one file (3mf):" msgstr "Vyberte jeden soubor (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "Vyberte jeden nebo více souborů (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Vyberte jeden nebo více souborů (3mf/step/stl/svg/obj/amf):" @@ -674,29 +671,25 @@ msgstr "Vyberte jeden soubor (gcode/3mf):" msgid "Some presets are modified." msgstr "Některé předvolby jsou upraveny." -msgid "" -"You can keep the modifield presets to the new project, discard or save " -"changes as new presets." +msgid "You can keep the modifield presets to the new project, discard or save changes as new presets." msgstr "" -"Předvolby modifield můžete ponechat pro nový projekt, zahodit nebo uložit " -"změny jako nové předvolby." +"Předvolby modifield můžete ponechat pro nový projekt, zahodit nebo uložit změny jako nové předvolby." msgid "User logged out" msgstr "Uživatel odhlášen" msgid "new or open project file is not allowed during the slicing process!" -msgstr "" -"během procesu Slicovaní není povolen nový nebo otevřený soubor projektu!" +msgstr "během procesu Slicovaní není povolen nový nebo otevřený soubor projektu!" msgid "Open Project" msgstr "Otevřít projekt" msgid "" -"The version of Orca Slicer is too low and needs to be updated to the latest " -"version before it can be used normally" +"The version of Orca Slicer is too low and needs to be updated to the latest version before it can be " +"used normally" msgstr "" -"Verze Orca Slicer je příliš nízká a je třeba ji aktualizovat na nejnovější " -"verze předtím, než ji lze normálně používat" +"Verze Orca Slicer je příliš nízká a je třeba ji aktualizovat na nejnovější verze předtím, než ji lze " +"normálně používat" msgid "Privacy Policy Update" msgstr "Aktualizace zásad ochrany osobních údajů" @@ -1139,8 +1132,7 @@ msgid "Click the icon to reset all settings of the object" msgstr "Kliknutím na ikonu resetujete všechna nastavení objektu" msgid "Right button click the icon to drop the object printable property" -msgstr "" -"Kliknutím pravým tlačítkem na ikonu odstraníte vlastnost pro tisk objektu" +msgstr "Kliknutím pravým tlačítkem na ikonu odstraníte vlastnost pro tisk objektu" msgid "Click the icon to toggle printable property of the object" msgstr "Kliknutím na ikonu přepnete tisknutelné vlastnosti objektu" @@ -1170,16 +1162,11 @@ msgid "Add Modifier" msgstr "Přidat modifikátor" msgid "Switch to per-object setting mode to edit modifier settings." -msgstr "" -"Přepněte do režimu nastavení pro jednotlivé objekty pro úpravu nastavení " -"modifikátoru." +msgstr "Přepněte do režimu nastavení pro jednotlivé objekty pro úpravu nastavení modifikátoru." -msgid "" -"Switch to per-object setting mode to edit process settings of selected " -"objects." +msgid "Switch to per-object setting mode to edit process settings of selected objects." msgstr "" -"Přepněte do režimu nastavení pro jednotlivé objekty a upravte procesní " -"nastavení vybraných předmětů." +"Přepněte do režimu nastavení pro jednotlivé objekty a upravte procesní nastavení vybraných předmětů." msgid "Delete connector from object which is a part of cut" msgstr "Odstranění spojky z objektu, který je částí řezu" @@ -1190,25 +1177,21 @@ msgstr "Smazat pevnou část objektu, která je součástí řezu" msgid "Delete negative volume from object which is a part of cut" msgstr "Smazat negativní objem z objektu, který je součástí řezu" -msgid "" -"To save cut correspondence you can delete all connectors from all related " -"objects." +msgid "To save cut correspondence you can delete all connectors from all related objects." msgstr "" -"Chcete-li uchovat informace o řezu, můžete odstranit všechny spojky ze všech " -"souvisejících objektů." +"Chcete-li uchovat informace o řezu, můžete odstranit všechny spojky ze všech souvisejících objektů." msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate " -"cut infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate cut infornation first." msgstr "" "Tato akce způsobí ztrátu informací o řezu.\n" "Po této akci nelze zaručit konzistenci modelu. \n" "\n" -"Chcete-li manipulovat s částmi modelu nebo negativními objemy, musíte " -"nejprve zneplatnit informace o řezu modelu." +"Chcete-li manipulovat s částmi modelu nebo negativními objemy, musíte nejprve zneplatnit informace o " +"řezu modelu." msgid "Delete all connectors" msgstr "Smazat všechny spojky" @@ -1256,7 +1239,7 @@ msgid "Object" msgstr "Objekt" msgid "Part" -msgstr "Část" +msgstr "Dílů" msgid "Layer" msgstr "Vrstva" @@ -1264,16 +1247,11 @@ msgstr "Vrstva" msgid "Selection conflicts" msgstr "Konflikty výběru" -msgid "" -"If first selected item is an object, the second one should also be object." +msgid "If first selected item is an object, the second one should also be object." msgstr "Pokud je první vybraná položka objekt, druhá by měla být také objekt." -msgid "" -"If first selected item is a part, the second one should be part in the same " -"object." -msgstr "" -"Pokud je tato možnost povolena, zobrazí se při spuštění aplikace užitečné " -"tipy." +msgid "If first selected item is a part, the second one should be part in the same object." +msgstr "Pokud je tato možnost povolena, zobrazí se při spuštění aplikace užitečné tipy." msgid "The type of the last solid object part is not to be changed." msgstr "Typ poslední části pevného objektu nelze změnit." @@ -1339,8 +1317,7 @@ msgid "Invalid numeric." msgstr "Neplatné číslo." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "" -"jednu buňku lze zkopírovat pouze do jedné nebo více buněk ve stejném sloupci" +msgstr "jednu buňku lze zkopírovat pouze do jedné nebo více buněk ve stejném sloupci" msgid "multiple cells copy is not supported" msgstr "kopírování více buněk není podporováno" @@ -1516,6 +1493,9 @@ msgstr "Připojuji se..." msgid "?" msgstr "?" +msgid "/" +msgstr "/" + msgid "Empty" msgstr "Prázdný" @@ -1528,12 +1508,6 @@ msgstr "Automatické Doplnění" msgid "AMS not connected" msgstr "AMS není připojen" -msgid "Cali" -msgstr "Kalibrace" - -msgid "Calibration of extrusion" -msgstr "Kalibrace extruze" - msgid "Load Filament" msgstr "Zavézt Filament" @@ -1564,6 +1538,9 @@ msgstr "Znovu kalibrovat" msgid "Cancel calibration" msgstr "Zrušit kalibraci" +msgid "Idling..." +msgstr "Čekání..." + msgid "Heat the nozzle" msgstr "Zahřejte trysku" @@ -1579,18 +1556,23 @@ msgstr "Zatlačte nový filament do extruderu" msgid "Purge old filament" msgstr "Vyčistit starý filament" -msgid "Push new filament into the extruder" -msgstr "Zasuňte nový filament do extruderu" +msgid "Feed Filament" +msgstr "Zavádění filamentu" + +msgid "Confirm extruded" +msgstr "Potvrdit extruzi" + +msgid "Check filament location" +msgstr "Zkontrolovat polohu filamentu" msgid "Grab new filament" msgstr "Vezměte nový filament" msgid "" -"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " -"load or unload filiament." +"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or unload filiament." msgstr "" -"Vyberte slot AMS a poté stiskněte \" Načíst \" nebo \" Uvolnit \" pro " -"automatické načtení nebo vyjměte vlákno." +"Vyberte slot AMS a poté stiskněte \" Načíst \" nebo \" Uvolnit \" pro automatické načtení nebo vyjměte " +"vlákno." msgid "Edit" msgstr "Upravit" @@ -1615,11 +1597,8 @@ msgstr "" msgid "Arranging..." msgstr "Uspořádávání..." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." -msgstr "" -"Uspořádání se nezdařilo. Při zpracování geometrií objektů bylo nalezeno " -"několik výjimek." +msgid "Arrange failed. Found some exceptions when processing object geometries." +msgstr "Uspořádání se nezdařilo. Při zpracování geometrií objektů bylo nalezeno několik výjimek." msgid "Arranging" msgstr "Uspořádávání" @@ -1627,23 +1606,18 @@ msgstr "Uspořádávání" msgid "Arranging canceled." msgstr "Uspořádávání zrušeno." -msgid "" -"Arranging is done but there are unpacked items. Reduce spacing and try again." -msgstr "" -"Zajištění je hotovo, ale jsou tam rozbalené položky. Zmenšete mezery a " -"zkuste to znovu." +msgid "Arranging is done but there are unpacked items. Reduce spacing and try again." +msgstr "Zajištění je hotovo, ale jsou tam rozbalené položky. Zmenšete mezery a zkuste to znovu." msgid "Arranging done." msgstr "Uspořádávání dokončeno." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single " -"bed:\n" +"Arrangement ignored the following objects which can't fit into a single bed:\n" "%s" msgstr "" -"Uspořádání ignorovalo následující objekty, které se nevejdou na jednu " -"podložku:\n" +"Uspořádání ignorovalo následující objekty, které se nevejdou na jednu podložku:\n" "%s" msgid "" @@ -1697,8 +1671,7 @@ msgid "Task canceled." msgstr "Úloha zrušena." msgid "Upload task timed out. Please check the network status and try again." -msgstr "" -"Čas pro nahrávání úlohy vypršel. Zkontrolujte stav sítě a zkuste to znovu." +msgstr "Čas pro nahrávání úlohy vypršel. Zkontrolujte stav sítě a zkuste to znovu." msgid "Cloud service connection failed. Please try again." msgstr "Připojení ke cloudové službě se nezdařilo. Zkuste to prosím znovu." @@ -1706,12 +1679,9 @@ msgstr "Připojení ke cloudové službě se nezdařilo. Zkuste to prosím znovu msgid "Print file not found. please slice again." msgstr "Tiskový soubor nebyl nalezen. Prosím znovu slicovat." -msgid "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the " -"model and slice again." +msgid "The print file exceeds the maximum allowable size (1GB). Please simplify the model and slice again." msgstr "" -"Tiskový soubor překračuje maximální povolenou velikost (1 GB). Zjednodušte " -"prosím model a znovu slicujte." +"Tiskový soubor překračuje maximální povolenou velikost (1 GB). Zjednodušte prosím model a znovu slicujte." msgid "Failed to send the print job. Please try again." msgstr "Nepodařilo se odeslat tiskovou úlohu. Zkuste to prosím znovu." @@ -1719,27 +1689,17 @@ msgstr "Nepodařilo se odeslat tiskovou úlohu. Zkuste to prosím znovu." msgid "Failed to upload file to ftp. Please try again." msgstr "Selhalo nahrání souboru na FTP. Zkuste to prosím znovu." -msgid "" -"Check the current status of the bambu server by clicking on the link above." +msgid "Check the current status of the bambu server by clicking on the link above." msgstr "Zkontrolujte aktuální stav serveru bambu kliknutím na odkaz výše." -msgid "" -"The size of the print file is too large. Please adjust the file size and try " -"again." -msgstr "" -"Velikost tiskového souboru je příliš velká. Upravte velikost souboru a " -"zkuste to znovu." +msgid "The size of the print file is too large. Please adjust the file size and try again." +msgstr "Velikost tiskového souboru je příliš velká. Upravte velikost souboru a zkuste to znovu." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "" -"Tiskový soubor nebyl nalezen. Prosím, slicujte jej znovu a pošlete k tisku." +msgstr "Tiskový soubor nebyl nalezen. Prosím, slicujte jej znovu a pošlete k tisku." -msgid "" -"Failed to upload print file to FTP. Please check the network status and try " -"again." -msgstr "" -"Selhalo nahrání tiskového souboru na FTP. Zkontrolujte stav sítě a zkuste to " -"znovu." +msgid "Failed to upload print file to FTP. Please check the network status and try again." +msgstr "Selhalo nahrání tiskového souboru na FTP. Zkontrolujte stav sítě a zkuste to znovu." msgid "Sending print job over LAN" msgstr "Odesílání tiskové úlohy přes LAN" @@ -1808,11 +1768,11 @@ msgid "Importing SLA archive" msgstr "Importuje se SLA archiv" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA " -"printer preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA printer preset first before " +"importing that SLA archive." msgstr "" -"SLA archiv neobsahuje žádné přednastavení. Před importem tohoto SLA archivu " -"nejprve aktivujte některé přednastavení SLA tiskárny." +"SLA archiv neobsahuje žádné přednastavení. Před importem tohoto SLA archivu nejprve aktivujte některé " +"přednastavení SLA tiskárny." msgid "Importing canceled." msgstr "Import zrušen." @@ -1821,16 +1781,13 @@ msgid "Importing done." msgstr "Import dokončen." msgid "" -"The imported SLA archive did not contain any presets. The current SLA " -"presets were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA presets were used as fallback." msgstr "" -"Importovaný archiv SLA neobsahoval žádné přednastavení. Aktuální SLA " -"přednastavení bylo použito jako záložní." +"Importovaný archiv SLA neobsahoval žádné přednastavení. Aktuální SLA přednastavení bylo použito jako " +"záložní." msgid "You cannot load SLA project with a multi-part object on the bed" -msgstr "" -"Nelze načíst SLA projekt s objektem na podložce, který je složený z více " -"částí" +msgstr "Nelze načíst SLA projekt s objektem na podložce, který je složený z více částí" msgid "Please check your object list before preset changing." msgstr "Před změnou nastavení zkontrolujte prosím seznam objektů." @@ -1872,23 +1829,21 @@ msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, verze 3" msgid "" -"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " -"by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and " -"the RepRap community" +"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer by Prusa Research. " +"PrusaSlicer is from Slic3r by Alessandro Ranellucci and the RepRap community" msgstr "" -"Orca Slicer je založen na BambuStudio od Bambulab, které je od PrusaSlicer " -"od Prusa Research. PrusaSlicer je od Slic3r od Alessandra Ranellucciho a " -"komunita RepRap" +"Orca Slicer je založen na BambuStudio od Bambulab, které je od PrusaSlicer od Prusa Research. " +"PrusaSlicer je od Slic3r od Alessandra Ranellucciho a komunita RepRap" msgid "Libraries" msgstr "Knihovny" msgid "" -"This software uses open source components whose copyright and other " -"proprietary rights belong to their respective owners" +"This software uses open source components whose copyright and other proprietary rights belong to their " +"respective owners" msgstr "" -"Tento software používá komponenty s otevřeným zdrojovým kódem, jejichž " -"autorská práva a další vlastnická práva náleží jejich příslušným vlastníkům" +"Tento software používá komponenty s otevřeným zdrojovým kódem, jejichž autorská práva a další vlastnická " +"práva náleží jejich příslušným vlastníkům" #, c-format, boost-format msgid "About %s" @@ -1906,11 +1861,8 @@ msgstr "BambuStudio je původně založeno na PrusaSlicer od PrusaResearch." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "PrusaSlicer je původně založen na Slic3r od Alessandra Ranellucciho." -msgid "" -"Slic3r was created by Alessandro Ranellucci with the help of many other " -"contributors." -msgstr "" -"Slic3r vytvořil Alessandro Ranellucci s pomocí mnoha dalších přispěvatelů." +msgid "Slic3r was created by Alessandro Ranellucci with the help of many other contributors." +msgstr "Slic3r vytvořil Alessandro Ranellucci s pomocí mnoha dalších přispěvatelů." msgid "Version" msgstr "Verze" @@ -1987,13 +1939,11 @@ msgid "Dynamic flow calibration" msgstr "Kalibrace dynamického průtoku" msgid "" -"The nozzle temp and max volumetric speed will affect the calibration " -"results. Please fill in the same values as the actual printing. They can be " -"auto-filled by selecting a filament preset." +"The nozzle temp and max volumetric speed will affect the calibration results. Please fill in the same " +"values as the actual printing. They can be auto-filled by selecting a filament preset." msgstr "" -"Teplota trysky a maximální objemová rychlost ovlivní výsledky kalibrace. " -"Vyplňte prosím stejné hodnoty jako při skutečném tisku. Mohou to být " -"automaticky plněno výběrem předvolby filamentu." +"Teplota trysky a maximální objemová rychlost ovlivní výsledky kalibrace. Vyplňte prosím stejné hodnoty " +"jako při skutečném tisku. Mohou to být automaticky plněno výběrem předvolby filamentu." msgid "Nozzle Diameter" msgstr "Průměr trysky" @@ -2026,13 +1976,11 @@ msgid "Next" msgstr "Další" msgid "" -"Calibration completed. Please find the most uniform extrusion line on your " -"hot bed like the picture below, and fill the value on its left side into the " -"factor K input box." +"Calibration completed. Please find the most uniform extrusion line on your hot bed like the picture " +"below, and fill the value on its left side into the factor K input box." msgstr "" -"Kalibrace dokončena. Najděte nejjednotnější linii extruze na své horké " -"podložce jako na obrázku níže a vyplňte hodnotu na její levé straně do " -"vstupního pole faktoru K." +"Kalibrace dokončena. Najděte nejjednotnější linii extruze na své horké podložce jako na obrázku níže a " +"vyplňte hodnotu na její levé straně do vstupního pole faktoru K." msgid "Save" msgstr "Uložit" @@ -2063,8 +2011,7 @@ msgstr "Krok" msgid "AMS Slots" msgstr "AMS sloty" -msgid "" -"Note: Only the AMS slots loaded with the same material type can be selected." +msgid "Note: Only the AMS slots loaded with the same material type can be selected." msgstr "Poznámka: Lze vybrat pouze sloty AMS se stejným typem materiálu." msgid "Enable AMS" @@ -2083,38 +2030,33 @@ msgid "Cabin humidity" msgstr "Vlhkost v kabině" msgid "" -"Green means that AMS humidity is normal, orange represent humidity is high, " -"red represent humidity is too high.(Hygrometer: lower the better.)" +"Green means that AMS humidity is normal, orange represent humidity is high, red represent humidity is " +"too high.(Hygrometer: lower the better.)" msgstr "" -"Zelená znamená, že vlhkost AMS je normální, oranžová znamená vlhkost vysokou " -"Červená znamená, že vlhkost je příliš vysoká. (Vlhkoměr: čím nižší, tím " -"lepší.)" +"Zelená znamená, že vlhkost AMS je normální, oranžová znamená vlhkost vysokou Červená znamená, že vlhkost " +"je příliš vysoká. (Vlhkoměr: čím nižší, tím lepší.)" msgid "Desiccant status" msgstr "Stav vysoušedla" msgid "" -"A desiccant status lower than two bars indicates that desiccant may be " -"inactive. Please change the desiccant.(The bars: higher the better.)" +"A desiccant status lower than two bars indicates that desiccant may be inactive. Please change the " +"desiccant.(The bars: higher the better.)" msgstr "" -"Stav vysoušedla nižší než dva pruhy znamená, že vysoušedlo může být " -"neaktivní. Vyměňte prosím vysoušedlo. (Čáry: čím vyšší, tím lepší.)" +"Stav vysoušedla nižší než dva pruhy znamená, že vysoušedlo může být neaktivní. Vyměňte prosím " +"vysoušedlo. (Čáry: čím vyšší, tím lepší.)" msgid "" -"Note: When the lid is open or the desiccant pack is changed, it can take " -"hours or a night to absorb the moisture. Low temperatures also slow down the " -"process. During this time, the indicator may not represent the chamber " -"accurately." +"Note: When the lid is open or the desiccant pack is changed, it can take hours or a night to absorb the " +"moisture. Low temperatures also slow down the process. During this time, the indicator may not represent " +"the chamber accurately." msgstr "" -"Poznámka: Když je víko otevřené nebo je vyměněno balení vysoušedla, může to " -"trvat hodiny nebo noc absorbovat vlhkost. Nízké teploty také zpomalují " -"proces. Během této doby indikátor nemusí představovat komoru přesně." +"Poznámka: Když je víko otevřené nebo je vyměněno balení vysoušedla, může to trvat hodiny nebo noc " +"absorbovat vlhkost. Nízké teploty také zpomalují proces. Během této doby indikátor nemusí představovat " +"komoru přesně." -msgid "" -"Config which AMS slot should be used for a filament used in the print job" -msgstr "" -"Nastavit, který slot AMS by měl být použit pro filament použitý v tiskové " -"úloze" +msgid "Config which AMS slot should be used for a filament used in the print job" +msgstr "Nastavit, který slot AMS by měl být použit pro filament použitý v tiskové úloze" msgid "Filament used in this print job" msgstr "V této tiskové úloze použit filament" @@ -2137,26 +2079,21 @@ msgstr "Tisk s filamenty v ams" msgid "Print with filaments mounted on the back of the chassis" msgstr "Tisk s filamenty namontovanými na zadní straně šasi" -msgid "" -"When the current material run out, the printer will continue to print in the " -"following order." -msgstr "" -"Když současný materiál dojde, tiskárna bude pokračovat v tisku v " -"následujícím pořadí." +msgid "When the current material run out, the printer will continue to print in the following order." +msgstr "Když současný materiál dojde, tiskárna bude pokračovat v tisku v následujícím pořadí." msgid "Group" msgstr "Skupina" msgid "" -"There are currently no identical spare consumables available, and automatic " -"replenishment is currently not possible. \n" -"(Currently supporting automatic supply of consumables with the same brand, " -"material type, and color)" +"There are currently no identical spare consumables available, and automatic replenishment is currently " +"not possible. \n" +"(Currently supporting automatic supply of consumables with the same brand, material type, and color)" msgstr "" -"Aktuálně nejsou k dispozici žádné shodné náhradní spotřební materiály a " -"automatické doplnění momentálně není možné. \n" -"(Aktuálně podporuje automatické dodávky spotřebních materiálů se stejnou " -"značkou, typem materiálu a barvou)" +"Aktuálně nejsou k dispozici žádné shodné náhradní spotřební materiály a automatické doplnění momentálně " +"není možné. \n" +"(Aktuálně podporuje automatické dodávky spotřebních materiálů se stejnou značkou, typem materiálu a " +"barvou)" msgid "AMS Settings" msgstr "Nastavení AMS" @@ -2165,65 +2102,61 @@ msgid "Insertion update" msgstr "Aktualizace vložení" msgid "" -"The AMS will automatically read the filament information when inserting a " -"new Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a new Bambu Lab filament. This " +"takes about 20 seconds." msgstr "" -"AMS automaticky přečte informace o filamentu při vložení Nový filament Bambu " -"Lab. To trvá asi 20 sekund." +"AMS automaticky přečte informace o filamentu při vložení Nový filament Bambu Lab. To trvá asi 20 sekund." msgid "" -"Note: if new filament is inserted during printing, the AMS will not " -"automatically read any information until printing is completed." +"Note: if new filament is inserted during printing, the AMS will not automatically read any information " +"until printing is completed." msgstr "" -"Poznámka: Pokud se během tisku vloží nový filament, AMS nebude automaticky " -"číst všechny informace, dokud tisk neskončí." +"Poznámka: Pokud se během tisku vloží nový filament, AMS nebude automaticky číst všechny informace, dokud " +"tisk neskončí." msgid "" -"When inserting a new filament, the AMS will not automatically read its " -"information, leaving it blank for you to enter manually." +"When inserting a new filament, the AMS will not automatically read its information, leaving it blank for " +"you to enter manually." msgstr "" -"Při vkládání nového filamentu AMS automaticky nepřečte jeho informace, " -"ponechte je prázdné, abyste je mohli zadat ručně." +"Při vkládání nového filamentu AMS automaticky nepřečte jeho informace, ponechte je prázdné, abyste je " +"mohli zadat ručně." msgid "Power on update" msgstr "Aktualizovat při spuštění" msgid "" -"The AMS will automatically read the information of inserted filament on " -"start-up. It will take about 1 minute.The reading process will roll filament " -"spools." +"The AMS will automatically read the information of inserted filament on start-up. It will take about 1 " +"minute.The reading process will roll filament spools." msgstr "" -"AMS automaticky přečte informace o vloženém filamentu při spuštění. Bude to " -"trvat asi 1 minutu. Proces čtení bude navíjet cívku filamentu." +"AMS automaticky přečte informace o vloženém filamentu při spuštění. Bude to trvat asi 1 minutu. Proces " +"čtení bude navíjet cívku filamentu." msgid "" -"The AMS will not automatically read information from inserted filament " -"during startup and will continue to use the information recorded before the " -"last shutdown." +"The AMS will not automatically read information from inserted filament during startup and will continue " +"to use the information recorded before the last shutdown." msgstr "" -"AMS nebude automaticky číst informace z vloženého filamentu při spuštění a " -"bude nadále používat informace zaznamenané před posledním vypnutí." +"AMS nebude automaticky číst informace z vloženého filamentu při spuštění a bude nadále používat " +"informace zaznamenané před posledním vypnutí." msgid "Update remaining capacity" msgstr "Aktualizovat zbývající kapacitu" msgid "" -"The AMS will estimate Bambu filament's remaining capacity after the filament " -"info is updated. During printing, remaining capacity will be updated " -"automatically." +"The AMS will estimate Bambu filament's remaining capacity after the filament info is updated. During " +"printing, remaining capacity will be updated automatically." msgstr "" -"AMS odhadne zbývající kapacitu filamentu Bambu po filamentu informace jsou " -"aktualizovány. Během tisku bude aktualizována zbývající kapacita automaticky." +"AMS odhadne zbývající kapacitu filamentu Bambu po filamentu informace jsou aktualizovány. Během tisku " +"bude aktualizována zbývající kapacita automaticky." msgid "AMS filament backup" msgstr "AMS záloha filamentů" msgid "" -"AMS will continue to another spool with the same properties of filament " -"automatically when current filament runs out" +"AMS will continue to another spool with the same properties of filament automatically when current " +"filament runs out" msgstr "" -"AMS bude pokračovat na další cívku se stejnými vlastnostmi filamentu " -"automaticky, když dojde aktuální filament" +"AMS bude pokračovat na další cívku se stejnými vlastnostmi filamentu automaticky, když dojde aktuální " +"filament" msgid "File" msgstr "Soubor" @@ -2232,18 +2165,15 @@ msgid "Calibration" msgstr "Kalibrace" msgid "" -"Failed to download the plug-in. Please check your firewall settings and vpn " -"software, check and retry." +"Failed to download the plug-in. Please check your firewall settings and vpn software, check and retry." msgstr "" -"Stažení pluginu se nezdařilo. Zkontrolujte prosím nastavení brány firewall a " -"vpn software, zkontrolujte a zkuste to znovu." +"Stažení pluginu se nezdařilo. Zkontrolujte prosím nastavení brány firewall a vpn software, zkontrolujte " +"a zkuste to znovu." msgid "" -"Failed to install the plug-in. Please check whether it is blocked or deleted " -"by anti-virus software." +"Failed to install the plug-in. Please check whether it is blocked or deleted by anti-virus software." msgstr "" -"Nepodařilo se nainstalovat plugin. Zkontrolujte, zda není blokován nebo " -"odstraněn antivirovým softwarem." +"Nepodařilo se nainstalovat plugin. Zkontrolujte, zda není blokován nebo odstraněn antivirovým softwarem." msgid "click here to see more info" msgstr "kliknutím sem zobrazíte více informací" @@ -2252,18 +2182,16 @@ msgid "Please home all axes (click " msgstr "Prosím domů všechny osy (klikněte " msgid "" -") to locate the toolhead's position. This prevents device moving beyond the " -"printable boundary and causing equipment wear." +") to locate the toolhead's position. This prevents device moving beyond the printable boundary and " +"causing equipment wear." msgstr "" -"), abyste našli polohu nástrojové hlavy. Tím zabráníte pohybu zařízení za " -"tisknutelné hranice a způsobující opotřebení zařízení." +"), abyste našli polohu nástrojové hlavy. Tím zabráníte pohybu zařízení za tisknutelné hranice a " +"způsobující opotřebení zařízení." msgid "Go Home" msgstr "Jít Domů" -msgid "" -"A error occurred. Maybe memory of system is not enough or it's a bug of the " -"program" +msgid "A error occurred. Maybe memory of system is not enough or it's a bug of the program" msgstr "Došlo k chybě. Možná paměť systému nestačí nebo je to chyba program" msgid "Please save project and restart the program. " @@ -2321,9 +2249,7 @@ msgstr "Kopírování dočasného G-kódu do výstupního G-kódu selhalo" #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" -msgstr "" -"Plánování nahrávání do `%1%`. Viz Okno -> Fronta nahrávaní do tiskového " -"serveru" +msgstr "Plánování nahrávání do `%1%`. Viz Okno -> Fronta nahrávaní do tiskového serveru" msgid "Origin" msgstr "Počátek" @@ -2334,16 +2260,11 @@ msgstr "Průměr" msgid "Size in X and Y of the rectangular plate." msgstr "Rozměr obdélníkové tiskové podložky v ose X a Y." -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." +msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Vzdálenost souřadnice 0,0 G-kódu od předního levého rohu obdélníku." -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." -msgstr "" -"Průměr tiskové podložky. Předpokládaný počátek (0,0) je umístěn uprostřed." +msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." +msgstr "Průměr tiskové podložky. Předpokládaný počátek (0,0) je umístěn uprostřed." msgid "Rectangular" msgstr "Obdélníkový" @@ -2373,8 +2294,7 @@ msgid "Model" msgstr "Model" msgid "Choose an STL file to import bed shape from:" -msgstr "" -"Vyberte STL soubor, ze kterého chcete importovat tvar tiskové podložky:" +msgstr "Vyberte STL soubor, ze kterého chcete importovat tvar tiskové podložky:" msgid "Invalid file format." msgstr "Neplatný formát souboru." @@ -2385,16 +2305,11 @@ msgstr "Chyba! Neplatný model" msgid "The selected file contains no geometry." msgstr "Vybraný soubor neobsahuje geometrii." -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"Vybraný soubor obsahuje několik nespojených ploch. Tato možnost není " -"podporována." +msgid "The selected file contains several disjoint areas. This is not supported." +msgstr "Vybraný soubor obsahuje několik nespojených ploch. Tato možnost není podporována." msgid "Choose a file to import bed texture from (PNG/SVG):" -msgstr "" -"Vyberte soubor, ze kterého chcete importovat texturu pro tiskovou podložku " -"(PNG/SVG):" +msgstr "Vyberte soubor, ze kterého chcete importovat texturu pro tiskovou podložku (PNG/SVG):" msgid "Choose an STL file to import bed model from:" msgstr "Vyberte STL soubor, ze kterého chcete importovat model podložky:" @@ -2412,32 +2327,8 @@ msgstr "" "\n" #, c-format, boost-format -msgid "" -"Recommended nozzle temperature of this filament type is [%d, %d] degree " -"centigrade" -msgstr "" -"Doporučená teplota trysky pro tento typ filamentu je [%d, %d]stupňů Celsia" - -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"Teplota podložky ostatních vrstev je nižší než teplota podložky první vrstvy " -"o více než %d stupňů Celsia.\n" -"To může způsobit, že se modely během tisku uvolní z podložky" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"Teplota podložky je vyšší než teplota vitrifikace tohoto filamentu.\n" -"To může způsobit ucpání trysky a selhání tisku\n" -"Nechte tiskárnu během procesu tisku otevřenou, abyste zajistili cirkulaci " -"vzduchu nebo snížení teploty podložky" +msgid "Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" +msgstr "Doporučená teplota trysky pro tento typ filamentu je [%d, %d]stupňů Celsia" msgid "" "Too small max volumetric speed.\n" @@ -2446,6 +2337,14 @@ msgstr "" "Příliš malá maximální objemová rychlost.\n" "Obnovit na 0,5" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature,it may result in material " +"softening and clogging.The maximum safe temperature for the material is %d" +msgstr "" +"Aktuální teplota komory je vyšší než bezpečná teplota materiálu,může to způsobit změkčení materiálu a " +"jeho ucpaní. Maximální bezpečná teplota pro tento materiál je %d" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2470,15 +2369,13 @@ msgstr "" "Výška první vrstvy bude resetována na 0,2." msgid "" -"This setting is only used for model size tunning with small value in some " -"cases.\n" +"This setting is only used for model size tunning with small value in some cases.\n" "For example, when model size has small error and hard to be assembled.\n" "For large size tuning, please use model scale function.\n" "\n" "The value will be reset to 0." msgstr "" -"Toto nastavení se používá pouze pro ladění velikosti modelu s malou hodnotou " -"v některých případech.\n" +"Toto nastavení se používá pouze pro ladění velikosti modelu s malou hodnotou v některých případech.\n" "Například, když velikost modelu má malou chybu a je obtížné sestavit.\n" "Pro ladění velkých rozměrů použijte funkci měřítka modelu.\n" "\n" @@ -2492,19 +2389,20 @@ msgid "" "The value will be reset to 0." msgstr "" "Hodnota kompenzace sloní nohy je příliš vysoká.\n" -"Pokud se vyskytnou závažné problémy se sloní nohou, zkontrolujte prosím " -"další nastavení.\n" +"Pokud se vyskytnou závažné problémy se sloní nohou, zkontrolujte prosím další nastavení.\n" "Teplota podložky může být například příliš vysoká.\n" "\n" "Hodnota bude resetována na 0." msgid "" -"Spiral mode only works when wall loops is 1, support is disabled, top shell " -"layers is 0, sparse infill density is 0 and timelapse type is traditional." +"Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, sparse infill " +"density is 0 and timelapse type is traditional." msgstr "" -"Spirálový režim funguje pouze tehdy, když je 1 smyčka na stěně, podpěry jsou " -"deaktivovány, horní skořepina vrstvy jsou 0, hustota vnitřní výplně je 0 a " -"typ časosběru je tradiční." +"Spirálový režim funguje pouze tehdy, když je 1 smyčka na stěně, podpěry jsou deaktivovány, horní " +"skořepina vrstvy jsou 0, hustota vnitřní výplně je 0 a typ časosběru je tradiční." + +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr " Ale stroje s I3 strukturou nevytvoří timelapse videa." msgid "" "Change these settings automatically? \n" @@ -2516,14 +2414,12 @@ msgstr "" "Ne - zrušit povolení spirálového režimu" msgid "" -"Prime tower does not work when Adaptive Layer Height or Independent Support " -"Layer Height is on.\n" +"Prime tower does not work when Adaptive Layer Height or Independent Support Layer Height is on.\n" "Which do you want to keep?\n" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" msgstr "" -"Čistící věž nefunguje při adaptivní výšce vrstvy nebo když je zapnutá výška " -"nezávislé podpůrné vrstvy.\n" +"Čistící věž nefunguje při adaptivní výšce vrstvy nebo když je zapnutá výška nezávislé podpůrné vrstvy.\n" "Kterou si chcete ponechat?\n" "ANO - Zachovat čistící věž\n" "NE - Zachovat výšku adaptivní vrstvy a výšku nezávislé podpůrné vrstvy" @@ -2633,6 +2529,36 @@ msgstr "Pozastaveno kvůli poruše teploty trysky" msgid "Paused due to heat bed temperature malfunction" msgstr "Pozastaveno kvůli poruše teploty topné podložky" +msgid "Filament unloading" +msgstr "Vysunutí filamentu" + +msgid "Skip step pause" +msgstr "Přeskočit krok pauza" + +msgid "Filament loading" +msgstr "Zavedení filamentu" + +msgid "Motor noise calibration" +msgstr "Kalibrace zvuku motoru" + +msgid "Paused due to AMS lost" +msgstr "Pozastaveno kvůli ztrátě AMS" + +msgid "Paused due to low speed of the heat break fan" +msgstr "Pozastaveno kvůli nízké rychlosti ventilátoru heat break" + +msgid "Paused due to chamber temperature control error" +msgstr "Pozastaveno kvůli chybě v řízení teploty komory" + +msgid "Cooling chamber" +msgstr "Chlazení komory" + +msgid "Paused by the Gcode inserted by user" +msgstr "Pozastaveno uživatelem vloženým G-kódem" + +msgid "Motor noise showoff" +msgstr "Předvedení zvuku motoru" + msgid "MC" msgstr "MC" @@ -2669,6 +2595,27 @@ msgstr "Ověření se nezdařilo." msgid "Update failed." msgstr "Aktualizace se nezdařila." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds 45℃.In order to avoid extruder " +"clogging,low temperature filament(PLA/PETG/TPU) is not allowed to be loaded." +msgstr "" +"Aktuální teplota komory nebo cílová teplota komory přesahuje 45℃. Aby se předešlo ucpaní extruderu, není " +"povoleno načítání nízkoteplotního filamentu (PLA/PETG/TPU)." + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to avoid extruder clogging,it " +"is not allowed to set the chamber temperature above 45℃." +msgstr "" +"Do extruderu je načten nízkoteplotní filament (PLA/PETG/TPU). Aby se předešlo ucpaní extruderu, není " +"povoleno nastavovat teplotu komory nad 45℃." + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature control will not be activated. " +"And the target chamber temperature will automatically be set to 0℃." +msgstr "" +"Pokud nastavíte teplotu komory pod 40℃, řízení teploty komory se neaktivuje a cílová teplota komory bude " +"automaticky nastavena na 0℃." + msgid "Failed to start printing job" msgstr "Nepodařilo se spustit tiskovou úlohu" @@ -2684,19 +2631,14 @@ msgstr "AMS nepodporuje TPU." msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "AMS nepodporuje Bambu PET-CF/PA6-CF." -msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to " -"dry it before use." -msgstr "" -"Vlhké PVA se stane pružné a může se zaseknout uvnitř AMS, prosím, pečlivě je " -"usušte před použitím." +msgid "Damp PVA will become flexible and get stuck inside AMS,please take care to dry it before use." +msgstr "Vlhké PVA se stane pružné a může se zaseknout uvnitř AMS, prosím, pečlivě je usušte před použitím." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " -"AMS, please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, please use with caution." msgstr "" -"Filamenty CF/GF jsou tvrdé a křehké, snadno se mohou zlomit nebo zaseknout v " -"AMS, používejte je s opatrností." +"Filamenty CF/GF jsou tvrdé a křehké, snadno se mohou zlomit nebo zaseknout v AMS, používejte je s " +"opatrností." msgid "default" msgstr "výchozí" @@ -2775,7 +2717,7 @@ msgid "Layer Time: " msgstr "Čas vrstvy: " msgid "Fan: " -msgstr "Rychlost ventilátoru: " +msgstr "Ventilátor: " msgid "Temperature: " msgstr "Teplota: " @@ -2801,12 +2743,15 @@ msgstr "Čištění" msgid "Total" msgstr "Celkem" -msgid "Total Time Estimation" -msgstr "Celkový odhad času" +msgid "Total Estimation" +msgstr "Celkový odhad" msgid "Total time" msgstr "Celkový čas" +msgid "Total cost" +msgstr "Celková cena" + msgid "up to" msgstr "až do" @@ -2894,9 +2839,6 @@ msgstr "Tiskárna" msgid "Print settings" msgstr "Nastavení tisku" -msgid "Total Estimation" -msgstr "Celkový odhad" - msgid "Time Estimation" msgstr "Časový odhad" @@ -3005,6 +2947,9 @@ msgstr "Povolit více materiálů na stejné podložce" msgid "Avoid extrusion calibration region" msgstr "Vyhněte se oblasti kalibrace extruze" +msgid "Align to Y axis" +msgstr "Zarovnat podle osy Y" + msgid "Add" msgstr "Přidat" @@ -3064,11 +3009,11 @@ msgstr "Velikost:" #, c-format, boost-format msgid "" -"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " -"separate the conflicted objects farther (%s <-> %s)." +"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please separate the conflicted " +"objects farther (%s <-> %s)." msgstr "" -"Byly zjištěny konflikty cest g-kódu na vrstvě %d, z = %.2lf mm. Prosím " -"oddělte konfliktní objekty dále od sebe (%s <-> %s)." +"Byly zjištěny konflikty cest g-kódu na vrstvě %d, z = %.2lf mm. Prosím oddělte konfliktní objekty dále " +"od sebe (%s <-> %s)." msgid "An object is layed over the boundary of plate." msgstr "Objekt je položen přes hranici podložky." @@ -3084,12 +3029,12 @@ msgstr "Viditelný je pouze objekt, který se právě upravuje." msgid "" "An object is laid over the boundary of plate or exceeds the height limit.\n" -"Please solve the problem by moving it totally on or off the plate, and " -"confirming that the height is within the build volume." +"Please solve the problem by moving it totally on or off the plate, and confirming that the height is " +"within the build volume." msgstr "" "Objekt je položen přes hranici podložky nebo překračuje limit výšky.\n" -"Prosím, vyřešte problém tím, že jej úplně přesunete na podložku nebo mimo ní " -"a potvrďte, že výška je v rámci objemu stavby." +"Prosím, vyřešte problém tím, že jej úplně přesunete na podložku nebo mimo ní a potvrďte, že výška je v " +"rámci objemu stavby." msgid "Calibration step selection" msgstr "Výběr kroku kalibrace" @@ -3100,19 +3045,20 @@ msgstr "Micro lidar kalibrace" msgid "Bed leveling" msgstr "Vyrovnání podložky" -msgid "Resonance frequency identification" -msgstr "Identifikace rezonanční frekvence" +msgid "Vibration compensation" +msgstr "Kompenzace vibrací" + +msgid "Motor noise cancellation" +msgstr "Potlačení hluku motoru" msgid "Calibration program" msgstr "Kalibrační program" msgid "" -"The calibration program detects the status of your device automatically to " -"minimize deviation.\n" +"The calibration program detects the status of your device automatically to minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"Kalibrační program automaticky zjistí stav vašeho zařízení, aby " -"minimalizoval odchylky.\n" +"Kalibrační program automaticky zjistí stav vašeho zařízení, aby minimalizoval odchylky.\n" "Udržuje optimální výkon zařízení." msgid "Calibration Flow" @@ -3121,6 +3067,9 @@ msgstr "Kalibrace průtoku" msgid "Start Calibration" msgstr "Spustit kalibraci" +msgid "No step selected" +msgstr "Není vybrán žádný krok" + msgid "Completed" msgstr "Dokončeno" @@ -3197,9 +3146,6 @@ msgstr "Ne" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "bude uzavřen před vytvořením nového modelu. Chcete pokračovat?" -msgid "Upload" -msgstr "Nahrát" - msgid "Slice plate" msgstr "Slicuj Podložku" @@ -3575,17 +3521,10 @@ msgstr "Vyberte profil k načtení:" #, c-format, boost-format msgid "There is %d config imported. (Only non-system and compatible configs)" -msgid_plural "" -"There are %d configs imported. (Only non-system and compatible configs)" -msgstr[0] "" -"Byla importována %d konfigurace. (Pouze ne-systémové a kompatibilní " -"konfigurace)" -msgstr[1] "" -"Bylo importováno %d konfigurací. (Pouze ne-systémové a kompatibilní " -"konfigurace)" -msgstr[2] "" -"Bylo importováno %d konfigurací. (Pouze ne-systémové a kompatibilní " -"konfigurace)" +msgid_plural "There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "Byla importována %d konfigurace. (Pouze ne-systémové a kompatibilní konfigurace)" +msgstr[1] "Bylo importováno %d konfigurací. (Pouze ne-systémové a kompatibilní konfigurace)" +msgstr[2] "Bylo importováno %d konfigurací. (Pouze ne-systémové a kompatibilní konfigurace)" msgid "Import result" msgstr "Importovat výsledek" @@ -3625,15 +3564,13 @@ msgid "Initialize failed (No Camera Device)!" msgstr "Inicializace se nezdařila (žádné kamerové zařízení)!" msgid "Printer is busy downloading, Please wait for the downloading to finish." -msgstr "" -"Tiskárna je zaneprázdněna stahováním, počkejte prosím na dokončení stahování." +msgstr "Tiskárna je zaneprázdněna stahováním, počkejte prosím na dokončení stahování." msgid "Loading..." msgstr "Načítání..." msgid "Initialize failed (Not supported on the current printer version)!" -msgstr "" -"Inicializace se nezdařila (Není podporováno ve stávající verzi tiskárny)!" +msgstr "Inicializace se nezdařila (Není podporováno ve stávající verzi tiskárny)!" msgid "Initialize failed (Not accessible in LAN-only mode)!" msgstr "Inicializace se nezdařila (není přístupné v režimu pouze LAN)!" @@ -3762,13 +3699,10 @@ msgstr "Načítání selhalo [%d]" #, c-format, boost-format msgid "You are going to delete %u file from printer. Are you sure to continue?" -msgid_plural "" -"You are going to delete %u files from printer. Are you sure to continue?" +msgid_plural "You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "Chystáte se smazat %u soubor z tiskárny. Opravdu chcete pokračovat?" -msgstr[1] "" -"Chystáte se smazat %u soubory z tiskárny. Opravdu chcete pokračovat?" -msgstr[2] "" -"Chystáte se smazat %u souborů z tiskárny. Opravdu chcete pokračovat?" +msgstr[1] "Chystáte se smazat %u soubory z tiskárny. Opravdu chcete pokračovat?" +msgstr[2] "Chystáte se smazat %u souborů z tiskárny. Opravdu chcete pokračovat?" msgid "Delete files" msgstr "Smazat soubory" @@ -3790,11 +3724,11 @@ msgid "Failed to parse model infomations." msgstr "Nepodařilo se zpracovat informace o modelu." msgid "" -"The .gcode.3mf file contains no G-code data.Please slice it whthBambu Studio " -"and export a new .gcode.3mf file." +"The .gcode.3mf file contains no G-code data.Please slice it whthBambu Studio and export a new .gcode.3mf " +"file." msgstr "" -"Soubor .gcode.3mf neobsahuje žádná G-kód data. Prosím, slicujte ho pomocí " -"Bambu Studia a exportujte nový soubor .gcode.3mf." +"Soubor .gcode.3mf neobsahuje žádná G-kód data. Prosím, slicujte ho pomocí Bambu Studia a exportujte nový " +"soubor .gcode.3mf." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -3844,22 +3778,22 @@ msgid "Swap Y/Z axes" msgstr "Zaměnit osy Y/Z" msgid "Invert X axis" -msgstr "" +msgstr "Obrátit osu X" msgid "Invert Y axis" -msgstr "" +msgstr "Obrátit osu Y" msgid "Invert Z axis" -msgstr "" +msgstr "Obrátit osu Z" msgid "Invert Yaw axis" -msgstr "" +msgstr "Obrátit osu Otáčení" msgid "Invert Pitch axis" -msgstr "" +msgstr "Obrátit osu Náklonu" msgid "Invert Roll axis" -msgstr "" +msgstr "Obrátit osu Rotace" msgid "Printing Progress" msgstr "Průběh tisku" @@ -3876,12 +3810,18 @@ msgstr "0" msgid "Layer: N/A" msgstr "Vrstva: N/A" -msgid "Immediately score" -msgstr "Okamžitě ohodnotit" - msgid "Clear" msgstr "Vymazat" +msgid "How do you like this printing file?" +msgstr "Jak se vám líbí tento tiskový soubor?" + +msgid "(The model has already been rated. Your rating will overwrite the previous rating.)" +msgstr "(Model již byl ohodnocen. Vaše hodnocení přepíše předchozí hodnocení.)" + +msgid "Rate" +msgstr "Ohodnotit" + msgid "Camera" msgstr "Kamera" @@ -3947,12 +3887,6 @@ msgstr "Ve frontě pro Slicování v cloudu je %s úkolů před vámi." msgid "Layer: %s" msgstr "Vrstva: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Prosím, ohodnoťte svůj oblíbený model z Bambu Market." - -msgid "Score" -msgstr "Hodnocení" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Vrstva: %d/%d" @@ -3970,11 +3904,11 @@ msgid "Please select an AMS slot before calibration" msgstr "Před kalibrací vyberte slot AMS" msgid "" -"Cannot read filament info: the filament is loaded to the tool head,please " -"unload the filament and try again." +"Cannot read filament info: the filament is loaded to the tool head,please unload the filament and try " +"again." msgstr "" -"Nelze přečíst informace o filamentu: filament je vložen do hlavy nástroje, " -"prosím vyjměte filament a zkuste to znovu." +"Nelze přečíst informace o filamentu: filament je vložen do hlavy nástroje, prosím vyjměte filament a " +"zkuste to znovu." msgid "This only takes effect during printing" msgstr "Toto se projeví pouze během tisku" @@ -3994,6 +3928,104 @@ msgstr "Směšné" msgid "Can't start this without SD card." msgstr "Nelze to spustit bez SD karty." +msgid "Rate the Print Profile" +msgstr "Ohodnoťte tiskový profil" + +msgid "Comment" +msgstr "Komentář" + +msgid "Rate this print" +msgstr "Ohodnoťte tento tisk" + +msgid "Add Photo" +msgstr "Přidat fotku" + +msgid "Delete Photo" +msgstr "Smazat fotku" + +msgid "Submit" +msgstr "Odeslat" + +msgid "Please click on the star first." +msgstr "Prosím, nejprve klikněte na hvězdu." + +msgid "InFo" +msgstr "Informace" + +msgid "Get oss config failed." +msgstr "Získání konfigurace OSS se nezdařilo." + +msgid "Upload Pictrues" +msgstr "Nahrát obrázky" + +msgid "Number of images successfully uploaded" +msgstr "Počet úspěšně nahrávaných obrázků" + +msgid " upload failed" +msgstr " nahrávání selhalo" + +msgid " upload config prase failed\n" +msgstr " nahrávání konfigurace se nepodařilo zpracovat\n" + +msgid " No corresponding storage bucket\n" +msgstr " Žádný odpovídající úložný bucket\n" + +msgid " can not be opened\n" +msgstr " nelze otevřít\n" + +msgid "" +"The following issues occurred during the process of uploading images. Do you want to ignore them?\n" +"\n" +msgstr "" +"Během procesu nahrávání obrázků došlo k následujícím problémům. Chcete je ignorovat?\n" +"\n" + +msgid "info" +msgstr "informace" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "Probíhá synchronizace výsledků tisku. Prosím, zkuste to znovu za pár sekund." + +msgid "Upload failed\n" +msgstr "Nahrávání selhalo\n" + +msgid "obtaining instance_id failed\n" +msgstr "získání instance_id selhalo\n" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" +"Váš komentář nemohl být nahrán kvůli několika důvodům. Následuje:\n" +"\n" +" chybový kód: " + +msgid "error message: " +msgstr "chybová zpráva: " + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" +"\n" +"\n" +"Chcete přesměrovat na webovou stránku pro hodnocení?" + +msgid "Some of your images failed to upload. Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "Můžete vybrat až 16 obrázků." + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" +"Je vyžadován alespoň jeden úspěšný tiskový záznam tohoto tiskového profilu \n" +"pro udělení pozitivního hodnocení (4 nebo 5 hvězdiček)." + msgid "Status" msgstr "Stav" @@ -4123,6 +4155,9 @@ msgstr "Varování:" msgid "Export successfully." msgstr "Export úspěšně." +msgid "Model file downloaded." +msgstr "Soubor modelu byl stažen." + msgid "Serious warning:" msgstr "Vážné varování:" @@ -4156,11 +4191,8 @@ msgstr "Vrstvy" msgid "Range" msgstr "Rozsah" -msgid "" -"The application cannot run normally because OpenGL version is lower than " -"2.0.\n" -msgstr "" -"Aplikace nemůže běžet normálně, protože máte nižší verzi OpenGLnež 2.0.\n" +msgid "The application cannot run normally because OpenGL version is lower than 2.0.\n" +msgstr "Aplikace nemůže běžet normálně, protože máte nižší verzi OpenGLnež 2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Prosím aktualizujte ovladač grafické karty." @@ -4197,11 +4229,11 @@ msgid "Enable detection of build plate position" msgstr "Povolit detekci polohy stavební desky" msgid "" -"The localization tag of build plate is detected, and printing is paused if " -"the tag is not in predefined range." +"The localization tag of build plate is detected, and printing is paused if the tag is not in predefined " +"range." msgstr "" -"Je detekována lokalizační značka stavební desky a tisk se pozastaví, pokud " -"značka není v předdefinovaném rozsahu." +"Je detekována lokalizační značka stavební desky a tisk se pozastaví, pokud značka není v předdefinovaném " +"rozsahu." msgid "First Layer Inspection" msgstr "Kontrola první vrstvy" @@ -4209,6 +4241,9 @@ msgstr "Kontrola první vrstvy" msgid "Auto-recovery from step loss" msgstr "Automatické obnovení po ztrátě kroku" +msgid "Allow Prompt Sound" +msgstr "Povolit zvuky upozornění" + msgid "Global" msgstr "Globální" @@ -4285,28 +4320,21 @@ msgstr "Synchronizovat seznam filamentů z AM" msgid "Set filaments to use" msgstr "Nastavit filamenty k použití" -msgid "" -"No AMS filaments. Please select a printer in 'Device' page to load AMS info." -msgstr "" -"Žádné filamenty AMS. Chcete-li načíst informace AMS, vyberte tiskárnu na " -"stránce Zařízení." +msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgstr "Žádné filamenty AMS. Chcete-li načíst informace AMS, vyberte tiskárnu na stránce Zařízení." msgid "Sync filaments with AMS" msgstr "Synchronizovat filamenty s AMS" msgid "" -"Sync filaments with AMS will drop all current selected filament presets and " -"colors. Do you want to continue?" +"Sync filaments with AMS will drop all current selected filament presets and colors. Do you want to " +"continue?" msgstr "" -"Synchronizace filamentů s AMS zruší všechny aktuálně vybrané předvolby " -"filamentů a barvy. Chcete pokračovat?" +"Synchronizace filamentů s AMS zruší všechny aktuálně vybrané předvolby filamentů a barvy. Chcete " +"pokračovat?" -msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" -msgstr "" -"Synchronizace již proběhla, chcete synchronizovat pouze změny nebo znovu " -"synchronizovat Všechno?" +msgid "Already did a synchronization, do you want to sync only changes or resync all?" +msgstr "Synchronizace již proběhla, chcete synchronizovat pouze změny nebo znovu synchronizovat Všechno?" msgid "Sync" msgstr "Synchronizovat" @@ -4315,29 +4343,22 @@ msgid "Resync" msgstr "Znovu synchronizovat" msgid "There are no compatible filaments, and sync is not performed." -msgstr "" -"Neexistují žádná kompatibilní filamenty a synchronizace není provedena." +msgstr "Neexistují žádná kompatibilní filamenty a synchronizace není provedena." msgid "" -"There are some unknown filaments mapped to generic preset. Please update " -"Orca Slicer or restart Orca Slicer to check if there is an update to system " -"presets." +"There are some unknown filaments mapped to generic preset. Please update Orca Slicer or restart Orca " +"Slicer to check if there is an update to system presets." msgstr "" -"Existují některé neznámé filamenty na mapovaná na generickou předvolbu. " -"Aktualizujte prosím Orca Slicer nebo restartujte Orca Slicer a zkontrolujte, " -"zda existuje aktualizace systému předvolby." +"Existují některé neznámé filamenty na mapovaná na generickou předvolbu. Aktualizujte prosím Orca Slicer " +"nebo restartujte Orca Slicer a zkontrolujte, zda existuje aktualizace systému předvolby." #, boost-format msgid "Do you want to save changes to \"%1%\"?" msgstr "Chcete uložit změny do \"%1%\"?" #, c-format, boost-format -msgid "" -"Successfully unmounted. The device %s(%s) can now be safely removed from the " -"computer." -msgstr "" -"Odpojení proběhlo úspěšné. Zařízení %s(%s) lze nyní bezpečně odebrat z " -"počítače." +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Odpojení proběhlo úspěšné. Zařízení %s(%s) lze nyní bezpečně odebrat z počítače." #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." @@ -4350,20 +4371,25 @@ msgid "Restore" msgstr "Obnovit" msgid "" -"The bed temperature exceeds filament's vitrification temperature. Please " -"open the front door of printer before printing to avoid nozzle clog." +"The bed temperature exceeds filament's vitrification temperature. Please open the front door of printer " +"before printing to avoid nozzle clog." msgstr "" -"Teplota podložky překračuje teplotu vitrifikace filamentu. Prosím. Před " -"tiskem otevřete přední dvířka tiskárny, aby nedošlo k ucpání trysky." +"Teplota podložky překračuje teplotu vitrifikace filamentu. Prosím. Před tiskem otevřete přední dvířka " +"tiskárny, aby nedošlo k ucpání trysky." msgid "" -"The nozzle hardness required by the filament is higher than the default " -"nozzle hardness of the printer. Please replace the hardened nozzle or " -"filament, otherwise, the nozzle will be attrited or damaged." +"The nozzle hardness required by the filament is higher than the default nozzle hardness of the printer. " +"Please replace the hardened nozzle or filament, otherwise, the nozzle will be attrited or damaged." msgstr "" -"Tvrdost trysky požadovaná filamentem je vyšší než výchozí tvrdost trysky " -"tiskárny. Vyměňte tvrzenou trysku nebo filament, jinak se tryska opotřebuje " -"nebo poškodí." +"Tvrdost trysky požadovaná filamentem je vyšší než výchozí tvrdost trysky tiskárny. Vyměňte tvrzenou " +"trysku nebo filament, jinak se tryska opotřebuje nebo poškodí." + +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. It is recommended to change " +"to smooth mode." +msgstr "" +"Povolení tradičního časosběrného fotografování může způsobit povrchové nedokonalosti. Doporučuje se " +"přepnout na hladký režim." #, c-format, boost-format msgid "Loading file: %s" @@ -4382,12 +4408,8 @@ msgid "The 3mf is generated by old Orca Slicer, load geometry data only." msgstr "3mf je generován starým Orca Slicerem, načtěte pouze geometrická data." #, c-format, boost-format -msgid "" -"The 3mf's version %s is newer than %s's version %s, Found following keys " -"unrecognized:" -msgstr "" -"Verze 3mf %s je novější než verze %s %s, byly nalezeny následující klíče " -"nerozpoznaný:" +msgid "The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:" +msgstr "Verze 3mf %s je novější než verze %s %s, byly nalezeny následující klíče nerozpoznaný:" msgid "You'd better upgrade your software.\n" msgstr "Měli byste aktualizovat software.\n" @@ -4396,12 +4418,8 @@ msgid "Newer 3mf version" msgstr "Novější verze 3mf" #, c-format, boost-format -msgid "" -"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " -"software." -msgstr "" -"Verze %s zařízení 3mf je novější než verze %s %s, navrhněte upgrade vašeho " -"software." +msgid "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software." +msgstr "Verze %s zařízení 3mf je novější než verze %s %s, navrhněte upgrade vašeho software." msgid "Invalid values found in the 3mf:" msgstr "V 3mf byly nalezeny neplatné hodnoty:" @@ -4423,8 +4441,7 @@ msgstr "Kvůli nepodporovanému kódování textu se mohou objevit nesmyslné zn #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." -msgstr "" -"Nepodařilo se načíst soubor \"%1%\" . Byla nalezena neplatná konfigurace." +msgstr "Nepodařilo se načíst soubor \"%1%\" . Byla nalezena neplatná konfigurace." msgid "Objects with zero volume removed" msgstr "Objekty s nulovým objemem odstraněny" @@ -4465,11 +4482,9 @@ msgid "The file does not contain any geometry data." msgstr "Soubor neobsahuje žádná geometrická data." msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" +"Your object appears to be too large, Do you want to scale it down to fit the heat bed automatically?" msgstr "" -"Váš objekt se zdá být příliš velký, chcete jej zmenšit, aby se vešel na " -"vyhřívanou podložku automaticky?" +"Váš objekt se zdá být příliš velký, chcete jej zmenšit, aby se vešel na vyhřívanou podložku automaticky?" msgid "Object too large" msgstr "Objekt je příliš velký" @@ -4532,11 +4547,8 @@ msgstr "Podložka na slicování %d" msgid "Please resolve the slicing errors and publish again." msgstr "Vyřešte prosím chyby slicování a publikujte znovu." -msgid "" -"Network Plug-in is not detected. Network related features are unavailable." -msgstr "" -"Nebyl detekován síťový modul plug-in. Funkce související se sítí jsou " -"nedostupné." +msgid "Network Plug-in is not detected. Network related features are unavailable." +msgstr "Nebyl detekován síťový modul plug-in. Funkce související se sítí jsou nedostupné." msgid "" "Preview only mode:\n" @@ -4556,12 +4568,10 @@ msgstr "Načíst projekt" msgid "" "Failed to save the project.\n" -"Please check whether the folder exists online or if other programs open the " -"project file." +"Please check whether the folder exists online or if other programs open the project file." msgstr "" "Projekt se nepodařilo uložit.\n" -"Zkontrolujte, zda složka existuje online nebo zda jiné programy otevírají " -"soubor projektu." +"Zkontrolujte, zda složka existuje online nebo zda jiné programy otevírají soubor projektu." msgid "Save project" msgstr "Uložit projekt" @@ -4579,6 +4589,9 @@ msgstr "stahuji projekt ..." msgid "Project downloaded %d%%" msgstr "Projekt stažen %d%%" +msgid "Importing to Bambu Studio failed. Please download the file and manually import it." +msgstr "Import do Bambu Studia selhal. Stáhněte soubor a proveďte jeho ruční import." + msgid "The selected file" msgstr "Vybraný soubor" @@ -4637,22 +4650,14 @@ msgid "Save Sliced file as:" msgstr "Uložit Slicované soubor jako:" #, c-format, boost-format -msgid "" -"The file %s has been sent to the printer's storage space and can be viewed " -"on the printer." -msgstr "" -"Soubor %s byl odeslán do úložného prostoru tiskárny a lze jej zobrazit na " -"tiskárně." +msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." +msgstr "Soubor %s byl odeslán do úložného prostoru tiskárny a lze jej zobrazit na tiskárně." -msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be exported." -msgstr "" -"Nelze provést logickou operaci nad mashí modelů. Budou exportovány pouze " -"kladné části." +msgid "Unable to perform boolean operation on model meshes. Only positive parts will be exported." +msgstr "Nelze provést logickou operaci nad mashí modelů. Budou exportovány pouze kladné části." msgid "Is the printer ready? Is the print sheet in place, empty and clean?" -msgstr "" +msgstr "Je tiskarna připravená k tisku? Je podložka prázdná a čistá?" msgid "Upload and Print" msgstr "Nahrát a Tisknout" @@ -4662,8 +4667,7 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Tisk podle objektu: \n" -"Doporučujeme použít automatické uspořádání, aby se předešlo kolizím při " -"tisku." +"Doporučujeme použít automatické uspořádání, aby se předešlo kolizím při tisku." msgid "Send G-code" msgstr "Odeslat G-kód" @@ -4720,21 +4724,19 @@ msgid "Tips:" msgstr "Tipy:" msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model " -"on Orca Slicer(windows) or CAD softwares." +"\"Fix Model\" feature is currently only on Windows. Please repair the model on Orca Slicer(windows) or " +"CAD softwares." msgstr "" -"Funkce \"Opravit model\" je momentálně pouze v systému Windows. Opravte " -"prosím model na Orca Slicer (windows) nebo CAD software." +"Funkce \"Opravit model\" je momentálně pouze v systému Windows. Opravte prosím model na Orca Slicer " +"(windows) nebo CAD software." #, c-format, boost-format msgid "" -"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature " -"to non zero." +"Plate% d: %s is not suggested to be used to print filament %s(%s). If you still want to do this " +"printing, please set this filament's bed temperature to non zero." msgstr "" -"Plate% d: %s se nedoporučuje používat k tisku filamentu %s(%s). Pokud Přesto " -"chcete tento tisk provést, nastavte prosím teplotu podložky tohoto filamentu " -"ne na nulovou." +"Plate% d: %s se nedoporučuje používat k tisku filamentu %s(%s). Pokud Přesto chcete tento tisk provést, " +"nastavte prosím teplotu podložky tohoto filamentu ne na nulovou." msgid "Switching the language requires application restart.\n" msgstr "Přepínání jazyků vyžaduje restartování aplikace.\n" @@ -4788,7 +4790,7 @@ msgid "Login Region" msgstr "Región přihlášení" msgid "Stealth Mode" -msgstr "Tichý Režim" +msgstr "Tajný Režim" msgid "Metric" msgstr "Metrický" @@ -4802,9 +4804,7 @@ msgstr "Jednotky" msgid "Zoom to mouse position" msgstr "Přiblížit na pozici myši" -msgid "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the " -"2D window center." +msgid "Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center." msgstr "Přiblížit se ke kurzoru myši ve 3D zobrazení, na místo středu 2D okna." msgid "Show \"Tip of the day\" notification after start" @@ -4823,8 +4823,7 @@ msgid "Presets" msgstr "Předvolby" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "" -"Automatická synchronizace uživatelských předvoleb (Tiskárna/Filament/Proces)" +msgstr "Automatická synchronizace uživatelských předvoleb (Tiskárna/Filament/Proces)" msgid "User Sync" msgstr "Synchronizace uživatelů" @@ -4845,25 +4844,19 @@ msgid "Associate .3mf files to OrcaSlicer" msgstr "Přidružit soubory .3mf k OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" -msgstr "" -"Pokud je povoleno, nastaví OrcaSlicer jako výchozí aplikaci pro otevírání " -"souborů .3mf" +msgstr "Pokud je povoleno, nastaví OrcaSlicer jako výchozí aplikaci pro otevírání souborů .3mf" msgid "Associate .stl files to OrcaSlicer" msgstr "Přidružit .stl soubory k Orca Slicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" -msgstr "" -"Pokud je povoleno, nastaví OrcaSlicer jako výchozí aplikaci pro otevírání " -"souborů .stl" +msgstr "Pokud je povoleno, nastaví OrcaSlicer jako výchozí aplikaci pro otevírání souborů .stl" msgid "Associate .step/.stp files to OrcaSlicer" msgstr "Přidružit soubory .step/.stp k OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" -msgstr "" -"Pokud je povoleno, nastaví OrcaSlicer jako výchozí aplikaci pro otevírání " -"souborů .step" +msgstr "Pokud je povoleno, nastaví OrcaSlicer jako výchozí aplikaci pro otevírání souborů .step" msgid "Online Models" msgstr "Online modely" @@ -4883,10 +4876,8 @@ msgstr "Vymazat moje volby pro neuložené projekty." msgid "Auto-Backup" msgstr "Automatické zálohování" -msgid "" -"Backup your project periodically for restoring from the occasional crash." -msgstr "" -"Zálohujte svůj projekt pravidelně pro obnovu při případném pádu programu." +msgid "Backup your project periodically for restoring from the occasional crash." +msgstr "Zálohujte svůj projekt pravidelně pro obnovu při případném pádu programu." msgid "every" msgstr "každých" @@ -4966,9 +4957,6 @@ msgstr "chyba" msgid "warning" msgstr "varování" -msgid "info" -msgstr "informace" - msgid "debug" msgstr "ladit" @@ -5138,8 +5126,7 @@ msgstr "Předvolba \" %1% \" již existuje." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "" -"Předvolba \"%1%\" již existuje a není kompatibilní s aktuální tiskárnou." +msgstr "Předvolba \"%1%\" již existuje a není kompatibilní s aktuální tiskárnou." msgid "Please note that saving action will replace this preset" msgstr "Upozorňujeme, že akce uložení nahradí toto přednastavení" @@ -5219,11 +5206,17 @@ msgstr "Bambu Cool Podložka" msgid "PLA Plate" msgstr "PLA Podložka" -msgid "Bamabu Engineering Plate" -msgstr "Bamabu Engineering Podložka" +msgid "Bambu Engineering Plate" +msgstr "Bambu Engineering Podložka" -msgid "Bamabu High Temperature Plate" -msgstr "Bambu vysoká teplota Podlozky" +msgid "Bambu Smooth PEI Plate" +msgstr "Bambu Smooth PEI Podložka" + +msgid "High temperature Plate" +msgstr "High temperature Podložka" + +msgid "Bambu Textured PEI Plate" +msgstr "Bambu Textured PEI Podložka" msgid "Send print job to" msgstr "Odeslat tiskovou úlohu na" @@ -5237,8 +5230,8 @@ msgstr "Vyrovnání podložky" msgid "Flow Dynamics Calibration" msgstr "Kalibrace Dynamiky Průtoku" -msgid "Can't connect to the printer" -msgstr "Nelze se připojit k tiskárně" +msgid "Click here if you can't connect to the printer" +msgstr "Klikněte sem, pokud se nemůžete připojit k tiskárně" msgid "send completed" msgstr "odeslat dokončeno" @@ -5267,8 +5260,7 @@ msgstr "Vypršel časový limit synchronizace informací o zařízení" msgid "Cannot send the print job when the printer is updating firmware" msgstr "Nelze odeslat tiskovou úlohu, když tiskárna aktualizuje firmware" -msgid "" -"The printer is executing instructions. Please restart printing after it ends" +msgid "The printer is executing instructions. Please restart printing after it ends" msgstr "Tiskárna provádí pokyny. Po dokončení restartujte tisk" msgid "The printer is busy on other print job" @@ -5276,70 +5268,58 @@ msgstr "Tiskárna je zaneprázdněna jinou tiskovou úlohou" #, c-format, boost-format msgid "" -"Filament %s exceeds the number of AMS slots. Please update the printer " -"firmware to support AMS slot assignment." +"Filament %s exceeds the number of AMS slots. Please update the printer firmware to support AMS slot " +"assignment." msgstr "" -"Filament %s překračuje počet AMS slotů. Aktualizujte prosím tiskárnu " -"firmware pro podporu přiřazení slotu AMS." +"Filament %s překračuje počet AMS slotů. Aktualizujte prosím tiskárnu firmware pro podporu přiřazení " +"slotu AMS." msgid "" -"Filament exceeds the number of AMS slots. Please update the printer firmware " -"to support AMS slot assignment." +"Filament exceeds the number of AMS slots. Please update the printer firmware to support AMS slot " +"assignment." msgstr "" -"Filament překračuje počet slotů AMS. Aktualizujte prosím firmware tiskárny " -"pro podporu přiřazení slotů AMS." +"Filament překračuje počet slotů AMS. Aktualizujte prosím firmware tiskárny pro podporu přiřazení slotů " +"AMS." msgid "" -"Filaments to AMS slots mappings have been established. You can click a " -"filament above to change its mapping AMS slot" +"Filaments to AMS slots mappings have been established. You can click a filament above to change its " +"mapping AMS slot" msgstr "" -"Mapování filamentů na sloty AMS byla vytvořena. Můžete kliknout na Filament " -"nahoře pro změnu jeho mapovacího slotu AMS" +"Mapování filamentů na sloty AMS byla vytvořena. Můžete kliknout na Filament nahoře pro změnu jeho " +"mapovacího slotu AMS" -msgid "" -"Please click each filament above to specify its mapping AMS slot before " -"sending the print job" -msgstr "" -"Kliknutím na každý filament výše určete jeho mapovací slot AMS před odeslání " -"tiskové úlohy" +msgid "Please click each filament above to specify its mapping AMS slot before sending the print job" +msgstr "Kliknutím na každý filament výše určete jeho mapovací slot AMS před odeslání tiskové úlohy" #, c-format, boost-format msgid "" -"Filament %s does not match the filament in AMS slot %s. Please update the " -"printer firmware to support AMS slot assignment." +"Filament %s does not match the filament in AMS slot %s. Please update the printer firmware to support " +"AMS slot assignment." msgstr "" -"Filament %s neodpovídá filamentu ve slotu AMS %s. Aktualizujte prosím " -"firmware tiskárny pro podporu přiřazení slotu AMS." +"Filament %s neodpovídá filamentu ve slotu AMS %s. Aktualizujte prosím firmware tiskárny pro podporu " +"přiřazení slotu AMS." msgid "" -"Filament does not match the filament in AMS slot. Please update the printer " -"firmware to support AMS slot assignment." +"Filament does not match the filament in AMS slot. Please update the printer firmware to support AMS slot " +"assignment." msgstr "" -"Filament se neshoduje s filamentem ve slotu AMS. Aktualizujte prosím " -"tiskárnu firmware pro podporu přiřazení slotu AMS." +"Filament se neshoduje s filamentem ve slotu AMS. Aktualizujte prosím tiskárnu firmware pro podporu " +"přiřazení slotu AMS." -msgid "" -"The printer firmware only supports sequential mapping of filament => AMS " -"slot." -msgstr "" -"Firmware tiskárny podporuje pouze sekvenční mapování filamentu => AMS slot." +msgid "The printer firmware only supports sequential mapping of filament => AMS slot." +msgstr "Firmware tiskárny podporuje pouze sekvenční mapování filamentu => AMS slot." msgid "An SD card needs to be inserted before printing." msgstr "Před tiskem je třeba vložit SD kartu." msgid "The selected printer is incompatible with the chosen printer presets." -msgstr "" -"Vybraná tiskárna není kompatibilní s vybranými přednastaveními tiskárny." +msgstr "Vybraná tiskárna není kompatibilní s vybranými přednastaveními tiskárny." msgid "An SD card needs to be inserted to record timelapse." msgstr "Pro záznam časosběru je třeba vložit SD kartu." -msgid "" -"Cannot send the print job to a printer whose firmware is required to get " -"updated." -msgstr "" -"Nelze odeslat tiskovou úlohu na tiskárnu, jejíž firmware je vyžadován k " -"získání aktualizováno." +msgid "Cannot send the print job to a printer whose firmware is required to get updated." +msgstr "Nelze odeslat tiskovou úlohu na tiskárnu, jejíž firmware je vyžadován k získání aktualizováno." msgid "Cannot send the print job for empty plate" msgstr "Nelze odeslat tiskovou úlohu pro prázdnou podložku" @@ -5347,6 +5327,12 @@ msgstr "Nelze odeslat tiskovou úlohu pro prázdnou podložku" msgid "This printer does not support printing all plates" msgstr "Tato tiskárna nepodporuje tisk všech podložek" +msgid "When enable spiral vase mode, machines with I3 structure will not generate timelapse videos." +msgstr "Při povolení režimu spirálové vázy stroje s I3 strukturou nevytvoří časosběrná videa." + +msgid "When print by object, machines with I3 structure will not generate timelapse videos." +msgstr "Při tisku podle objektu stroje s I3 strukturou nevytvoří časosběrná videa." + msgid "Errors" msgstr "Chyby" @@ -5354,33 +5340,27 @@ msgid "Please check the following:" msgstr "Zkontrolujte prosím následující:" msgid "" -"The printer type selected when generating G-Code is not consistent with the " -"currently selected printer. It is recommended that you use the same printer " -"type for slicing." +"The printer type selected when generating G-Code is not consistent with the currently selected printer. " +"It is recommended that you use the same printer type for slicing." msgstr "" -"Vybraný typ tiskárny při generování G-kódu není shodný s aktuálně vybranou " -"tiskárnou. Doporučuje se použít stejný typ tiskárny pro slicování." +"Vybraný typ tiskárny při generování G-kódu není shodný s aktuálně vybranou tiskárnou. Doporučuje se " +"použít stejný typ tiskárny pro slicování." #, c-format, boost-format msgid "%s is not supported by AMS." msgstr "%s není systémem AMS podporován." msgid "" -"There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to " -"start printing." +"There are some unknown filaments in the AMS mappings. Please check whether they are the required " +"filaments. If they are okay, press \"Confirm\" to start printing." msgstr "" -"V mapování AMS jsou nějaké neznámé filamenty. Zkontrolujte prosím, zda jsou " -"to požadované filamenty. Pokud jsou v pořádku, stiskněte \"Potvrdit\" pro " -"zahájení tisku." +"V mapování AMS jsou nějaké neznámé filamenty. Zkontrolujte prosím, zda jsou to požadované filamenty. " +"Pokud jsou v pořádku, stiskněte \"Potvrdit\" pro zahájení tisku." -msgid "" -"Please click the confirm button if you still want to proceed with printing." -msgstr "" -"Pokud stále chcete pokračovat v tisku, klikněte prosím na tlačítko Potvrdit." +msgid "Please click the confirm button if you still want to proceed with printing." +msgstr "Pokud stále chcete pokračovat v tisku, klikněte prosím na tlačítko Potvrdit." -msgid "" -"Connecting to the printer. Unable to cancel during the connection process." +msgid "Connecting to the printer. Unable to cancel during the connection process." msgstr "Připojování k tiskárně. Nelze zrušit během procesu připojování." msgid "Preparing print job" @@ -5392,12 +5372,9 @@ msgstr "Abnormální data tiskového souboru. Prosím znovu slicovat" msgid "The name length exceeds the limit." msgstr "Délka názvu překračuje limit." -msgid "" -"Caution to use! Flow calibration on Textured PEI Plate may fail due to the " -"scattered surface." +msgid "Caution to use! Flow calibration on Textured PEI Plate may fail due to the scattered surface." msgstr "" -"Pozor při použití! Kalibrace průtoku na Texturované PEI podložce může selhat " -"kvůli rozptýlenému povrchu." +"Pozor při použití! Kalibrace průtoku na Texturované PEI podložce může selhat kvůli rozptýlenému povrchu." msgid "Automatic flow calibration using Micro Lidar" msgstr "Automatická kalibrace průtoku pomocí Mikro Lidar" @@ -5463,18 +5440,16 @@ msgid "Terms and Conditions" msgstr "Obchodní podmínky" msgid "" -"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " -"device, please read the termsand conditions.By clicking to agree to use your " -"Bambu Lab device, you agree to abide by the Privacy Policyand Terms of " -"Use(collectively, the \"Terms\"). If you do not comply with or agree to the " -"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." +"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab device, please read the termsand " +"conditions.By clicking to agree to use your Bambu Lab device, you agree to abide by the Privacy " +"Policyand Terms of Use(collectively, the \"Terms\"). If you do not comply with or agree to the Bambu Lab " +"Privacy Policy, please do not use Bambu Lab equipment and services." msgstr "" -"Děkujeme za zakoupení zařízení Bambu Lab. Před použitím svého zařízení Bambu " -"Lab si prosím přečtěte všeobecné obchodní podmínky. Kliknutím na souhlas s " -"používáním zařízení Bambu Lab souhlasíte s dodržováním zásad ochrany " -"osobních údajů a podmínek používání (celkem \"Podmínky\"). Pokud " -"nesouhlasíte nebo nepřijímáte zásady ochrany osobních údajů Bambu Lab, " -"prosím nevyužívejte zařízení a služby Bambu Lab." +"Děkujeme za zakoupení zařízení Bambu Lab. Před použitím svého zařízení Bambu Lab si prosím přečtěte " +"všeobecné obchodní podmínky. Kliknutím na souhlas s používáním zařízení Bambu Lab souhlasíte s " +"dodržováním zásad ochrany osobních údajů a podmínek používání (celkem \"Podmínky\"). Pokud nesouhlasíte " +"nebo nepřijímáte zásady ochrany osobních údajů Bambu Lab, prosím nevyužívejte zařízení a služby Bambu " +"Lab." msgid "and" msgstr "a" @@ -5490,29 +5465,23 @@ msgstr "Prohlášení o programu zlepšování uživatelské zkušenosti" #, c-format, boost-format msgid "" -"In the 3D Printing community, we learn from each other's successes and " -"failures to adjust our own slicing parameters and settings. %s follows the " -"same principle and uses machine learning to improve its performance from the " -"successes and failures of the vast number of prints by our users. We are " -"training %s to be smarter by feeding them the real-world data. If you are " -"willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will " -"not collect any Personal Data by which an individual can be identified " -"directly or indirectly, including without limitation names, addresses, " -"payment information, or phone numbers. By enabling this service, you agree " -"to these terms and the statement about Privacy Policy." +"In the 3D Printing community, we learn from each other's successes and failures to adjust our own " +"slicing parameters and settings. %s follows the same principle and uses machine learning to improve its " +"performance from the successes and failures of the vast number of prints by our users. We are training " +"%s to be smarter by feeding them the real-world data. If you are willing, this service will access " +"information from your error logs and usage logs, which may include information described in Privacy " +"Policy. We will not collect any Personal Data by which an individual can be identified directly or " +"indirectly, including without limitation names, addresses, payment information, or phone numbers. By " +"enabling this service, you agree to these terms and the statement about Privacy Policy." msgstr "" -"V komunitě 3D tisku se učíme z úspěchů a neúspěchů ostatních, abychom mohli " -"upravit naše vlastní parametry a nastavení pro slicování. %s následuje " -"tentýž princip a pomocí strojového učení se snaží zlepšit svůj výkon na " -"základě úspěchů a neúspěchů mnoha tisků našich uživatelů. Trénujeme %s, aby " -"byl chytřejší, pomocí reálných dat z reálného světa. Pokud s tím souhlasíte, " -"tento servis bude mít přístup k informacím z chybových a uživatelských " -"protokolů, což může zahrnovat informace popsané v Zásadách ochrany osobních " -"údajů. Nebudeme sbírat žádná osobní data, pomocí kterých by bylo možné " -"identifikovat jednotlivce přímo nebo nepřímo, včetně jmen, adres, platebních " -"informací nebo telefonních čísel. Aktivací tohoto servisu souhlasíte s " -"těmito podmínkami a prohlášením o Zásadách ochrany osobních údajů." +"V komunitě 3D tisku se učíme z úspěchů a neúspěchů ostatních, abychom mohli upravit naše vlastní " +"parametry a nastavení pro slicování. %s následuje tentýž princip a pomocí strojového učení se snaží " +"zlepšit svůj výkon na základě úspěchů a neúspěchů mnoha tisků našich uživatelů. Trénujeme %s, aby byl " +"chytřejší, pomocí reálných dat z reálného světa. Pokud s tím souhlasíte, tento servis bude mít přístup k " +"informacím z chybových a uživatelských protokolů, což může zahrnovat informace popsané v Zásadách " +"ochrany osobních údajů. Nebudeme sbírat žádná osobní data, pomocí kterých by bylo možné identifikovat " +"jednotlivce přímo nebo nepřímo, včetně jmen, adres, platebních informací nebo telefonních čísel. " +"Aktivací tohoto servisu souhlasíte s těmito podmínkami a prohlášením o Zásadách ochrany osobních údajů." msgid "Statement on User Experience Improvement Plan" msgstr "Prohlášení o plánu zlepšení uživatelské zkušenosti" @@ -5550,28 +5519,26 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Kliknutím obnovíte všechna nastavení na poslední uloženou předvolbu." msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the " -"model without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timeplase. There may be flaws on the model without prime tower. Are " +"you sure you want to disable prime tower?" msgstr "" -"Pro hladký průběh časové roviny je vyžadována čistící věž. Mohou být chyby " -"na model bez čistící věže. Opravdu chcete hlavní věž deaktivovat?" +"Pro hladký průběh časové roviny je vyžadována čistící věž. Mohou být chyby na model bez čistící věže. " +"Opravdu chcete hlavní věž deaktivovat?" msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the " -"model without prime tower. Do you want to enable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the model without prime tower. Do " +"you want to enable prime tower?" msgstr "" -"Pro hladký časosběr je vyžadována čistící věž. Na model bez hlavní věže. " -"Chcete aktivovat čistící věž?" +"Pro hladký časosběr je vyžadována čistící věž. Na model bez hlavní věže. Chcete aktivovat čistící věž?" msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller " -"support volume but weaker strength.\n" +"We have added an experimental style \"Tree Slim\" that features smaller support volume but weaker " +"strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." msgstr "" -"Přidali jsme experimentální styl \" Tree Slim \" , který obsahuje menší " -"podporovat objem, ale slabší sílu.\n" -"Doporučujeme jej používat s: 0 vrstvami rozhraní, 0 horní vzdáleností, 2 " -"stěnami." +"Přidali jsme experimentální styl \" Tree Slim \" , který obsahuje menší podporovat objem, ale slabší " +"sílu.\n" +"Doporučujeme jej používat s: 0 vrstvami rozhraní, 0 horní vzdáleností, 2 stěnami." msgid "" "Change these settings automatically? \n" @@ -5583,35 +5550,26 @@ msgstr "" "Ne - tato nastavení za mě neměňte" msgid "" -"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or " -"using support materials on interface." +"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following settings: at least 2 " +"interface layers, at least 0.1mm top z distance or using support materials on interface." msgstr "" -"Pro styly \"Tree Strong\" a \"Tree Hybrid\" doporučujeme následující " -"nastavení: alespoň 2 vrstvy rozhraní, alespoň 0,1 mm horní z vzdálenost nebo " -"používání podpůrných materiálů na rozhraní." +"Pro styly \"Tree Strong\" a \"Tree Hybrid\" doporučujeme následující nastavení: alespoň 2 vrstvy " +"rozhraní, alespoň 0,1 mm horní z vzdálenost nebo používání podpůrných materiálů na rozhraní." msgid "" -"When using support material for the support interface, We recommend the " -"following settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable " -"independent support layer height" +"When using support material for the support interface, We recommend the following settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable independent support layer height" msgstr "" -"Při použití podpůrného materiálu pro kontaktní vrstvu podpěr doporučujeme " -"následující nastavení:\n" -"0 horní z vzdálenost, 0 rozestup rozhraní, koncentrický vzor a vypnutí " -"nezávislé výšky podpůrné vrstvy" +"Při použití podpůrného materiálu pro kontaktní vrstvu podpěr doporučujeme následující nastavení:\n" +"0 horní z vzdálenost, 0 rozestup rozhraní, koncentrický vzor a vypnutí nezávislé výšky podpůrné vrstvy" 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\"." +"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 "" -"Při nahrávání časosběru bez nástrojové hlavy se doporučuje přidat " -"\"Timelapse Wipe Tower\" \n" -"klikněte pravým tlačítkem na prázdnou pozici stavební desky a vyberte " -"\"Přidat primitivní\" -> \"Timelapse Wipe Tower\" ." +"Při nahrávání časosběru bez nástrojové hlavy se doporučuje přidat \"Timelapse Wipe Tower\" \n" +"klikněte pravým tlačítkem na prázdnou pozici stavební desky a vyberte \"Přidat primitivní\" -> " +"\"Timelapse Wipe Tower\" ." msgid "Line width" msgstr "Šířka Extruze" @@ -5641,13 +5599,11 @@ msgid "Overhang speed" msgstr "Rychlost převisů" msgid "" -"This is the speed for various overhang degrees. Overhang degrees are " -"expressed as a percentage of line width. 0 speed means no slowing down for " -"the overhang degree range and wall speed is used" +"This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line " +"width. 0 speed means no slowing down for the overhang degree range and wall speed is used" msgstr "" -"Toto je rychlost pro různé stupně převisů. Stupně převisů jsou vyjádřeny " -"jako procento šířky extruze. 0 rychlost znamená žádné zpomalení pro používá " -"s rozsahy stupňů převisů a rychlost stěny" +"Toto je rychlost pro různé stupně převisů. Stupně převisů jsou vyjádřeny jako procento šířky extruze. 0 " +"rychlost znamená žádné zpomalení pro používá s rozsahy stupňů převisů a rychlost stěny" msgid "Bridge" msgstr "Most" @@ -5670,6 +5626,9 @@ msgstr "Raft" msgid "Support filament" msgstr "Filament na podpěry" +msgid "Tree supports" +msgstr "Stromové podpěry" + msgid "Prime tower" msgstr "Čistící věž" @@ -5683,7 +5642,7 @@ msgid "Post-processing Scripts" msgstr "Post-processing Scripts" msgid "Notes" -msgstr "" +msgstr "Poznámky" msgid "Frequent" msgstr "Časté" @@ -5691,20 +5650,16 @@ msgstr "Časté" #, c-format, boost-format msgid "" "Following line %s contains reserved keywords.\n" -"Please remove it, or will beat G-code visualization and printing time " -"estimation." +"Please remove it, or will beat G-code visualization and printing time estimation." msgid_plural "" "Following lines %s contain reserved keywords.\n" -"Please remove them, or will beat G-code visualization and printing time " -"estimation." +"Please remove them, or will beat G-code visualization and printing time estimation." msgstr[0] "" "Následující řádek %s obsahuje vyhrazená klíčová slova.\n" -"Prosím, odstraňte ho, jinak to může ovlivnit vizualizaci G-kódu a odhad času " -"tisku." +"Prosím, odstraňte ho, jinak to může ovlivnit vizualizaci G-kódu a odhad času tisku." msgstr[1] "" "Následující řádky %s obsahují vyhrazená klíčová slova.\n" -"Prosím, odstraňte je, jinak to může ovlivnit vizualizaci G-kódu a odhad času " -"tisku." +"Prosím, odstraňte je, jinak to může ovlivnit vizualizaci G-kódu a odhad času tisku." msgstr[2] "" msgid "Reserved keywords found" @@ -5723,11 +5678,7 @@ msgid "Recommended nozzle temperature" msgstr "Doporučená teplota trysky" msgid "Recommended nozzle temperature range of this filament. 0 means no set" -msgstr "" -"Doporučený rozsah teploty trysky tohoto filamentu. 0 znamená nenastaveno" - -msgid "Recommended temperature range" -msgstr "Doporučený teplotní rozsah" +msgstr "Doporučený rozsah teploty trysky tohoto filamentu. 0 znamená nenastaveno" msgid "Print temperature" msgstr "Teplota tisku" @@ -5742,41 +5693,41 @@ msgid "Cool plate" msgstr "Cool podložka" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on " +"the Cool Plate" msgstr "" -"Toto je teplota podložky, když je Cool podložka. Hodnota 0 znamená, že " -"filament nepodporuje tisk na Cool Podložku" +"Toto je teplota podložky, když je Cool podložka. Hodnota 0 znamená, že filament nepodporuje tisk na Cool " +"Podložku" msgid "Engineering plate" msgstr "Engineering podložka" msgid "" -"Bed temperature when engineering plate is installed. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature when engineering plate is installed. Value 0 means the filament does not support to " +"print on the Engineering Plate" msgstr "" -"Teplota podložky při instalaci Engineering podložky. Hodnota 0 znamená " -"filament nepodporuje tisk na Engineering Podložku" +"Teplota podložky při instalaci Engineering podložky. Hodnota 0 znamená filament nepodporuje tisk na " +"Engineering Podložku" -msgid "High Temp Plate" -msgstr "High Temp Podložka" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "Smooth PEI Podložka / High Temp Podložka" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. Value 0 means the filament " +"does not support to print on the Smooth PEI Plate/High Temp Plate" msgstr "" -"Toto je teplota podložky, když je instalována konstrukční podložka. Hodnota " -"0 znamená, že filament nepodporuje tisk na High Temp Podložku" +"Teplota podložky, když je nainstalována Smooth PEI Podložka/High temperature Podložka. Hodnota 0 " +"znamená, že filament není podporován pro tisk na Smooth PEI Podložka/High temperature Podložka" msgid "Textured PEI Plate" msgstr "Textured PEI Podložka" msgid "" -"Bed temperature when Textured PEI Plate is installed. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the filament does not support to " +"print on the Textured PEI Plate" msgstr "" -"Teplota podložky při instalaci Textured PEI Podložky. Hodnota 0 znamená " -"filament nepodporuje tisk na Textured PEI Podložku" +"Teplota podložky při instalaci Textured PEI Podložky. Hodnota 0 znamená filament nepodporuje tisk na " +"Textured PEI Podložku" msgid "Volumetric speed limitation" msgstr "Omezení objemové rychlosti" @@ -5794,29 +5745,34 @@ msgid "Min fan speed threshold" msgstr "Min rychlosti ventilátoru" msgid "" -"Part cooling fan speed will start to run at min speed when the estimated " -"layer time is no longer than the layer time in setting. When layer time is " -"shorter than threshold, fan speed is interpolated between the minimum and " -"maximum fan speed according to layer printing time" +"Part cooling fan speed will start to run at min speed when the estimated layer time is no longer than " +"the layer time in setting. When layer time is shorter than threshold, fan speed is interpolated between " +"the minimum and maximum fan speed according to layer printing time" msgstr "" -"Ventilátor chlazení části poběží na minimální rychlost ventilátoru, když se " -"odhadne doba vrstvy je delší než prahová hodnota. Když je doba vrstvy kratší " -"než hraniční hodnota, rychlost ventilátoru bude interpolována mezi minimální " -"a maximální rychlost ventilátoru podle doby tisku vrstvy" +"Ventilátor chlazení části poběží na minimální rychlost ventilátoru, když se odhadne doba vrstvy je delší " +"než prahová hodnota. Když je doba vrstvy kratší než hraniční hodnota, rychlost ventilátoru bude " +"interpolována mezi minimální a maximální rychlost ventilátoru podle doby tisku vrstvy" msgid "Max fan speed threshold" msgstr "Max rychlosti ventilátoru" -msgid "" -"Part cooling fan speed will be max when the estimated layer time is shorter " -"than the setting value" +msgid "Part cooling fan speed will be max when the estimated layer time is shorter than the setting value" msgstr "" -"Rychlost ventilátoru chlazení části bude maximální, když bude odhadovaná " -"doba vrstvy kratší než nastavená hodnota" +"Rychlost ventilátoru chlazení části bude maximální, když bude odhadovaná doba vrstvy kratší než " +"nastavená hodnota" msgid "Auxiliary part cooling fan" msgstr "Přídavný ventilátor chlazení" +msgid "Exhaust fan" +msgstr "Odsávací ventilátor" + +msgid "During print" +msgstr "Během tisku" + +msgid "Complete print" +msgstr "Dokončit tisk" + msgid "Filament start G-code" msgstr "Filament Začátek G-kók" @@ -5824,19 +5780,19 @@ msgid "Filament end G-code" msgstr "Filament Konec G-kód" msgid "Multimaterial" -msgstr "" +msgstr "Multimateriál" msgid "Wipe tower parameters" -msgstr "" +msgstr "Parametry čistící věže" msgid "Toolchange parameters with single extruder MM printers" -msgstr "" +msgstr "Parametry při výměně (Multi Material s jedním extruderem)" msgid "Ramming settings" -msgstr "" +msgstr "Nastavení rapidní extruze" msgid "Toolchange parameters with multi extruder MM printers" -msgstr "" +msgstr "Parametry při výměně (Multi Material s více extrudery)" msgid "Printable space" msgstr "Prostor pro tisk" @@ -5868,6 +5824,9 @@ msgstr "G-kód Před změnou vrstvy" msgid "Layer change G-code" msgstr "G-kód Změna vrstvy" +msgid "Time lapse G-code" +msgstr "Časosběrný G-kód" + msgid "Change filament G-code" msgstr "G-kód Změny filamentu" @@ -5893,13 +5852,13 @@ msgid "Jerk limitation" msgstr "Omezení Jerk-Ryv" msgid "Single extruder multimaterial setup" -msgstr "" +msgstr "Nastavení multimaterialu s jedním extruderem" msgid "Wipe tower" -msgstr "" +msgstr "Čistící věž" msgid "Single extruder multimaterial parameters" -msgstr "" +msgstr "Parametry jednoho multimateriálového extruderu" msgid "Layer height limits" msgstr "Výškové limity vrstvy" @@ -5947,8 +5906,7 @@ msgid "Set" msgstr "Nastavit" msgid "Click to reset current value and attach to the global value." -msgstr "" -"Klikněte pro resetování aktuální hodnoty a připojení ke globální hodnotě." +msgstr "Klikněte pro resetování aktuální hodnoty a připojení ke globální hodnotě." msgid "Click to drop current modify and reset to saved value." msgstr "Kliknutím zrušíte aktuální úpravu a obnovíte uloženou hodnotu." @@ -6020,38 +5978,32 @@ msgstr "Předvolba \"%1%\" obsahuje následující neuložené změny:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it contains the following unsaved " +"changes:" msgstr "" -"Předvolba \"%1%\" není kompatibilní s novým profilem tiskárny a je obsahuje " -"následující neuložené změny:" +"Předvolba \"%1%\" není kompatibilní s novým profilem tiskárny a je obsahuje následující neuložené změny:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it contains the following unsaved " +"changes:" msgstr "" -"Předvolba \"%1%\" není kompatibilní s novým procesním profilem a je obsahuje " -"následující neuložené změny:" +"Předvolba \"%1%\" není kompatibilní s novým procesním profilem a je obsahuje následující neuložené změny:" #, boost-format msgid "" "You have changed some settings of preset \"%1%\". \n" -"Would you like to keep these changed settings (new value) after switching " -"preset?" +"Would you like to keep these changed settings (new value) after switching preset?" msgstr "" "Změnili jste některá nastavení předvolby \"%1%\" . \n" -"Přejete si po přepnutí zachovat tato změněná nastavení (nová " -"hodnota)přednastavení?" +"Přejete si po přepnutí zachovat tato změněná nastavení (nová hodnota)přednastavení?" msgid "" "You have changed some preset settings. \n" -"Would you like to keep these changed settings (new value) after switching " -"preset?" +"Would you like to keep these changed settings (new value) after switching preset?" msgstr "" "Změnili jste některá přednastavená nastavení. \n" -"Přejete si po přepnutí zachovat tato změněná nastavení (nová " -"hodnota)přednastavení?" +"Přejete si po přepnutí zachovat tato změněná nastavení (nová hodnota)přednastavení?" msgid "Extruders count" msgstr "Počet extruderů" @@ -6146,34 +6098,41 @@ msgid "The configuration is up to date." msgstr "Konfigurace je aktuální." msgid "Ramming customization" -msgstr "" +msgstr "Přizpůsobení rapidní extruze" msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" +"Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its " +"purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the " +"new filament and can itself be reinserted later. This phase is important and different materials can " +"require different extrusion speeds to get the good shape. For this reason, the extrusion rates during " +"ramming are adjustable.\n" "\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." +"This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding " +"into filament etc." msgstr "" +"Rapidní extruze označuje rychlé vytlačení filamentu těsně před jeho výměnou za jiný v multi material " +"tiskárně s jedním extruderem. Účelem je správně vytvarovat konec vysouvaného filamentu tak, aby " +"neblokoval zasunutí nového filamentu a také mohl být sám později opětovně zasunut. Tento proces je " +"důležitý a rozdílné materiály mohou pro získání optimálního tvaru vyžadovat různé rychlosti extruze. Z " +"tohoto důvodu jsou objemové průtoky při rapidní extruzi uživatelsky upravitelné.\n" +"\n" +"Toto nastavení je určeno pro pokročilé uživatele, nesprávné nastavení velmi pravděpodobně povede k " +"zaseknutí filamentu, vybroušení filamentu podávacím kolečkem, atd." msgid "Total ramming time" -msgstr "" +msgstr "Celkový čas rapidní extruze" msgid "s" msgstr "s" msgid "Total rammed volume" -msgstr "" +msgstr "Celkový objem rapidní extruze" msgid "Ramming line width" -msgstr "" +msgstr "Šířka linky při rapidní extruzi" msgid "Ramming line spacing" -msgstr "" +msgstr "Rozestup linek při rapidní extruzi" msgid "Auto-Calc" msgstr "Automatický výpočet" @@ -6268,13 +6227,11 @@ msgid "Shift+R" msgstr "Shift+R" msgid "" -"Auto orientates selected objects or all objects.If there are selected " -"objects, it just orientates the selected ones.Otherwise, it will orientates " -"all objects in the current disk." +"Auto orientates selected objects or all objects.If there are selected objects, it just orientates the " +"selected ones.Otherwise, it will orientates all objects in the current disk." msgstr "" -"Toto automaticky orientuje vybrané objekty nebo všechny objekty. Pokud jsou " -"vybrány objekty, pouze zorientuje vybrané. Jinak zorientuje všechny objekty " -"v aktuální desce." +"Toto automaticky orientuje vybrané objekty nebo všechny objekty. Pokud jsou vybrány objekty, pouze " +"zorientuje vybrané. Jinak zorientuje všechny objekty v aktuální desce." msgid "Shift+Tab" msgstr "Shift+Tab" @@ -6481,11 +6438,8 @@ msgstr "informace o aktualizaci verze %s:" msgid "Network plug-in update" msgstr "Aktualizace síťového zásuvného modulu" -msgid "" -"Click OK to update the Network plug-in when Bambu Studio launches next time." -msgstr "" -"Klepnutím na OK aktualizujte síťový zásuvný modul při příštím spuštění Bambu " -"Studio." +msgid "Click OK to update the Network plug-in when Bambu Studio launches next time." +msgstr "Klepnutím na OK aktualizujte síťový zásuvný modul při příštím spuštění Bambu Studio." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -6500,17 +6454,13 @@ msgstr "Tuto verzi mi znovu nepřipomínat" msgid "LAN Connection Failed (Sending print file)" msgstr "Připojení k síti LAN se nezdařilo (odesílání tiskového souboru)" -msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." -msgstr "" -"Krok 1, potvrďte, že Bambu Studio a vaše tiskárna jsou ve stejné síti LAN." +msgid "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +msgstr "Krok 1, potvrďte, že Bambu Studio a vaše tiskárna jsou ve stejné síti LAN." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " -"on your printer, please correct them." -msgstr "" -"Krok 2, pokud se IP a přístupový kód níže liší od skutečných hodnot na " -"tiskárně, opravte je." +"Step 2, if the IP and Access Code below are different from the actual values on your printer, please " +"correct them." +msgstr "Krok 2, pokud se IP a přístupový kód níže liší od skutečných hodnot na tiskárně, opravte je." msgid "IP" msgstr "IP" @@ -6555,29 +6505,24 @@ msgid "Updating successful" msgstr "Aktualizace úspěšná" msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not " -"turn off the power while the printer is updating." +"Are you sure you want to update? This will take about 10 minutes. Do not turn off the power while the " +"printer is updating." msgstr "" -"Opravdu chcete aktualizovat? Bude to trvat asi 10 minut. Nevypněte napájení " -"během aktualizace tiskárny." +"Opravdu chcete aktualizovat? Bude to trvat asi 10 minut. Nevypněte napájení během aktualizace tiskárny." msgid "" -"An important update was detected and needs to be run before printing can " -"continue. Do you want to update now? You can also update later from 'Upgrade " -"firmware'." +"An important update was detected and needs to be run before printing can continue. Do you want to update " +"now? You can also update later from 'Upgrade firmware'." msgstr "" -"Byla zjištěna důležitá aktualizace a před tiskem je třeba ji spustit a " -"pokračovat. Chcete provést aktualizaci nyní? Aktualizaci můžete provést také " -"později v části Upgrade firmware." +"Byla zjištěna důležitá aktualizace a před tiskem je třeba ji spustit a pokračovat. Chcete provést " +"aktualizaci nyní? Aktualizaci můžete provést také později v části Upgrade firmware." msgid "" -"The firmware version is abnormal. Repairing and updating are required before " -"printing. Do you want to update now? You can also update later on printer or " -"update next time starting the studio." +"The firmware version is abnormal. Repairing and updating are required before printing. Do you want to " +"update now? You can also update later on printer or update next time starting the studio." msgstr "" -"Verze firmwaru je abnormální. Oprava a aktualizace jsou nutné před tisk. " -"Chcete provést aktualizaci nyní? Aktualizaci můžete provést také později na " -"tiskárně nebo aktualizovat při příštím spuštění studia." +"Verze firmwaru je abnormální. Oprava a aktualizace jsou nutné před tisk. Chcete provést aktualizaci " +"nyní? Aktualizaci můžete provést také později na tiskárně nebo aktualizovat při příštím spuštění studia." msgid "Extension Board" msgstr "Rozšiřující deska" @@ -6643,12 +6588,10 @@ msgstr "Konfigurační balíček aktualizován na " msgid "Open G-code file:" msgstr "Otevřít soubor s G-kódem:" -msgid "" -"One object has empty initial layer and can't be printed. Please Cut the " -"bottom or enable supports." +msgid "One object has empty initial layer and can't be printed. Please Cut the bottom or enable supports." msgstr "" -"Jeden objekt má prázdnou úvodní vrstvu a nelze jej vytisknout. Ořízněte " -"prosím spodní část nebo povolte podpěry." +"Jeden objekt má prázdnou úvodní vrstvu a nelze jej vytisknout. Ořízněte prosím spodní část nebo povolte " +"podpěry." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." @@ -6658,12 +6601,8 @@ msgstr "Objekt má prázdné vrstvy mezi %1% a %2% ​​a nelze jej vytisknout. msgid "Object: %1%" msgstr "Objekt: %1%" -msgid "" -"Maybe parts of the object at these height are too thin, or the object has " -"faulty mesh" -msgstr "" -"Části objektu v těchto výškách mohou být příliš tenké nebo objekt může mít " -"chybnou síť" +msgid "Maybe parts of the object at these height are too thin, or the object has faulty mesh" +msgstr "Části objektu v těchto výškách mohou být příliš tenké nebo objekt může mít chybnou síť" msgid "No object can be printed. Maybe too small" msgstr "Nelze vytisknout žádný objekt. Možná je příliš malý" @@ -6723,8 +6662,11 @@ msgstr "Vícenásobné" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " +msgstr "Nepodařilo se vypočítat šířku extruze %1%. Nelze získat hodnotu \"%2%\" " + +msgid "Invalid spacing supplied to Flow::with_spacing(), check your layer height and extrusion width" msgstr "" -"Nepodařilo se vypočítat šířku extruze %1%. Nelze získat hodnotu \"%2%\" " +"Chybná mezera poskytnuta funkcí Flow::with_spacing(), zkontrolujte vaši vrstvovou výšku a šířku extruze" msgid "undefined error" msgstr "nedefinovaná chyba" @@ -6820,10 +6762,8 @@ msgid "write callback failed" msgstr "zpětný zápis se nezdařil" #, boost-format -msgid "" -"%1% is too close to exclusion area, there may be collisions when printing." -msgstr "" -"%1% je příliš blízko oblasti vyloučení, při tisku může docházet ke kolizím." +msgid "%1% is too close to exclusion area, there may be collisions when printing." +msgstr "%1% je příliš blízko oblasti vyloučení, při tisku může docházet ke kolizím." #, boost-format msgid "%1% is too close to others, and collisions may be caused." @@ -6837,8 +6777,7 @@ msgid " is too close to others, there may be collisions when printing." msgstr " je příliš blízko ostatním, při tisku může docházet ke kolizím." msgid " is too close to exclusion area, there may be collisions when printing." -msgstr "" -" je příliš blízko oblasti vyloučení, při tisku může docházet ke kolizím." +msgstr " je příliš blízko oblasti vyloučení, při tisku může docházet ke kolizím." msgid "Prime Tower" msgstr "Čistící Věž" @@ -6850,74 +6789,68 @@ msgid " is too close to exclusion area, and collisions will be caused.\n" msgstr " je příliš blízko oblasti vyloučení a dojde ke kolizi.\n" msgid "" -"Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged " -"during printing" +"Can not print multiple filaments which have large difference of temperature together. Otherwise, the " +"extruder and nozzle may be blocked or damaged during printing" msgstr "" -"Nelze tisknout více filamentů, které mají velké teplotní rozdíly společně. " -"Jinak může dojít k zablokování nebo poškození extruderu a trysky během tisku" +"Nelze tisknout více filamentů, které mají velké teplotní rozdíly společně. Jinak může dojít k " +"zablokování nebo poškození extruderu a trysky během tisku" msgid "No extrusions under current settings." msgstr "Žádné extruze pod aktuálním nastavením." -msgid "" -"Smooth mode of timelapse is not supported when \"by object\" sequence is " -"enabled." -msgstr "" -"Plynulý režim časosběru není podporován, když \"podle objektu\" sekvence je " -"povoleno." +msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." +msgstr "Plynulý režim časosběru není podporován, když \"podle objektu\" sekvence je povoleno." -msgid "" -"Please select \"By object\" print sequence to print multiple objects in " -"spiral vase mode." -msgstr "" -"Vyberte prosím \"Podle objektu\" tiskovou sekvenci pro tisk více objektů v " -"režimu spirálové vázy." +msgid "Please select \"By object\" print sequence to print multiple objects in spiral vase mode." +msgstr "Vyberte prosím \"Podle objektu\" tiskovou sekvenci pro tisk více objektů v režimu spirálové vázy." +msgid "The spiral vase mode does not work when an object contains more than one materials." +msgstr "Režim spirálové vázy nefunguje, když objekt obsahuje více než jeden materiál." + +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "Objekt %1% přesahuje maximální výšku tiskového objemu." + +#, boost-format msgid "" -"The spiral vase mode does not work when an object contains more than one " -"materials." +"While the object %1% itself fits the build volume, its last layer exceeds the maximum build volume " +"height." msgstr "" -"Režim spirálové vázy nefunguje, když objekt obsahuje více než jeden materiál." +"Ačkoli samotný objekt %1% se vejde do tiskového objemu, jeho poslední vrstva překračuje maximální výšku " +"tiskového objemu." + +msgid "You might want to reduce the size of your model or change current print settings and retry." +msgstr "" +"Možná budete chtít zmenšit velikost vašeho modelu nebo změnit aktuální tisková nastavení a zkusit to " +"znovu." + +msgid "Variable layer height is not supported with Organic supports." +msgstr "Variabilní výška vrstvy není podporována s organickými podpěrami." msgid "The prime tower is not supported in \"By object\" print." msgstr "Čistící Věž není podporován v tisku \"Podle objektu\" ." msgid "" -"The prime tower is not supported when adaptive layer height is on. It " -"requires that all objects have the same layer height." +"The prime tower is not supported when adaptive layer height is on. It requires that all objects have the " +"same layer height." msgstr "" -"Čistící Věž není podporována, když je zapnutá výška adaptivní vrstvy. " -"Vyžaduje že všechny objekty mají stejnou výšku vrstvy." +"Čistící Věž není podporována, když je zapnutá výška adaptivní vrstvy. Vyžaduje že všechny objekty mají " +"stejnou výšku vrstvy." msgid "The prime tower requires \"support gap\" to be multiple of layer height" -msgstr "" -"Čistící věž vyžaduje, aby jakákoli \"podpěrná mezera\" byla násobkem výšky " -"vrstvy" +msgstr "Čistící věž vyžaduje, aby jakákoli \"podpěrná mezera\" byla násobkem výšky vrstvy" msgid "The prime tower requires that all objects have the same layer heights" msgstr "Čistící věž vyžaduje, aby všechny objekty měly stejnou výšku vrstvy" -msgid "" -"The prime tower requires that all objects are printed over the same number " -"of raft layers" -msgstr "" -"Čistící věž vyžaduje, aby byly všechny objekty vytištěny přes stejné číslo z " -"raftových vrstev" +msgid "The prime tower requires that all objects are printed over the same number of raft layers" +msgstr "Čistící věž vyžaduje, aby byly všechny objekty vytištěny přes stejné číslo z raftových vrstev" -msgid "" -"The prime tower requires that all objects are sliced with the same layer " -"heights." -msgstr "" -"Čistící věž vyžaduje, aby všechny objekty byly slicovány na stejnou výšku " -"vrstvy." +msgid "The prime tower requires that all objects are sliced with the same layer heights." +msgstr "Čistící věž vyžaduje, aby všechny objekty byly slicovány na stejnou výšku vrstvy." -msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" -msgstr "" -"Čistící věž je podporována pouze v případě, že všechny objekty mají stejnou " -"proměnnou výšku vrstvy" +msgid "The prime tower is only supported if all objects have the same variable layer height" +msgstr "Čistící věž je podporována pouze v případě, že všechny objekty mají stejnou proměnnou výšku vrstvy" msgid "Too small line width" msgstr "Příliš malá šířka extruze" @@ -6925,57 +6858,38 @@ msgstr "Příliš malá šířka extruze" msgid "Too large line width" msgstr "Příliš velká šířka extruze" -msgid "" -"The prime tower requires that support has the same layer height with object." -msgstr "" -"Čistící věž vyžaduje, aby podpěry měly stejnou výšku vrstvy jako objekt." +msgid "The prime tower requires that support has the same layer height with object." +msgstr "Čistící věž vyžaduje, aby podpěry měly stejnou výšku vrstvy jako objekt." -msgid "" -"Organic support tree tip diameter must not be smaller than support material " -"extrusion width." -msgstr "" +msgid "Organic support tree tip diameter must not be smaller than support material extrusion width." +msgstr "Průměr špičky organické podpěry nesmí být menší než je šířka extruze podpěr." -msgid "" -"Organic support branch diameter must not be smaller than 2x support material " -"extrusion width." -msgstr "" +msgid "Organic support branch diameter must not be smaller than 2x support material extrusion width." +msgstr "Průměr organické větve nesmí být menší než je dvojnásobek šířky extruze podpěr." -msgid "" -"Organic support branch diameter must not be smaller than support tree tip " -"diameter." -msgstr "" +msgid "Organic support branch diameter must not be smaller than support tree tip diameter." +msgstr "Průměr organické podpůrné větve nesmí být menší než průměr špičky větve." -msgid "" -"Support enforcers are used but support is not enabled. Please enable support." -msgstr "" -"Vynucené podpěry jsou použity, ale podpěry nejsou povoleny. Povolte prosím " -"podpěry." +msgid "Support enforcers are used but support is not enabled. Please enable support." +msgstr "Vynucené podpěry jsou použity, ale podpěry nejsou povoleny. Povolte prosím podpěry." msgid "Layer height cannot exceed nozzle diameter" msgstr "Výška vrstvy nemůže překročit průměr trysky" 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." +"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 "" -"Absolutní adresování extrudéru vyžaduje resetování pozice extrudéru na každé " -"vrstvě, aby se zabránilo ztrátě přesnosti pohyblivé desetinné čárky. " -"Přidejte \"G92 E0\" do layer_gcode." +"Absolutní adresování extrudéru vyžaduje resetování pozice extrudéru na každé vrstvě, aby se zabránilo " +"ztrátě přesnosti pohyblivé desetinné čárky. Přidejte \"G92 E0\" do layer_gcode." msgid "" -"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " -"absolute extruder addressing." +"\"G92 E0\" was found in before_layer_gcode, which is incompatible with absolute extruder addressing." msgstr "" -"\"G92 E0\" bylo nalezeno v before_layer_gcode, což je nekompatibilní s " -"absolutním adresováním extrudéru." +"\"G92 E0\" bylo nalezeno v before_layer_gcode, což je nekompatibilní s absolutním adresováním extrudéru." -msgid "" -"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " -"extruder addressing." -msgstr "" -"\"G92 E0\" bylo nalezeno v layer_gcode, což je nekompatibilní s absolutním " -"adresováním extrudéru." +msgid "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute extruder addressing." +msgstr "\"G92 E0\" bylo nalezeno v layer_gcode, což je nekompatibilní s absolutním adresováním extrudéru." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" @@ -7000,13 +6914,12 @@ msgid "Bed exclude area" msgstr "Podložka mimo prostor" msgid "" -"Unprintable area in XY plane. For example, X1 Series printers use the front " -"left corner to cut filament during filament change. The area is expressed as " -"polygon by points in following format: \"XxY, XxY, ...\"" +"Unprintable area in XY plane. For example, X1 Series printers use the front left corner to cut filament " +"during filament change. The area is expressed as polygon by points in following format: \"XxY, XxY, ...\"" msgstr "" -"Nepotisknutelná oblast v rovině XY. Například tiskárny řady X1 používají " -"přední levý roh pro vyjmutí filamentu během výměny filamentu. Oblast je " -"vyjádřena jako polygon podle bodů v následujícím formátu: \"XxY, XxY, ... \"" +"Nepotisknutelná oblast v rovině XY. Například tiskárny řady X1 používají přední levý roh pro vyjmutí " +"filamentu během výměny filamentu. Oblast je vyjádřena jako polygon podle bodů v následujícím formátu: " +"\"XxY, XxY, ... \"" msgid "Bed custom texture" msgstr "Vlastní textura podložky" @@ -7017,17 +6930,11 @@ msgstr "Vlastní model podložky" msgid "Elephant foot compensation" msgstr "Kompenzace rozplácnutí první vrstvy" -msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot " -"effect" +msgid "Shrink the initial layer on build plate to compensate for elephant foot effect" msgstr "Snižte první vrstvu na podložce, abyste kompenzovali efekt sloní nohy" -msgid "" -"Slicing height for each layer. Smaller layer height means more accurate and " -"more printing time" -msgstr "" -"Toto je výška každé vrstvy. Menší výšky vrstvy dávají větší přesnost, ale " -"delší doba tisku" +msgid "Slicing height for each layer. Smaller layer height means more accurate and more printing time" +msgstr "Toto je výška každé vrstvy. Menší výšky vrstvy dávají větší přesnost, ale delší doba tisku" msgid "Printable height" msgstr "Výška pro tisk" @@ -7042,36 +6949,31 @@ msgid "Hostname, IP or URL" msgstr "Název serveru, IP nebo URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or " +"URL of the printer host instance. Print host behind HAProxy with basic auth enabled can be accessed by " +"putting the user name and password into the URL in the following format: https://username:password@your-" +"octopi-address/" msgstr "" -"Slic3r může nahrávat G-kódy do tiskového serveru. Toto pole by mělo " -"obsahovat název hostitele, IP adresu nebo URL tiskového serveru. K " -"tiskovému serveru za HAProxy se zapnutým ověřením basic auth lze přistupovat " -"zadáním uživatelského jména a hesla do adresy URL v následujícím formátu: " -"https://username: password@your-octopi-address/" +"Slic3r může nahrávat G-kódy do tiskového serveru. Toto pole by mělo obsahovat název hostitele, IP adresu " +"nebo URL tiskového serveru. K tiskovému serveru za HAProxy se zapnutým ověřením basic auth lze " +"přistupovat zadáním uživatelského jména a hesla do adresy URL v následujícím formátu: https://username: " +"password@your-octopi-address/" msgid "Device UI" msgstr "Uživatelské rozhraní zařízení" -msgid "" -"Specify the URL of your device user interface if it's not same as print_host" -msgstr "" -"Uveďte URL uživatelského rozhraní vašeho zařízení, pokud není stejné jako " -"print_host" +msgid "Specify the URL of your device user interface if it's not same as print_host" +msgstr "Uveďte URL uživatelského rozhraní vašeho zařízení, pokud není stejné jako print_host" msgid "API Key / Password" msgstr "API klíč / Heslo" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password " +"required for authentication." msgstr "" -"Slic3r může nahrát soubory do tiskového serveru. Toto pole by mělo obsahovat " -"klíč API požadovaný pro ověření." +"Slic3r může nahrát soubory do tiskového serveru. Toto pole by mělo obsahovat klíč API požadovaný pro " +"ověření." msgid "Name of the printer" msgstr "Název tiskárny" @@ -7080,13 +6982,11 @@ msgid "HTTPS CA File" msgstr "Soubor HTTPS CA" msgid "" -"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository " -"is used." +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left " +"blank, the default OS CA certificate repository is used." msgstr "" -"Pro HTTPS připojení OctoPrintu lze zadat vlastní CA certifikát ve formátu " -"crt/pem. Pokud zůstane pole prázdné, použije se výchozí úložiště certifikátů " -"OS CA." +"Pro HTTPS připojení OctoPrintu lze zadat vlastní CA certifikát ve formátu crt/pem. Pokud zůstane pole " +"prázdné, použije se výchozí úložiště certifikátů OS CA." msgid "User" msgstr "Uživatel" @@ -7098,13 +6998,11 @@ msgid "Ignore HTTPS certificate revocation checks" msgstr "Ignorování kontrol revokace HTTPS certifikátu" msgid "" -"Ignore HTTPS certificate revocation checks in case of missing or offline " -"distribution points. One may want to enable this option for self signed " -"certificates if connection fails." +"Ignore HTTPS certificate revocation checks in case of missing or offline distribution points. One may " +"want to enable this option for self signed certificates if connection fails." msgstr "" -"Ignorování kontrol revokace HTTPS certifikátu v případě chybějících nebo " -"offline distribučních bodů. Tuto možnost lze povolit pro certifikáty " -"podepsané vlastním podpisem v případě, že se připojení nezdaří." +"Ignorování kontrol revokace HTTPS certifikátu v případě chybějících nebo offline distribučních bodů. " +"Tuto možnost lze povolit pro certifikáty podepsané vlastním podpisem v případě, že se připojení nezdaří." msgid "Names of presets related to the physical printer" msgstr "Názvy přednastavení souvisejících s fyzickou tiskárnou" @@ -7122,23 +7020,19 @@ msgid "Avoid crossing wall" msgstr "Vyhněte se přejíždění stěn" msgid "Detour and avoid to travel across wall which may cause blob on surface" -msgstr "" -"Objeďte a vyhněte se přejíždění přes stěny, což může způsobit skvrny na " -"povrchu" +msgstr "Objeďte a vyhněte se přejíždění přes stěny, což může způsobit skvrny na povrchu" msgid "Avoid crossing wall - Max detour length" msgstr "Vyhněte se přejíždění stěn - Maximální délka objížďky" msgid "" -"Maximum detour distance for avoiding crossing wall. Don't detour if the " -"detour distance is large than this value. Detour length could be specified " -"either as an absolute value or as percentage (for example 50%) of a direct " -"travel path. Zero to disable" +"Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is large than " +"this value. Detour length could be specified either as an absolute value or as percentage (for example " +"50%) of a direct travel path. Zero to disable" msgstr "" -"Maximální vzdálenost objížďky pro vyhnutí se přejezdu přes stěny. " -"Neobjíždějte, pokud vzdálenost objížďky je větší než tato hodnota. Lze zadat " -"délku objížďky buď jako absolutní hodnotu, nebo jako procento (například 50 " -"%) přímého cestovní cesta. Nula k deaktivaci" +"Maximální vzdálenost objížďky pro vyhnutí se přejezdu přes stěny. Neobjíždějte, pokud vzdálenost " +"objížďky je větší než tato hodnota. Lze zadat délku objížďky buď jako absolutní hodnotu, nebo jako " +"procento (například 50 %) přímého cestovní cesta. Nula k deaktivaci" msgid "mm or %" msgstr "mm or %" @@ -7147,35 +7041,35 @@ msgid "Other layers" msgstr "Ostatní vrstvy" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not support to print " +"on the Cool Plate" msgstr "" -"Toto je teplota podložky pro vrstvy kromě první. Hodnota 0 znamená, že " -"filament nepodporuje tisk na Cool Podložku" +"Toto je teplota podložky pro vrstvy kromě první. Hodnota 0 znamená, že filament nepodporuje tisk na Cool " +"Podložku" msgid "°C" msgstr "°C" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not support to print " +"on the Engineering Plate" msgstr "" -"Toto je teplota Podložky pro vrstvy kromě první. Hodnota 0 znamená, že " -"Filament nepodporuje tisk na Engineering Podložku" +"Toto je teplota Podložky pro vrstvy kromě první. Hodnota 0 znamená, že Filament nepodporuje tisk na " +"Engineering Podložku" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not support to print " +"on the High Temp Plate" msgstr "" -"Toto je teplota Podložky pro vrstvy kromě první. Hodnota 0 znamená, že " -"filament nepodporuje tisk na High Temp Podložku" +"Toto je teplota Podložky pro vrstvy kromě první. Hodnota 0 znamená, že filament nepodporuje tisk na High " +"Temp Podložku" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not support to print " +"on the Textured PEI Plate" msgstr "" -"Toto je teplota Podložky pro vrstvy kromě první. Hodnota 0 znamená, že " -"filament nepodporuje tisk na Textured PEI Podložku" +"Toto je teplota Podložky pro vrstvy kromě první. Hodnota 0 znamená, že filament nepodporuje tisk na " +"Textured PEI Podložku" msgid "Initial layer" msgstr "První vrstva" @@ -7184,32 +7078,30 @@ msgid "Initial layer bed temperature" msgstr "Teplota podložky první vrstvy" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Cool Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Cool " +"Plate" msgstr "" -"Toto je teplota podložky první vrstvy. Hodnota 0 znamená filament " -"nepodporuje tisk na Cool Podložku" +"Toto je teplota podložky první vrstvy. Hodnota 0 znamená filament nepodporuje tisk na Cool Podložku" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Engineering Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print on the " +"Engineering Plate" msgstr "" -"Toto je teplota podložky první vrstvy. Hodnota 0 znamená filament " -"nepodporuje tisk na Engineering Podložku" +"Toto je teplota podložky první vrstvy. Hodnota 0 znamená filament nepodporuje tisk na Engineering " +"Podložku" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the High Temp Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print on the High " +"Temp Plate" msgstr "" -"Toto je teplota podložky první vrstvy. Hodnota 0 znamená filament " -"nepodporuje tisk na High Temp Podložku" +"Toto je teplota podložky první vrstvy. Hodnota 0 znamená filament nepodporuje tisk na High Temp Podložku" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Textured PEI Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print on the " +"Textured PEI Plate" msgstr "" -"Toto je teplota podložky první vrstvy. Hodnota 0 znamená filament " -"nepodporuje tisk na Textured PEI Podložku" +"Toto je teplota podložky první vrstvy. Hodnota 0 znamená filament nepodporuje tisk na Textured PEI " +"Podložku" msgid "Bed types supported by the printer" msgstr "Typy podložek podporované tiskárnou" @@ -7230,105 +7122,92 @@ msgid "Bottom shell layers" msgstr "Spodní vrstvy skořepiny" 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" +"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 "" -"Toto je počet pevných vrstev spodní skořepiny, včetně spodní povrchové " -"vrstvy. Když je tloušťka vypočítaná touto hodnotou tenčí než tloušťka spodní " -"skořepiny, spodní vrstvy skořepiny se zvětší" +"Toto je počet pevných vrstev spodní skořepiny, včetně spodní povrchové vrstvy. Když je tloušťka " +"vypočítaná touto hodnotou tenčí než tloušťka spodní skořepiny, spodní vrstvy skořepiny se zvětší" msgid "Bottom shell thickness" msgstr "Tloušťka spodní skořepiny" 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 shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by " -"bottom shell layers" +"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 shell when layer height is small. 0 " +"means that this setting is disabled and thickness of bottom shell is absolutely determained by bottom " +"shell layers" msgstr "" -"Počet spodních pevných vrstev se při krájení zvýší, pokud je tloušťka " -"vypočítaná podle spodních vrstev skořepiny tenčí než tato hodnota. Tím se " -"lze vyhnout příliš tenké skořepině, když je výška vrstvy malá. 0 znamená, že " -"toto nastavení je zakázáno a tloušťka spodní skořepiny je absolutně určován " -"spodními vrstvami pláště" +"Počet spodních pevných vrstev se při krájení zvýší, pokud je tloušťka vypočítaná podle spodních vrstev " +"skořepiny tenčí než tato hodnota. Tím se lze vyhnout příliš tenké skořepině, když je výška vrstvy malá. " +"0 znamená, že toto nastavení je zakázáno a tloušťka spodní skořepiny je absolutně určován spodními " +"vrstvami pláště" msgid "Force cooling for overhang and bridge" msgstr "Vynucené chlazení pro převisy a mosty" -msgid "" -"Enable this option to optimize part cooling fan speed for overhang and " -"bridge to get better cooling" +msgid "Enable this option to optimize part cooling fan speed for overhang and bridge to get better cooling" msgstr "" -"Povolením této možnosti optimalizujete rychlost ventilátoru chlazení dílů " -"pro převis a most, abyste získali lepší chlazení" +"Povolením této možnosti optimalizujete rychlost ventilátoru chlazení dílů pro převis a most, abyste " +"získali lepší chlazení" msgid "Fan speed for overhang" msgstr "Rychlost ventilátoru pro převisy" msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang " -"wall which has large overhang degree. Forcing cooling for overhang and " -"bridge can get better quality for these part" +"Force part cooling fan to be this speed when printing bridge or overhang wall which has large overhang " +"degree. Forcing cooling for overhang and bridge can get better quality for these part" msgstr "" -"Vynutit ventilátor chlazení na tuto rychlost, když tisknete most nebo " -"převislou stěnu, která má velký přesah. Vynucení chlazení převisu a mostu " -"může získat lepší kvalitu těchto dílů" +"Vynutit ventilátor chlazení na tuto rychlost, když tisknete most nebo převislou stěnu, která má velký " +"přesah. Vynucení chlazení převisu a mostu může získat lepší kvalitu těchto dílů" msgid "Cooling overhang threshold" msgstr "Hranice chlazení převisů" #, fuzzy, c-format msgid "" -"Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width " -"of the line without support from lower layer. 0% means forcing cooling for " -"all outer wall no matter how much overhang degree" +"Force cooling fan to be specific speed when overhang degree of printed part exceeds this value. " +"Expressed as percentage which indicides how much width of the line without support from lower layer. " +"0% means forcing cooling for all outer wall no matter how much overhang degree" msgstr "" -"Vynutit chladicí ventilátor na určitou rychlost, když stupeň převisu " -"tištěného dílu překročí tuto hodnotu. Vyjádřeno v procentech, které udává, " -"jak velká šířka extruze bez podpěry spodní vrstvy. 0% znamená vynucení " -"chlazení pro celou vnější stěnu bez ohledu na míru převisu" +"Vynutit chladicí ventilátor na určitou rychlost, když stupeň převisu tištěného dílu překročí tuto " +"hodnotu. Vyjádřeno v procentech, které udává, jak velká šířka extruze bez podpěry spodní vrstvy. " +"0% znamená vynucení chlazení pro celou vnější stěnu bez ohledu na míru převisu" msgid "Bridge infill direction" msgstr "Směr výplně mostu" msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for " -"external bridges. Use 180°for zero angle." +"Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise " +"the provided angle will be used for external bridges. Use 180°for zero angle." msgstr "" -"Přepsání úhlu přemostění. Pokud je ponecháno na nule, úhel přemostění bude " -"vypočítán automaticky. Jinak bude poskytnutý úhel použit pro vnější mosty. " -"Pro nulový úhel použijte 180°." +"Přepsání úhlu přemostění. Pokud je ponecháno na nule, úhel přemostění bude vypočítán automaticky. Jinak " +"bude poskytnutý úhel použit pro vnější mosty. Pro nulový úhel použijte 180°." msgid "Bridge density" msgstr "Hustota mostu" msgid "Density of external bridges. 100% means solid bridge. Default is 100%." -msgstr "" -"Hustota externích mostů. 100 % znamená pevný most. Výchozí hodnota je 100 %." +msgstr "Hustota externích mostů. 100 % znamená pevný most. Výchozí hodnota je 100 %." msgid "Bridge flow" msgstr "Průtok mostu" msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"Decrease this value slightly(for example 0.9) to reduce the amount of material for bridge, to improve sag" msgstr "" -"Snižte tuto hodnotu mírně (například 0,9), abyste snížili množství materiálu " -"pro most a zlepšili prověšení" +"Snižte tuto hodnotu mírně (například 0,9), abyste snížili množství materiálu pro most a zlepšili " +"prověšení" msgid "Top surface flow ratio" msgstr "Poměr průtoku horní vrstvy" msgid "" -"This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"This factor affects the amount of material for top solid infill. You can decrease it slightly to have " +"smooth surface finish" msgstr "" -"Tento faktor ovlivňuje množství materiálu pro vrchní plnou výplň. Můžete jej " -"mírně snížit, abyste měli hladký povrch" +"Tento faktor ovlivňuje množství materiálu pro vrchní plnou výplň. Můžete jej mírně snížit, abyste měli " +"hladký povrch" msgid "Bottom surface flow ratio" msgstr "Poměr průtoku spodní vrstvy" @@ -7339,63 +7218,48 @@ msgstr "Tento faktor ovlivňuje množství materiálu pro spodní plnou výplň" msgid "Precise wall(experimental)" msgstr "Přesná stěna (experimentální)" -msgid "" -"Improve shell precision by adjusting outer wall spacing. This also improves " -"layer consistency." +msgid "Improve shell precision by adjusting outer wall spacing. This also improves layer consistency." msgstr "" -"Zlepšete přesnost skořepiny úpravou vzdálenosti vnějších stěn. To také " -"zlepšuje konzistence vrstev." +"Zlepšete přesnost skořepiny úpravou vzdálenosti vnějších stěn. To také zlepšuje konzistence vrstev." msgid "Only one wall on top surfaces" msgstr "Pouze jedna stěna na horních plochách" -msgid "" -"Use only one wall on flat top surface, to give more space to the top infill " -"pattern" +msgid "Use only one wall on flat top surface, to give more space to the top infill pattern" msgstr "" -"Používejte pouze jednu stěnu na rovném horním povrchu, abyste získali více " -"prostoru pro horní vzor výplně" +"Používejte pouze jednu stěnu na rovném horním povrchu, abyste získali více prostoru pro horní vzor výplně" msgid "One wall threshold" msgstr "Hranice jedné stěny" #, fuzzy, c-format, 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 is you have some thin features " -"on the next layer, like letters. Set this setting to 0 to remove these " -"artifacts." +"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 is you have some thin features on the next layer, like " +"letters. Set this setting to 0 to remove these artifacts." msgstr "" -"Pokud má být tisknuta horní plocha a je částečně zakrytá jinou vrstvou, " -"nebude brána v úvahu jako horní vrstva, pokud je její šířka nižší než tato " -"hodnota. Toto může být užitečné, aby se zabránilo spuštění funkce 'jeden " -"perimetr nahoře' na ploše, která by měla být pokryta pouze perimetry. Tato " -"hodnota může být udávána v mm nebo jako % šířky extruze perimetru.\n" -"Varování: Pokud je tato funkce povolena, mohou vzniknout artefakty, pokud " -"máte na následující vrstvě nějaké tenké prvky, například písmena. Tuto volbu " -"nastavte na 0, abyste se tyto artefakty odstranili." +"Pokud má být tisknuta horní plocha a je částečně zakrytá jinou vrstvou, nebude brána v úvahu jako horní " +"vrstva, pokud je její šířka nižší než tato hodnota. Toto může být užitečné, aby se zabránilo spuštění " +"funkce 'jeden perimetr nahoře' na ploše, která by měla být pokryta pouze perimetry. Tato hodnota může " +"být udávána v mm nebo jako % o šířky extruze perimetru.\n" +"Varování: Pokud je tato funkce povolena, mohou vzniknout artefakty, pokud máte na následující vrstvě " +"nějaké tenké prvky, například písmena. Tuto volbu nastavte na 0, abyste se tyto artefakty odstranili." msgid "Only one wall on first layer" msgstr "Pouze jedna stěna v první vrstvě" -msgid "" -"Use only one wall on first layer, to give more space to the bottom infill " -"pattern" +msgid "Use only one wall on first layer, to give more space to the bottom infill pattern" msgstr "" -"Používejte pouze jednu stěnu na první vrstvě, abyste získali více prostoru " -"pro spodní výplňový vzor" +"Používejte pouze jednu stěnu na první vrstvě, abyste získali více prostoru pro spodní výplňový vzor" msgid "Extra perimeters on overhangs" -msgstr "" +msgstr "Dodatečné perimetry u převisů" -msgid "" -"Create additional perimeter paths over steep overhangs and areas where " -"bridges cannot be anchored. " -msgstr "" +msgid "Create additional perimeter paths over steep overhangs and areas where bridges cannot be anchored. " +msgstr "Vytvořte další perimetry přes strmé převisy a oblasti, kde mosty nelze ukotvit. " msgid "Classic mode" msgstr "Klasický režim" @@ -7409,6 +7273,13 @@ msgstr "Zpomalení u převisů" msgid "Enable this option to slow printing down for different overhang degree" msgstr "Povolte tuto volbu pro zpomalení tisku pro různé stupně převisů" +msgid "Slow down for curled perimeters" +msgstr "Zpomalení pro zakroucené obvody" + +msgid "Enable this option to slow printing down in areas where potential curled perimeters may exist" +msgstr "" +"Povolte tuto možnost pro zpomalení tisku na místech, kde mohou existovat potenciální zakroucené obvody" + msgid "mm/s or %" msgstr "mm/s or %" @@ -7425,36 +7296,33 @@ msgid "Internal" msgstr "Vnitřní" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridge. 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ího mostu. Pokud je hodnota vyjádřena jako procento, bude " -"vypočítána na základě most_speed. Výchozí hodnota je 150 %." +"Rychlost vnitřního mostu. Pokud je hodnota vyjádřena jako procento, bude vypočítána na základě " +"most_speed. Výchozí hodnota je 150 %." msgid "Brim width" -msgstr "Šířka Límce" +msgstr "Šířka límce" msgid "Distance from model to the outermost brim line" msgstr "Vzdálenost od modelu k nejvzdálenějšímu okraji límce" msgid "Brim type" -msgstr "Typ Límce" +msgstr "Typ límce" msgid "" -"This controls the generation of the brim at outer and/or inner side of " -"models. Auto means the brim width is analysed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of models. Auto means the brim width " +"is analysed and calculated automatically." msgstr "" -"Toto ovládá generování límce na vnější a/nebo vnitřní straně modelů. Možnost " -"Auto znamená, že šířka límce je automaticky analyzována a vypočítána." +"Toto ovládá generování límce na vnější a/nebo vnitřní straně modelů. Možnost Auto znamená, že šířka " +"límce je automaticky analyzována a vypočítána." msgid "Brim-object gap" msgstr "Mezera mezi Límcem a Objektem" -msgid "" -"A gap between innermost brim line and object can make brim be removed more " -"easily" -msgstr "" -"Mezera mezi nejvnitřnějším límcem a předmětem může usnadnit odstranění límce" +msgid "A gap between innermost brim line and object can make brim be removed more easily" +msgstr "Mezera mezi nejvnitřnějším límcem a předmětem může usnadnit odstranění límce" msgid "Brim ears" msgstr "Uši límce" @@ -7478,12 +7346,12 @@ msgid "Brim ear detection radius" msgstr "Poloměr detekce uší límce" msgid "" -"The geometry will be decimated before dectecting sharp angles. This " -"parameter indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This parameter indicates the minimum " +"length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" -"Geometrie bude zredukována před detekcí ostrých úhlů. Tento parametr udává " -"minimální délku odchylky pro redukci.\n" +"Geometrie bude zredukována před detekcí ostrých úhlů. Tento parametr udává minimální délku odchylky pro " +"redukci.\n" "0 pro deaktivaci" msgid "Compatible machine" @@ -7514,22 +7382,18 @@ msgid "Slow printing down for better layer cooling" msgstr "Zpomalte tisk pro lepší chlazení vrstvy" msgid "" -"Enable this option to slow printing speed down to make the final layer time " -"not shorter than the layer time threshold in \"Max fan speed threshold\", so " -"that layer can be cooled for longer time. This can improve the cooling " -"quality for needle and small details" +"Enable this option to slow printing speed down to make the final layer time not shorter than the layer " +"time threshold in \"Max fan speed threshold\", so that layer can be cooled for longer time. This can " +"improve the cooling quality for needle and small details" msgstr "" -"Povolením této možnosti zpomalíte rychlost tisku, aby se zkrátila doba " -"poslední vrstvy ne kratší než časová hranice vrstvy v \"Hranice max " -"rychlosti ventilátoru\", takže vrstva může být chlazena po delší dobu. To " -"může zlepšit kvalitu chlazení jehly a malých detailů" +"Povolením této možnosti zpomalíte rychlost tisku, aby se zkrátila doba poslední vrstvy ne kratší než " +"časová hranice vrstvy v \"Hranice max rychlosti ventilátoru\", takže vrstva může být chlazena po delší " +"dobu. To může zlepšit kvalitu chlazení jehly a malých detailů" msgid "Normal printing" msgstr "Normální tisk" -msgid "" -"The default acceleration of both normal printing and travel except initial " -"layer" +msgid "The default acceleration of both normal printing and travel except initial layer" msgstr "Výchozí zrychlení normálního tisku i pohybu kromě počáteční vrstvy" msgid "mm/s²" @@ -7547,16 +7411,30 @@ msgstr "Výchozí profil procesu" msgid "Default process profile when switch to this machine profile" msgstr "Výchozí profil procesu při přepnutí na tento profil stroje" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "Rychlost ventilátoru" + +msgid "Speed of exhuast fan during printing.This speed will overwrite the speed in filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "První bez chlazení" msgid "" -"Close all cooling fan for the first certain layers. Cooling fan of the first " -"layer used to be closed to get better build plate adhesion" +"Close all cooling fan for the first certain layers. Cooling fan of the first layer used to be closed to " +"get better build plate adhesion" msgstr "" -"Zavřete všechny chladicí ventilátory pro první určité vrstvy. Chladicí " -"ventilátor první vrstvy býval uzavřen, aby se dosáhlo lepší přilnavosti " -"stavební desky" +"Zavřete všechny chladicí ventilátory pro první určité vrstvy. Chladicí ventilátor první vrstvy býval " +"uzavřen, aby se dosáhlo lepší přilnavosti stavební desky" msgid "layers" msgstr "vrstva(y)" @@ -7565,36 +7443,33 @@ msgid "Don't support bridges" msgstr "Nevytvářet podpěry pod mosty" msgid "" -"Don't support the whole bridge area which make support very large. Bridge " -"usually can be printing directly without support if not very long" +"Don't support the whole bridge area which make support very large. Bridge usually can be printing " +"directly without support if not very long" msgstr "" -"Nepodpírejte celou oblast mostu, díky čemuž je podpěra velmi velká. Most " -"obvykle může tisknout přímo bez podpěry, pokud není příliš dlouhý" +"Nepodpírejte celou oblast mostu, díky čemuž je podpěra velmi velká. Most obvykle může tisknout přímo bez " +"podpěry, pokud není příliš dlouhý" msgid "Thick bridges" msgstr "Silné přemostění" msgid "" -"If enabled, bridges are more reliable, can bridge longer distances, but may " -"look worse. If disabled, bridges look better but are reliable just for " -"shorter bridged distances." +"If enabled, bridges are more reliable, can bridge longer distances, but may look worse. If disabled, " +"bridges look better but are reliable just for shorter bridged distances." msgstr "" -"Pokud je povoleno, jsou mosty spolehlivější, mohou překlenout delší " -"vzdálenosti, ale mohou vypadat hůře.\n" -"Pokud je zakázáno, mosty vypadají lépe, ale jsou spolehlivé jen pro kratší " -"přemostění." +"Pokud je povoleno, jsou mosty spolehlivější, mohou překlenout delší vzdálenosti, ale mohou vypadat " +"hůře.\n" +"Pokud je zakázáno, mosty vypadají lépe, ale jsou spolehlivé jen pro kratší přemostění." msgid "Max bridge length" msgstr "Maximální délka mostu" msgid "" -"Max 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." +"Max 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 "" -"Maximální délka mostů, které nepotřebují podpěru. Pokud chcete všechny, " -"nastavte ji na 0 mosty, které mají být podporovány, a pokud nechcete, " -"nastavte ji na velmi vysokou hodnotu všechny mosty, které mají být podepřeny." +"Maximální délka mostů, které nepotřebují podpěru. Pokud chcete všechny, nastavte ji na 0 mosty, které " +"mají být podporovány, a pokud nechcete, nastavte ji na velmi vysokou hodnotu všechny mosty, které mají " +"být podepřeny." msgid "End G-code" msgstr "Konec G-kódu" @@ -7609,27 +7484,10 @@ msgid "Ensure vertical shell thickness" msgstr "Zajistit tloušťku svislých stěn" msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)" +"Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid " +"layers)" msgstr "" -"Přidá plnou výplň u šikmých ploch pro garanci tloušťky svislých stěn " -"(vrchních a spodních plných vrstev)" - -msgid "Internal bridge support thickness" -msgstr "Tloušťka vnitřní podpěry mostu" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" -"Pokud je povoleno, podpůrné smyčky budou generovány pod obrysy interních " -"mostů. Tyto podpůrné smyčky mohou zabránit extruzi materiálu do vzduchu a " -"zlepšit kvalitu horního povrchu, zejména když je nízká hustota výplně. Tato " -"hodnota určuje tloušťku podpůrných smyček. Hodnota 0 znamená, že tato funkce " -"je zakázána." +"Přidá plnou výplň u šikmých ploch pro garanci tloušťky svislých stěn (vrchních a spodních plných vrstev)" msgid "Top surface pattern" msgstr "Vzor horního povrchu" @@ -7671,48 +7529,39 @@ msgid "Internal solid infill pattern" msgstr "Vzor vnitřní plné výplně" msgid "" -"Line pattern of internal solid infill. if the detect nattow internal solid " -"infill be enabled, the concentric pattern will be used for the small area." +"Line pattern of internal solid infill. if the detect nattow internal solid infill be enabled, the " +"concentric pattern will be used for the small area." msgstr "" -"Čárový vzor vnitřní plné výplně. Pokud je povolena detekce úzké vnitřní plné " -"výplně, bude pro malou plochu použit koncentrický vzor." +"Čárový vzor vnitřní plné výplně. Pokud je povolena detekce úzké vnitřní plné výplně, bude pro malou " +"plochu použit koncentrický vzor." + +msgid "Line width of outer wall. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Šířka extruze vnější stěny. Pokud je vyjádřena jako %, vypočítá se vzhledem k průměru trysky." msgid "" -"Line width of outer wall. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Speed of outer wall which is outermost and visible. It's used to be slower than inner wall speed to get " +"better quality." msgstr "" -"Šířka extruze vnější stěny. Pokud je vyjádřena jako %, vypočítá se vzhledem " -"k průměru trysky." - -msgid "" -"Speed of outer wall which is outermost and visible. It's used to be slower " -"than inner wall speed to get better quality." -msgstr "" -"Rychlost vnější stěny, která je nejkrajnější a viditelná. Pro lepší kvalitu " -"bývala nižší než rychlost vnitřní stěny." +"Rychlost vnější stěny, která je nejkrajnější a viditelná. Pro lepší kvalitu bývala nižší než rychlost " +"vnitřní stěny." msgid "Small perimeters" msgstr "Malé perimetry" 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." +"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). Je-li vyjádřeno v procentech " -"(například: 80 %), bude vypočítáno podle výše uvedeného nastavení rychlosti " -"vnější stěny. Nastavte na nulu pro auto." +"Toto samostatné nastavení ovlivní rychlost obvodů s poloměrem <= small_perimeter_threshold (obvykle " +"otvory). Je-li vyjádřeno v procentech (například: 80 %), bude vypočítáno podle výše uvedeného nastavení " +"rychlosti vnější stěny. Nastavte na nulu pro auto." msgid "Small perimeters threshold" msgstr "Hranice malého perimetru" -msgid "" -"This sets the threshold for small perimeter length. Default threshold is 0mm" -msgstr "" -"Toto nastavuje hraniční hodnotu pro malou délku obvodu. Výchozí hranice je 0 " -"mm" +msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" +msgstr "Toto nastavuje hraniční hodnotu pro malou délku obvodu. Výchozí hranice je 0 mm" msgid "Order of inner wall/outer wall/infil" msgstr "Pořadí vnitřní stěny/vnější stěny/výplně" @@ -7738,29 +7587,17 @@ msgstr "vnitřní-vnější-vnitřní/výplň" msgid "Height to rod" msgstr "Výška k Ose X" -msgid "" -"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " -"by-object printing." -msgstr "" -"Vzdálenost hrotu trysky k Ose X (X Gantry). Používá se pro zamezení kolize v " -"tisk podle objektu." +msgid "Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-object printing." +msgstr "Vzdálenost hrotu trysky k Ose X (X Gantry). Používá se pro zamezení kolize v tisk podle objektu." msgid "Height to lid" msgstr "Výška po víko" -msgid "" -"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" -"object printing." -msgstr "" -"Vzdálenost hrotu trysky k víčku. Používá se pro zamezení kolizi při tisku " -"vedlejších objektů." +msgid "Distance of the nozzle tip to the lid. Used for collision avoidance in by-object printing." +msgstr "Vzdálenost hrotu trysky k víčku. Používá se pro zamezení kolizi při tisku vedlejších objektů." -msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." -msgstr "" -"Poloměr vůle kolem extruderu. Používá se pro zamezení kolizi při tisku " -"vedlejších objektů." +msgid "Clearance radius around extruder. Used for collision avoidance in by-object printing." +msgstr "Poloměr vůle kolem extruderu. Používá se pro zamezení kolizi při tisku vedlejších objektů." msgid "Extruder Color" msgstr "Barva extruderu" @@ -7775,60 +7612,52 @@ msgid "Flow ratio" msgstr "Poměr průtoku" msgid "" -"The material may have volumetric change after switching between molten state " -"and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 " -"and 1.05. Maybe you can tune this value to get nice flat surface when there " -"has slight overflow or underflow" +"The material may have volumetric change after switching between molten state and crystalline state. This " +"setting changes all extrusion flow of this filament in gcode proportionally. Recommended value range is " +"between 0.95 and 1.05. Maybe you can tune this value to get nice flat surface when there has slight " +"overflow or underflow" msgstr "" -"Materiál může mít objemovou změnu po přepnutí mezi roztaveným a krystalickým " -"stavem. Toto nastavení proporcionálně změní veškerý vytlačovací tok tohoto " -"filamentu v gcode. Doporučený rozsah hodnot je mezi 0,95 a 1,05. Možná " -"můžete tuto hodnotu vyladit, abyste získali pěkně rovný povrch, když dochází " -"k mírnému přetečení nebo podtečení" +"Materiál může mít objemovou změnu po přepnutí mezi roztaveným a krystalickým stavem. Toto nastavení " +"proporcionálně změní veškerý vytlačovací tok tohoto filamentu v gcode. Doporučený rozsah hodnot je mezi " +"0,95 a 1,05. Možná můžete tuto hodnotu vyladit, abyste získali pěkně rovný povrch, když dochází k " +"mírnému přetečení nebo podtečení" msgid "Enable pressure advance" msgstr "Povolit předstih tlaku" -msgid "" -"Enable pressure advance, auto calibration result will be overwriten once " -"enabled." -msgstr "" -"Povolte předstih tlaku, po povolení bude výsledek automatické kalibrace " -"přepsán." +msgid "Enable pressure advance, auto calibration result will be overwriten once enabled." +msgstr "Povolte předstih tlaku, po povolení bude výsledek automatické kalibrace přepsán." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Předstih tlaku (Klipper) AKA Lineární faktor předstihu (Marlin)" msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, " -"it will be computed over the nozzle diameter." +"Default line width if other line widths are set to 0. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" -"Výchozí šířka extruze, pokud jsou ostatní šířky extruze nastaveny na 0. " -"Pokud je vyjádřeno jako %, bude vypočteno na základě průměru trysky." +"Výchozí šířka extruze, pokud jsou ostatní šířky extruze nastaveny na 0. Pokud je vyjádřeno jako %, bude " +"vypočteno na základě průměru trysky." msgid "Keep fan always on" msgstr "Ventilátor vždy zapnutý" msgid "" -"If enable this setting, part cooling fan will never be stoped and will run " -"at least at minimum speed to reduce the frequency of starting and stoping" +"If enable this setting, part cooling fan will never be stoped and will run at least at minimum speed to " +"reduce the frequency of starting and stoping" msgstr "" -"Pokud povolíte toto nastavení, ventilátor chlazení součástí se nikdy " -"nezastaví a poběží alespoň na minimální rychlost, aby se snížila frekvence " -"spouštění a zastavování" +"Pokud povolíte toto nastavení, ventilátor chlazení součástí se nikdy nezastaví a poběží alespoň na " +"minimální rychlost, aby se snížila frekvence spouštění a zastavování" msgid "Layer time" msgstr "Čas vrstvy" msgid "" -"Part cooling fan will be enabled for layers of which estimated time is " -"shorter than this value. Fan speed is interpolated between the minimum and " -"maximum fan speeds according to layer printing time" +"Part cooling fan will be enabled for layers of which estimated time is shorter than this value. Fan " +"speed is interpolated between the minimum and maximum fan speeds according to layer printing time" msgstr "" -"Ventilátor chlazení části bude povolen pro vrstvy, jejichž odhadovaná doba " -"je kratší než tato hodnota. Rychlost ventilátoru je interpolována mezi " -"minimální a maximální rychlost ventilátoru podle doby tisku vrstvy" +"Ventilátor chlazení části bude povolen pro vrstvy, jejichž odhadovaná doba je kratší než tato hodnota. " +"Rychlost ventilátoru je interpolována mezi minimální a maximální rychlost ventilátoru podle doby tisku " +"vrstvy" msgid "Default color" msgstr "Výchozí barva" @@ -7840,29 +7669,25 @@ msgid "Color" msgstr "Barva" msgid "Filament notes" -msgstr "" +msgstr "Poznámky k filamentu" msgid "You can put your notes regarding the filament here." -msgstr "" +msgstr "Zde můžete vložit poznámky týkající se filamentu." msgid "Required nozzle HRC" msgstr "Požadovaná tryska HRC" -msgid "" -"Minimum HRC of nozzle required to print the filament. Zero means no checking " -"of nozzle's HRC." -msgstr "" -"Minimální HRC trysky potřebné k tisku filamentu. Nula znamená žádnou " -"kontrolu HRC trysky." +msgid "Minimum HRC of nozzle required to print the filament. Zero means no checking of nozzle's HRC." +msgstr "Minimální HRC trysky potřebné k tisku filamentu. Nula znamená žádnou kontrolu HRC trysky." msgid "" -"This setting stands for how much volume of filament can be melted and " -"extruded per second. Printing speed is limited by max volumetric speed, in " -"case of too high and unreasonable speed setting. Can't be zero" +"This setting stands for how much volume of filament can be melted and extruded per second. Printing " +"speed is limited by max volumetric speed, in case of too high and unreasonable speed setting. Can't be " +"zero" msgstr "" -"Toto nastavení znamená, kolik objemu filamentu lze roztavit a extrudováno za " -"sekundu. Rychlost tisku je omezena maximální objemovou rychlostí, v případ " -"příliš vysoké a nepřiměřené rychlosti nastavení. Nemůže být nula" +"Toto nastavení znamená, kolik objemu filamentu lze roztavit a extrudováno za sekundu. Rychlost tisku je " +"omezena maximální objemovou rychlostí, v případ příliš vysoké a nepřiměřené rychlosti nastavení. Nemůže " +"být nula" msgid "mm³/s" msgstr "mm³/s" @@ -7871,153 +7696,150 @@ msgid "Filament load time" msgstr "Doba zavádění filamentu" msgid "Time to load new filament when switch filament. For statistics only" -msgstr "" -"Čas na zavedení nového filamentu při výměně filamentu. Pouze pro statistiku" +msgstr "Čas na zavedení nového filamentu při výměně filamentu. Pouze pro statistiku" msgid "Filament unload time" msgstr "Doba vysouvání filamentu" msgid "Time to unload old filament when switch filament. For statistics only" -msgstr "" -"Čas vytažení starého filamentu při výměně filamentu. Pouze pro statistiku" +msgstr "Čas vytažení starého filamentu při výměně filamentu. Pouze pro statistiku" -msgid "" -"Filament diameter is used to calculate extrusion in gcode, so it's important " -"and should be accurate" -msgstr "" -"Průměr filamentu se používá k výpočtu vytlačování v gcode, takže je důležitý " -"a měl by být přesný" +msgid "Filament diameter is used to calculate extrusion in gcode, so it's important and should be accurate" +msgstr "Průměr filamentu se používá k výpočtu vytlačování v gcode, takže je důležitý a měl by být přesný" msgid "Shrinkage" msgstr "Smrštění" #, fuzzy, c-format, boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling " -"(94% if you measure 94mm instead of 100mm). The part will be scaled in xy to " -"compensate. Only the filament used for the perimeter is taken into account.\n" -"Be sure to allow enough space between objects, as this compensation is done " -"after the checks." +"Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead " +"of 100mm). The part will be scaled in xy to compensate. Only the filament used for the perimeter is " +"taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done after the checks." msgstr "" -"Zadejte procento smrštění, které filament získá po ochlazení (94% pokud " -"naměříte 94mm místo 100mm). Část bude pro kompenzaci zmenšena v xy. Bere se " -"v úvahu pouze filamentu použit pro obvod.\n" -"Ujistěte se aby byl mezi objekty dostatek prostoru, protože tato kompenzace " -"se provádí po kontrolách." +"Zadejte procento smrštění, které filament získá po ochlazení (94% pokud naměříte 94mm místo 100mm). " +"Část bude pro kompenzaci zmenšena v xy. Bere se v úvahu pouze filamentu použit pro obvod.\n" +"Ujistěte se aby byl mezi objekty dostatek prostoru, protože tato kompenzace se provádí po kontrolách." msgid "Loading speed" -msgstr "" +msgstr "Rychlost zavádění" msgid "Speed used for loading the filament on the wipe tower." -msgstr "" +msgstr "Rychlost použitá pro zavádění filamentu na čistící věž." msgid "Loading speed at the start" -msgstr "" +msgstr "Počáteční rychlost zavádění" msgid "Speed used at the very beginning of loading phase." -msgstr "" +msgstr "Rychlost použitá na samém počátku zaváděcí fáze." msgid "Unloading speed" -msgstr "" +msgstr "Rychlost vysunutí" msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming)." +"Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just " +"after ramming)." msgstr "" +"Rychlost vysouvání filamentu při výměně na čistící věži (úvodní část vysunutí okamžitě po rapidní " +"extruzi není ovlivněna)." msgid "Unloading speed at the start" -msgstr "" +msgstr "Počáteční rychlost vysouvání filamentu" -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming." -msgstr "" +msgid "Speed used for unloading the tip of the filament immediately after ramming." +msgstr "Rychlost použitá při vysouvání špičky filamentu bezprostředně po rapidní extruzi." msgid "Delay after unloading" -msgstr "" +msgstr "Zpoždění po vyjmutí" msgid "" -"Time to wait after the filament is unloaded. May help to get reliable " -"toolchanges with flexible materials that may need more time to shrink to " -"original dimensions." +"Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible " +"materials that may need more time to shrink to original dimensions." msgstr "" +"Doba čekání po vysunutí filamentu. Může pomoci ke spolehlivé změně extruderu s flexibilními materiály, " +"které potřebují více času ke smrštění na původní rozměry." msgid "Number of cooling moves" -msgstr "" +msgstr "Počet chladících pohybů" msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves." -msgstr "" +"Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these " +"moves." +msgstr "Filament je chlazen pohyby tam a zpět v chladicí trubičce. Zadejte požadovaný počet těchto pohybů." msgid "Speed of the first cooling move" -msgstr "" +msgstr "Rychlost prvního pohybu chlazení" msgid "Cooling moves are gradually accelerating beginning at this speed." -msgstr "" +msgstr "Chladicí pohyby se postupně zrychlují a začínají touto rychlostí." msgid "Minimal purge on wipe tower" msgstr "Minimální vytlačený objem na čistící věži" msgid "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, " +"and the filament pressure is likely not yet stable. Before purging the print head into an infill or a " +"sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce " +"successive infill or sacrificial object extrusions reliably." msgstr "" -"Po výměně nástroje nemusí být známa přesná poloha nově zavedeného filamentu " -"uvnitř trysky a tlak filamentu pravděpodobně ještě není stabilní. Před " -"vyčištěním tiskové hlavy do výplně nebo do objektu bude Slic3r toto množství " -"materiálu vždy vytlačovat do čistící věže, aby se spolehlivě vytvořily " +"Po výměně nástroje nemusí být známa přesná poloha nově zavedeného filamentu uvnitř trysky a tlak " +"filamentu pravděpodobně ještě není stabilní. Před vyčištěním tiskové hlavy do výplně nebo do objektu " +"bude Slic3r toto množství materiálu vždy vytlačovat do čistící věže, aby se spolehlivě vytvořily " "následné výplně nebo objekty." msgid "Speed of the last cooling move" -msgstr "" +msgstr "Rychlost posledního pohybu chlazení" msgid "Cooling moves are gradually accelerating towards this speed." -msgstr "" +msgstr "Chladící pohyby se postupně zrychlují až k této rychlosti." msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." +"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool " +"change (when executing the T code). This time is added to the total print time by the G-code time " +"estimator." msgstr "" +"Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) zavádí nový filament během jeho " +"výměny (při provádění kódu T). Tento čas je přidán k celkové době tisku pomocí G-code odhadovače " +"tiskového času." msgid "Ramming parameters" +msgstr "Parametry rapidní extruze" + +msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "" +"Tento řetězec je upravován dialogem RammingDialog a obsahuje specifické parametry pro rapidní extruzi." msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters." -msgstr "" - -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." +"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change " +"(when executing the T code). This time is added to the total print time by the G-code time estimator." msgstr "" +"Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) vysouvá filament během jeho výměny " +"(při provádění kódu T). Tento čas je přidán k celkové době tisku pomocí G-code odhadovače tiskového času." msgid "Enable ramming for multitool setups" -msgstr "" +msgstr "Povolení rapidní extruze tiskárny s více nástroji" msgid "" -"Perform ramming when using multitool 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 " -"toolchange. This option is only used when the wipe tower is enabled." +"Perform ramming when using multitool 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 toolchange. This option is only used when the wipe tower is enabled." msgstr "" +"Provedení rapidní extruze při použití tiskárny s více nástroji (tj. když není v nastavení tiskárny " +"zaškrtnuto políčko Single Extruder Multimaterial). Pokud je tato možnost zaškrtnuta, je na čistící věži " +"těsně před výměnou nástroje rychle vytlačeno malé množství filamentu. Tato volba se uplatní pouze tehdy, " +"když je povolena čistící věž." msgid "Multitool ramming volume" -msgstr "" +msgstr "Objem rapidní extruze pro tiskárnu s více nástroji" msgid "The volume to be rammed before the toolchange." -msgstr "" +msgstr "Objem, který se má před výměnou nástroje extrudovat." msgid "Multitool ramming flow" -msgstr "" +msgstr "Průtok při rapidní extruzi pro více nástrojů" msgid "Flow used for ramming the filament before the toolchange." -msgstr "" +msgstr "Průtok pro rapidní extruzi před výměnou nástroje." msgid "Density" msgstr "Hustota" @@ -8034,28 +7856,20 @@ msgstr "Typ materiálu filamentu" msgid "Soluble material" msgstr "Rozpustný materiál" -msgid "" -"Soluble material is commonly used to print support and support interface" -msgstr "" -"Rozpustný materiál se běžně používá k tisku podpěr a kontaktní vrstvy podpěr" +msgid "Soluble material is commonly used to print support and support interface" +msgstr "Rozpustný materiál se běžně používá k tisku podpěr a kontaktní vrstvy podpěr" msgid "Support material" msgstr "Podpěry" -msgid "" -"Support material is commonly used to print support and support interface" -msgstr "" -"Materiál podpěr se běžně používá k tisku podpěr a kontaktní vrstvy podpěr" +msgid "Support material is commonly used to print support and support interface" +msgstr "Materiál podpěr se běžně používá k tisku podpěr a kontaktní vrstvy podpěr" msgid "Temperature of vitrificaiton" msgstr "Teplota vitrifikace" -msgid "" -"Material becomes soft at this temperature. Thus the heatbed cannot be hotter " -"than this tempature" -msgstr "" -"Materiál při této teplotě změkne. Vyhřívaná podložka tedy nemůže být " -"teplejší než tato teplota" +msgid "Material becomes soft at this temperature. Thus the heatbed cannot be hotter than this tempature" +msgstr "Materiál při této teplotě změkne. Vyhřívaná podložka tedy nemůže být teplejší než tato teplota" msgid "Price" msgstr "Cena" @@ -8078,11 +7892,8 @@ msgstr "(Nedefinováno)" msgid "Infill direction" msgstr "Směr výplně" -msgid "" -"Angle for sparse infill pattern, which controls the start or main direction " -"of line" -msgstr "" -"Úhel pro vzor vnitřní výplně, který řídí začátek nebo hlavní směr linky" +msgid "Angle for sparse infill pattern, which controls the start or main direction of line" +msgstr "Úhel pro vzor vnitřní výplně, který řídí začátek nebo hlavní směr linky" msgid "Sparse infill density" msgstr "Hustota vnitřní výplně" @@ -8131,25 +7942,20 @@ msgid "Sparse infill anchor length" msgstr "Délka kotvy vnitřní výplně" msgid "" -"Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" -"Set this parameter to zero to disable anchoring perimeters connected to a " -"single infill line." +"Connect an infill line to an internal perimeter with a short segment of an additional perimeter. If " +"expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to " +"connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than " +"infill_anchor_max is found, the infill line is connected to a perimeter segment at just one side and the " +"length of the perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a single infill line." msgstr "" -"Připojení výplně k vnitřnímu perimetru krátkým segmentem dalšího perimetru. " -"Pokud je vyjádřeno v procentech (příklad: 15%), vypočítává se z šířky " -"extruze výplně. PrusaSlicer se pokouší spojit dvě blízké výplňová čáry " -"krátkým obvodovým perimetrem. Pokud není nalezen žádný takový obvodový " -"perimetr kratší než infill_anchor_max, je výplňová čára spojena s obvodovým " -"perimetrem pouze na jedné straně a délka odebraného obvodového perimetru je " -"omezena na tento parametr, ale ne dále než anchor_length_max. \n" -"Nastavením tohoto parametru na nulu deaktivujete kotvící perimetry připojené " -"k jedné výplňové čáře." +"Připojení výplně k vnitřnímu perimetru krátkým segmentem dalšího perimetru. Pokud je vyjádřeno v " +"procentech (příklad: 15%), vypočítává se z šířky extruze výplně. PrusaSlicer se pokouší spojit dvě " +"blízké výplňová čáry krátkým obvodovým perimetrem. Pokud není nalezen žádný takový obvodový perimetr " +"kratší než infill_anchor_max, je výplňová čára spojena s obvodovým perimetrem pouze na jedné straně a " +"délka odebraného obvodového perimetru je omezena na tento parametr, ale ne dále než anchor_length_max. \n" +"Nastavením tohoto parametru na nulu deaktivujete kotvící perimetry připojené k jedné výplňové čáře." msgid "0 (no open anchors)" msgstr "0 (žádné otevřené kotvy)" @@ -8161,25 +7967,21 @@ msgid "Maximum length of the infill anchor" msgstr "Maximální délka výplňové kotvy" msgid "" -"Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" -"If set to 0, the old algorithm for infill connection will be used, it should " -"create the same result as with 1000 & 0." +"Connect an infill line to an internal perimeter with a short segment of an additional perimeter. If " +"expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to " +"connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than " +"this parameter is found, the infill line is connected to a perimeter segment at just one side and the " +"length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should create the same result as " +"with 1000 & 0." msgstr "" -"Připojení výplně k vnitřnímu perimetru krátkým segmentem dalšího perimetru. " -"Pokud je vyjádřeno v procentech (příklad: 15%), vypočítává se z šířky " -"extruze výplně. OrcaSlicer se pokouší spojit dvě blízké výplňová linky " -"krátkým obvodovým perimetrem. Pokud není nalezen žádný takový obvodový " -"perimetr kratší než tento parametr, je výplňová čára spojena s obvodovým " -"perimetrem pouze na jedné straně a délka odebraného obvodového perimetru je " -"omezena na infill_anchor, ale ne delší než tento parametr. \n" -" Pokud je nastaveno na 0, použije se starý algoritmus pro výplň připojení, " -"měl by vytvořit stejný výsledek jako s 1000 & 0." +"Připojení výplně k vnitřnímu perimetru krátkým segmentem dalšího perimetru. Pokud je vyjádřeno v " +"procentech (příklad: 15%), vypočítává se z šířky extruze výplně. OrcaSlicer se pokouší spojit dvě blízké " +"výplňová linky krátkým obvodovým perimetrem. Pokud není nalezen žádný takový obvodový perimetr kratší " +"než tento parametr, je výplňová čára spojena s obvodovým perimetrem pouze na jedné straně a délka " +"odebraného obvodového perimetru je omezena na infill_anchor, ale ne delší než tento parametr. \n" +" Pokud je nastaveno na 0, použije se starý algoritmus pro výplň připojení, měl by vytvořit stejný " +"výsledek jako s 1000 & 0." msgid "0 (Simple connect)" msgstr "0 (Jednoduché spojení)" @@ -8193,47 +7995,38 @@ msgstr "Zrychlení vnitřních stěn" msgid "Acceleration of travel moves" msgstr "Zrychlení cestovních pohybů" -msgid "" -"Acceleration of top surface infill. Using a lower value may improve top " -"surface quality" -msgstr "" -"Zrychlení výplně horního povrchu. Použití nižší hodnoty může zlepšit kvalitu " -"povrchu" +msgid "Acceleration of top surface infill. Using a lower value may improve top surface quality" +msgstr "Zrychlení výplně horního povrchu. Použití nižší hodnoty může zlepšit kvalitu povrchu" msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "Zrychlení vnější stěny. Použití nižší hodnoty může zlepšit kvalitu" msgid "" -"Acceleration of bridges. If the value is expressed as a percentage (e.g. " -"50%), it will be calculated based on the outer wall acceleration." +"Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be calculated " +"based on the outer wall acceleration." msgstr "" -"Zrychlení mostů. Pokud je hodnota vyjádřena v procentech (např. 50%), bude " -"vypočítána na základě zrychlení vnější stěny." +"Zrychlení mostů. Pokud je hodnota vyjádřena v procentech (např. 50%), bude vypočítána na základě " +"zrychlení vnější stěny." msgid "mm/s² or %" msgstr "mm/s² or %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it will be " +"calculated based on the default acceleration." msgstr "" -"Zrychlení vnitřní výplně. Pokud je hodnota vyjádřena v procentech (např. 100 " -"%), bude vypočítána na základě výchozího zrychlení." +"Zrychlení vnitřní výplně. Pokud je hodnota vyjádřena v procentech (např. 100 %), bude vypočítána na " +"základě výchozího zrychlení." 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." +"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 "" -"Zrychlení vnitřní pevné výplně. Pokud je hodnota vyjádřena v procentech " -"(např. 100 %), bude vypočítána na základě výchozího zrychlení." +"Zrychlení vnitřní pevné výplně. Pokud je hodnota vyjádřena v procentech (např. 100 %), bude vypočítána " +"na základě výchozího zrychlení." -msgid "" -"Acceleration of initial layer. Using a lower value can improve build plate " -"adhensive" -msgstr "" -"Zrychlení počáteční vrstvy. Použití nižší hodnoty může zlepšit lepidlo na " -"vytvoření desky" +msgid "Acceleration of initial layer. Using a lower value can improve build plate adhensive" +msgstr "Zrychlení počáteční vrstvy. Použití nižší hodnoty může zlepšit lepidlo na vytvoření desky" msgid "Enable accel_to_decel" msgstr "Povolit accel_to_decel" @@ -8244,9 +8037,13 @@ msgstr "Klipper max_accel_to_decel bude upraven automaticky" msgid "accel_to_decel" msgstr "accel_to_decel" -#, fuzzy, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" -msgstr "Klipper max_accel_to_decel bude upraven na toto % zrychlení" +#, c-format, boost-format +msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "Klipper max_accel_to_decel bude upraven na toto %% o zrychlení" + +#, c-format, boost-format +msgid "%%" +msgstr "%%" msgid "Jerk of outer walls" msgstr "Jerk-Ryv na vnější stěny" @@ -8266,22 +8063,16 @@ msgstr "Jerk-Ryv pro první vrstvu" msgid "Jerk for travel" msgstr "Jerk-Ryv pro cestování" -msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over " -"the nozzle diameter." -msgstr "" -"Šířka extruze pro první vrstvu. Pokud je vyjádřena jako %, vypočítá se " -"vzhledem k průměru trysky." +msgid "Line width of initial layer. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Šířka extruze pro první vrstvu. Pokud je vyjádřena jako %, vypočítá se vzhledem k průměru trysky." msgid "Initial layer height" msgstr "Výška první vrstvy" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" -msgstr "" -"Výška první vrstvy. Mírně tlustá první vrstva může zlepšit přilnavost k " -"podložce" +"Height of initial layer. Making initial layer height to be thick slightly can improve build plate " +"adhension" +msgstr "Výška první vrstvy. Mírně tlustá první vrstva může zlepšit přilnavost k podložce" msgid "Speed of initial layer except the solid infill part" msgstr "Rychlost první vrstvy kromě plné výplně" @@ -8302,11 +8093,11 @@ msgid "Number of slow layers" msgstr "Počet pomalých vrstev" 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." +"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 "" -"První několik vrstev se tiskne pomaleji než obvykle. Rychlost se postupně " -"zvyšuje lineárně během určeného počtu vrstev." +"První několik vrstev se tiskne pomaleji než obvykle. Rychlost se postupně zvyšuje lineárně během " +"určeného počtu vrstev." msgid "Initial layer nozzle temperature" msgstr "Teplota trysky první vrstvy" @@ -8318,38 +8109,35 @@ msgid "Full fan speed at layer" msgstr "Maximální otáčky ventilátoru ve vrstvě" 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." +"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 "" -"Otáčky ventilátoru se lineárně zvýší z nuly ve vrstvě " -"\"close_fan_first_layers\" na maximum ve vrstvě \"full_fan_speed_layer\". " -"Hodnota \"full_fan_speed_layer\" bude ignorována, pokud je nižší než " -"\"close_fan_first_layers\", v takovém případě se bude ventilátor točit na " -"maximální povolenou hodnotu ve vrstvě \"close_fan_first_layers\" + 1." +"Otáčky ventilátoru se lineárně zvýší z nuly ve vrstvě \"close_fan_first_layers\" na maximum ve vrstvě " +"\"full_fan_speed_layer\". Hodnota \"full_fan_speed_layer\" bude ignorována, pokud je nižší než " +"\"close_fan_first_layers\", v takovém případě se bude ventilátor točit na maximální povolenou hodnotu ve " +"vrstvě \"close_fan_first_layers\" + 1." msgid "Support interface fan speed" msgstr "Rychlost ventilátoru kontaktních vrstev podpěr" msgid "" -"This fan speed is enforced during all support interfaces, to be able to " -"weaken their bonding with a high fan speed.\n" +"This fan speed is enforced during all support interfaces, to be able to weaken their bonding with a high " +"fan speed.\n" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." msgstr "" -"Tato rychlost ventilátoru je uplatněna během všech kontaktních vrstev, aby " -"bylo možné oslabit jejich spojení vysokou rychlostí ventilátoru.\n" +"Tato rychlost ventilátoru je uplatněna během všech kontaktních vrstev, aby bylo možné oslabit jejich " +"spojení vysokou rychlostí ventilátoru.\n" "Nastavte hodnotu -1 pro zrušení tohoto přepisu.\n" "Tuto hodnotu lze přepsat pouze pomocí disable_fan_first_layers." msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough " -"look. This setting controls the fuzzy position" +"Randomly jitter while printing the wall, so that the surface has a rough look. This setting controls the " +"fuzzy position" msgstr "" -"Náhodné chvění při tisku na stěnu, takže povrch má hrubý vzhled. Toto " -"nastavení řídí neostrou polohu" +"Náhodné chvění při tisku na stěnu, takže povrch má hrubý vzhled. Toto nastavení řídí neostrou polohu" msgid "None" msgstr "Žádné" @@ -8366,21 +8154,14 @@ msgstr "Všechny stěny" msgid "Fuzzy skin thickness" msgstr "Tloušťka členitého povrchu" -msgid "" -"The width within which to jitter. It's adversed to be below outer wall line " -"width" -msgstr "" -"Šířka, ve které se má chvět. Je nepřípustné, aby byla pod šířkou extruze " -"vnější stěny" +msgid "The width within which to jitter. It's adversed to be below outer wall line width" +msgstr "Šířka, ve které se má chvět. Je nepřípustné, aby byla pod šířkou extruze vnější stěny" msgid "Fuzzy skin point distance" msgstr "Vzdálenosti bodů členitého povrchu" -msgid "" -"The average diatance between the random points introducded on each line " -"segment" -msgstr "" -"Průměrná vzdálenost mezi náhodnými body zavedenými na každém segmentu linky" +msgid "The average diatance between the random points introducded on each line segment" +msgstr "Průměrná vzdálenost mezi náhodnými body zavedenými na každém segmentu linky" msgid "Filter out tiny gaps" msgstr "Odfiltrujte drobné mezery" @@ -8388,57 +8169,44 @@ msgstr "Odfiltrujte drobné mezery" msgid "Layers and Perimeters" msgstr "Vrstvy a perimetry" -msgid "" -"Filter out gaps smaller than the threshold specified. This setting won't " -"affect top/bottom layers" +msgid "Filter out gaps smaller than the threshold specified. This setting won't affect top/bottom layers" msgstr "" -"Vyfiltrované mezery menší než stanovený práh. Toto nastavení neovlivní " -"vrstvy horního/spodního povrchu." +"Vyfiltrované mezery menší než stanovený práh. Toto nastavení neovlivní vrstvy horního/spodního povrchu" -msgid "" -"Speed of gap infill. Gap usually has irregular line width and should be " -"printed more slowly" +msgid "Speed of gap infill. Gap usually has irregular line width and should be printed more slowly" msgstr "" -"Rychlost vyplňování mezery. Mezera má obvykle nepravidelnou šířku extruze a " -"měla by být vytištěna pomaleji" +"Rychlost vyplňování mezery. Mezera má obvykle nepravidelnou šířku extruze a měla by být vytištěna " +"pomaleji" msgid "Arc fitting" msgstr "Přizpůsobení oblouku" msgid "" -"Enable this to get a G-code file which has G2 and G3 moves. And the fitting " -"tolerance is same with resolution" +"Enable this to get a G-code file which has G2 and G3 moves. And the fitting tolerance is same with " +"resolution" msgstr "" -"Povolte toto, abyste získali soubor G-kódu, který má pohyby G2 a G3. A " -"tolerance montáže je stejná s rozlišením" +"Povolte toto, abyste získali soubor G-kódu, který má pohyby G2 a G3. A tolerance montáže je stejná s " +"rozlišením" msgid "Add line number" msgstr "Přidat číslo řádku" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" -msgstr "" -"Povolte toto, chcete-li přidat číslo řádku (Nx) na začátek každého řádku G-" -"kódu" +msgstr "Povolte toto, chcete-li přidat číslo řádku (Nx) na začátek každého řádku G-kódu" msgid "Scan first layer" msgstr "Skenovat první vrstvu" -msgid "" -"Enable this to enable the camera on printer to check the quality of first " -"layer" -msgstr "" -"Povolením této možnosti umožníte Kameře na tiskárně kontrolovat kvalitu " -"první vrstvy" +msgid "Enable this to enable the camera on printer to check the quality of first layer" +msgstr "Povolením této možnosti umožníte Kameře na tiskárně kontrolovat kvalitu první vrstvy" msgid "Nozzle type" msgstr "Typ trysky" msgid "" -"The metallic material of nozzle. This determines the abrasive resistance of " -"nozzle, and what kind of filament can be printed" -msgstr "" -"Kovový materiál trysky. To určuje odolnost trysky proti otěru a jaký druh " -"filamentu lze tisknout" +"The metallic material of nozzle. This determines the abrasive resistance of nozzle, and what kind of " +"filament can be printed" +msgstr "Kovový materiál trysky. To určuje odolnost trysky proti otěru a jaký druh filamentu lze tisknout" msgid "Undefine" msgstr "Nedefinováno" @@ -8455,37 +8223,53 @@ msgstr "Mosaz" msgid "Nozzle HRC" msgstr "Tryska HRC" -msgid "" -"The nozzle's hardness. Zero means no checking for nozzle's hardness during " -"slicing." -msgstr "" -"Tvrdost trysky. Nula znamená žádnou kontrolu tvrdosti trysky během slicování." +msgid "The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing." +msgstr "Tvrdost trysky. Nula znamená žádnou kontrolu tvrdosti trysky během slicování." msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "Struktura tiskárny" + +msgid "The physical arrangement and components of a printing device" +msgstr "Fyzické uspořádání a komponenty tiskového zařízení" + +msgid "CoreXY" +msgstr "CoreXY" + +msgid "I3" +msgstr "I3" + +msgid "Hbot" +msgstr "Hbot" + +msgid "Delta" +msgstr "Delta" + +msgid "Best object position" +msgstr "Nejlepší pozice objektu" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "Nejlepší automatická uspořádávací pozice v rozsahu [0,1] vzhledem k tvaru podložky." + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "Povolte tuto možnost, pokud má stroj pomocný chladicí ventilátor" msgid "" -"Start the fan this number of seconds earlier than its target start time (you " -"can use fractional seconds). It assumes infinite acceleration for this time " -"estimation, and will only take into account G1 and G0 moves (arc fitting is " -"unsupported).\n" -"It won't move fan comands from custom gcodes (they act as a sort of " -"'barrier').\n" -"It won't move fan comands into the start gcode if the 'only custom start " -"gcode' is activated.\n" +"Start the fan this number of seconds earlier than its target start time (you can use fractional " +"seconds). It assumes infinite acceleration for this time estimation, and will only take into account G1 " +"and G0 moves (arc fitting is unsupported).\n" +"It won't move fan comands from custom gcodes (they act as a sort of 'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start gcode' is activated.\n" "Use 0 to deactivate." msgstr "" -"Spustit ventilátor po tuto dobu v sekundách před cílovým časem spuštění " -"(můžete použít desetinná čísla). Předpokládá se nekonečné zrychlení pro " -"odhad této doby a budou brány v úvahu pouze pohyby G1 a G0 (křivkové tvary " -"nejsou podporovány).\n" -"Nepřesouvá příkazy ventilátoru z vlastních G-kódů (působí jako druh " -"'bariéry').\n" -"Nepřesouvá příkazy ventilátoru do startovacího G-kódu, pokud je aktivována " -"volba 'pouze vlastní startovací G-kódy'.\n" +"Spustit ventilátor po tuto dobu v sekundách před cílovým časem spuštění (můžete použít desetinná čísla). " +"Předpokládá se nekonečné zrychlení pro odhad této doby a budou brány v úvahu pouze pohyby G1 a G0 " +"(křivkové tvary nejsou podporovány).\n" +"Nepřesouvá příkazy ventilátoru z vlastních G-kódů (působí jako druh 'bariéry').\n" +"Nepřesouvá příkazy ventilátoru do startovacího G-kódu, pokud je aktivována volba 'pouze vlastní " +"startovací G-kódy'.\n" "Pro deaktivaci použijte hodnotu 0." msgid "Only overhangs" @@ -8498,19 +8282,39 @@ msgid "Fan kick-start time" msgstr "Čas spuštění ventilátoru" msgid "" -"Emit a max fan speed command for this amount of seconds before reducing to " -"target speed to kick-start the cooling fan.\n" -"This is useful for fans where a low PWM/power may be insufficient to get the " -"fan started spinning from a stop, or to get the fan up to speed faster.\n" +"Emit a max fan speed command for this amount of seconds before reducing to target speed to kick-start " +"the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the fan started spinning from a " +"stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" -"Před snížením na cílovou rychlost vyšlete po tuto dobu příkaz maximální " -"rychlosti ventilátoru, aby se nastartoval chladicí ventilátor.\n" -"To je užitečné pro ventilátory, kde nízké PWM/výkon nemusí stačit k tomu, " -"aby se ventilátor začal točit od zastavení nebo aby se ventilátor rozběhl " -"rychleji.\n" +"Před snížením na cílovou rychlost vyšlete po tuto dobu příkaz maximální rychlosti ventilátoru, aby se " +"nastartoval chladicí ventilátor.\n" +"To je užitečné pro ventilátory, kde nízké PWM/výkon nemusí stačit k tomu, aby se ventilátor začal točit " +"od zastavení nebo aby se ventilátor rozběhl rychleji.\n" "Pro deaktivaci nastavte na 0." +msgid "Time cost" +msgstr "Náklady na čas" + +msgid "The printer cost per hour" +msgstr "Náklady tiskárny za hodinu" + +msgid "money/h" +msgstr "peníze/h" + +msgid "Support control chamber temperature" +msgstr "Podpora řízení teploty komory" + +msgid "This option is enabled if machine support controlling chamber temperature" +msgstr "Tato možnost je povolena, pokud stroj podporuje řízení teploty komory" + +msgid "Support air filtration" +msgstr "Podpora filtrace vzduchu" + +msgid "Enable this if printer support air filtration" +msgstr "Povolte to, pokud tiskárna podporuje filtraci vzduchu" + msgid "G-code flavor" msgstr "Druh G-kódu" @@ -8524,15 +8328,13 @@ msgid "Label objects" msgstr "Označování objektů" msgid "" -"Enable this to add comments into the G-Code labeling print moves with what " -"object they belong to, which is useful for the Octoprint CancelObject " -"plugin. This settings is NOT compatible with Single Extruder Multi Material " -"setup and Wipe into Object / Wipe into Infill." +"Enable this to add comments into the G-Code labeling print moves with what object they belong to, which " +"is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder " +"Multi Material setup and Wipe into Object / Wipe into Infill." msgstr "" -"Zapněte tuto možnost, chcete-li do G-kódu přidávat komentáře, které budou " -"určovat, příslušnost tiskových pohybů k jednotlivým objektům. To je užitečné " -"pro Octoprint plugin CancelObject. Nastavení NENÍ kompatibilní se Single " -"Extruder Multi Material konfigurací a s čištěním trysky do objektu / výplně." +"Zapněte tuto možnost, chcete-li do G-kódu přidávat komentáře, které budou určovat, příslušnost tiskových " +"pohybů k jednotlivým objektům. To je užitečné pro Octoprint plugin CancelObject. Nastavení NENÍ " +"kompatibilní se Single Extruder Multi Material konfigurací a s čištěním trysky do objektu / výplně." msgid "Exclude objects" msgstr "Vynechat objekty" @@ -8544,43 +8346,39 @@ msgid "Verbose G-code" msgstr "Komentáře do G-kódu" msgid "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." +"Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print " +"from SD card, the additional weight of the file could make your firmware slow down." msgstr "" -"Aktivací získáte komentovaný soubor G-kódu, přičemž každý řádek je doplněn " -"popisným textem. Pokud tisknete z SD karty, dodatečné informace v souboru " -"můžou zpomalit firmware." +"Aktivací získáte komentovaný soubor G-kódu, přičemž každý řádek je doplněn popisným textem. Pokud " +"tisknete z SD karty, dodatečné informace v souboru můžou zpomalit firmware." msgid "Infill combination" msgstr "Kombinace výplně" msgid "" -"Automatically Combine sparse infill of several layers to print together to " -"reduce time. Wall is still printed with original layer height." +"Automatically Combine sparse infill of several layers to print together to reduce time. Wall is still " +"printed with original layer height." msgstr "" -"Automaticky zkombinujte vnitřní výplň několika vrstev pro tisk dohromady, " -"abyste zkrátili čas. Stěna se stále tiskne s původní výškou vrstvy." +"Automaticky zkombinujte vnitřní výplň několika vrstev pro tisk dohromady, abyste zkrátili čas. Stěna se " +"stále tiskne s původní výškou vrstvy." msgid "Filament to print internal sparse infill." msgstr "Filament pro tisk vnitřní výplně." msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal sparse infill. If expressed as a %, it will be computed over the nozzle diameter." msgstr "" -"Šířka extruze pro vnitřní výplně. Pokud je vyjádřena jako %, vypočítá se " -"vzhledem k průměru trysky." +"Šířka extruze pro vnitřní výplně. Pokud je vyjádřena jako %, vypočítá se vzhledem k průměru trysky." msgid "Infill/Wall overlap" msgstr "Výplň/Přesah stěny" msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. " -"The percentage value is relative to line width of sparse infill" +"Infill area is enlarged slightly to overlap with wall for better bonding. The percentage value is " +"relative to line width of sparse infill" msgstr "" -"Oblast výplně je mírně zvětšena, aby se překrývala se stěnou pro lepší " -"lepení. Procentuální hodnota je vztažena k šířce extruze vnitřní výplně" +"Oblast výplně je mírně zvětšena, aby se překrývala se stěnou pro lepší lepení. Procentuální hodnota je " +"vztažena k šířce extruze vnitřní výplně" msgid "Speed of internal sparse infill" msgstr "Rychlost vnitřní výplně" @@ -8589,23 +8387,21 @@ msgid "Interface shells" msgstr "Mezilehlé stěny" msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" +"Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder " +"prints with translucent materials or manual soluble support material" msgstr "" -"Vynucení vytváření pevných skořepin mezi sousedními materiály/objemy. " -"Užitečné pro tisk s více extrudery s průsvitnými materiály nebo ručně " -"rozpustným podpůrným materiálem" +"Vynucení vytváření pevných skořepin mezi sousedními materiály/objemy. Užitečné pro tisk s více extrudery " +"s průsvitnými materiály nebo ručně rozpustným podpůrným materiálem" msgid "Ironing Type" msgstr "Způsob žehlení" msgid "" -"Ironing is using small flow to print on same height of surface again to make " -"flat surface more smooth. This setting controls which layer being ironed" +"Ironing is using small flow to print on same height of surface again to make flat surface more smooth. " +"This setting controls which layer being ironed" msgstr "" -"Žehlení využívá malý průtok k tisku na stejnou výšku povrchu, aby byl rovný " -"povrch hladší. Toto nastavení určuje, která vrstva se bude žehlit" +"Žehlení využívá malý průtok k tisku na stejnou výšku povrchu, aby byl rovný povrch hladší. Toto " +"nastavení určuje, která vrstva se bude žehlit" msgid "No ironing" msgstr "Nežehlit" @@ -8626,12 +8422,11 @@ msgid "Ironing flow" msgstr "Průtok žehlení" msgid "" -"The amount of material to extrude during ironing. Relative to flow of normal " -"layer height. Too high value results in overextrusion on the surface" +"The amount of material to extrude during ironing. Relative to flow of normal layer height. Too high " +"value results in overextrusion on the surface" msgstr "" -"Množství materiálu, které se má vytlačit během žehlení. V poměru k průtoku " -"normální výšky vrstvy. Příliš vysoká hodnota vede k nadměrnému vytlačování " -"na povrchu" +"Množství materiálu, které se má vytlačit během žehlení. V poměru k průtoku normální výšky vrstvy. Příliš " +"vysoká hodnota vede k nadměrnému vytlačování na povrchu" msgid "Ironing line spacing" msgstr "Řádkování žehlení" @@ -8651,19 +8446,14 @@ msgstr "Tato část gcode je vložena při každé změně vrstvy po zvednutí z msgid "Supports silent mode" msgstr "Podporuje tichý režim" -msgid "" -"Whether the machine supports silent mode in which machine use lower " -"acceleration to print" -msgstr "" -"Zda stroj podporuje tichý režim, ve kterém stroj používá k tisku nižší " -"zrychlení" +msgid "Whether the machine supports silent mode in which machine use lower acceleration to print" +msgstr "Zda stroj podporuje tichý režim, ve kterém stroj používá k tisku nižší zrychlení" msgid "" -"This G-code will be used as a code for the pause print. User can insert " -"pause G-code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert pause G-code in gcode viewer" msgstr "" -"Tento G-kód bude použit jako kód pro pozastavený tisk. Uživatel může vložit " -"pauzu G-kód do prohlížeče gcode" +"Tento G-kód bude použit jako kód pro pozastavený tisk. Uživatel může vložit pauzu G-kód do prohlížeče " +"gcode" msgid "This G-code will be used as a custom code" msgstr "Tento G-kód bude použit jako vlastní kód" @@ -8771,50 +8561,110 @@ msgid "Maximum acceleration for travel" msgstr "Maximální zrychlení pro cestování" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" -msgstr "" - -msgid "Fan speed" -msgstr "Rychlost ventilátoru" +msgstr "Maximální zrychlení pro cestování (M204 T), platí pouze pro Marlin 2" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This " -"is the maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This is the maximum speed " +"limitation of part cooling fan" msgstr "" -"Rychlost ventilátoru chlazení součásti může být zvýšena, když je povoleno " -"automatické chlazení. Toto je omezení maximální rychlosti ventilátoru " -"chlazení součásti" +"Rychlost ventilátoru chlazení součásti může být zvýšena, když je povoleno automatické chlazení. Toto je " +"omezení maximální rychlosti ventilátoru chlazení součásti" msgid "Max" msgstr "Max" msgid "" -"The largest printable layer height for extruder. Used tp limits the maximum " -"layer hight when enable adaptive layer height" +"The largest printable layer height for extruder. Used tp limits the maximum layer hight when enable " +"adaptive layer height" +msgstr "" +"Největší výška tisknutelné vrstvy pro extruder. Používá se k omezení maximální výšky vrstvy při povolení " +"adaptivní výšky vrstvy" + +msgid "Extrusion rate smoothing" +msgstr "Zjemňování extruze" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when the printer transitions from " +"printing a high flow (high speed/larger width) extrusion to a lower flow (lower speed/smaller width) " +"extrusion and vice versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec can change over time. " +"Higher values mean higher extrusion rate changes are allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or Voron) this value is usually not " +"needed. However it can provide some marginal benefit in certain cases where feature speeds vary greatly. " +"For example, when there are aggressive slowdowns due to overhangs. In these cases a high value of around " +"300-350mm3/s2 is recommended as this allows for just enough smoothing to assist pressure advance achieve " +"a smoother flow transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much lower. A value of 10-15mm3/s2 " +"is a good starting point for direct drive extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" +"Tento parametr zjemňuje náhlé změny extruzního toku, ke kterým dochází při přechodu tiskárny z tisku s " +"vysokým průtokem (vysokou rychlostí/větší šířkou) extruze na tisk s nižším průtokem (nižší rychlostí/" +"menší šířkou) extruze a obráceně.\n" +"\n" +"Definuje maximální rychlost, jakou se může objemový průtok extrudovaný v mm3/s měnit v čase. Vyšší " +"hodnoty znamenají, že jsou povoleny vyšší změny extruzní rychlosti, což vede k rychlejším přechodům " +"rychlosti.\n" +"\n" +"Hodnota 0 tuto funkci vypíná. \n" +"\n" +"Pro tiskárny s vysokou rychlostí a vysokým průtokem přímého pohonu (např. Bambu lab nebo Voron) tato " +"hodnota obvykle není potřebná. Avšak v některých případech, kdy se rychlosti prvků velmi liší, může " +"poskytnout marginální přínos. Například při agresivním zpomalení kvůli přesahům. V těchto případech se " +"doporučuje vysoká hodnota kolem 300-350 mm3/s2, protože to umožní právě dostatečné zjemnění pro pomoc " +"předstihu tlaku (PA) k dosažení plynulejšího přechodu průtoku.\n" +"\n" +"Pro pomalejší tiskárny bez předstihu tlaku (PA) by měla být hodnota nastavena mnohem nižší. Pro " +"extrudery s přímým pohonem je dobrým výchozím bodem hodnota 10-15 mm3/s2 a pro styl Bowden 5-10 mm3/" +"s2. \n" +"\n" +"Tato funkce je známá jako Pressure Equalizer v Prusa slicer.\n" +"\n" +"Poznámka: Tento parametr vypíná arc fitting." + +msgid "mm³/s²" +msgstr "mm³/s²" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this results in a significantly " +"larger gcode file and more instructions for the printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, increase this value to " +"reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" msgstr "" -"Největší výška tisknutelné vrstvy pro extruder. Používá se k omezení " -"maximální výšky vrstvy při povolení adaptivní výšky vrstvy" msgid "Minimum speed for part cooling fan" msgstr "Minimální rychlost ventilátoru chlazení dílů" 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" +"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" msgstr "" -"Rychlost chladicího ventilátoru pomocné části. Pomocný ventilátor poběží " -"touto rychlostí během tisku kromě prvních několika vrstev, které nejsou " -"definovány žádnými chladicími vrstvami" +"Rychlost chladicího ventilátoru pomocné části. Pomocný ventilátor poběží touto rychlostí během tisku " +"kromě prvních několika vrstev, které nejsou definovány žádnými chladicími vrstvami" msgid "Min" msgstr "Min" msgid "" -"The lowest printable layer height for extruder. Used tp limits the minimum " -"layer hight when enable adaptive layer height" +"The lowest printable layer height for extruder. Used tp limits the minimum layer hight when enable " +"adaptive layer height" msgstr "" -"Nejnižší výška tisknutelné vrstvy pro extruder. Používá se k omezení " -"minimální výšky vrstvy při povolení adaptivní výšky vrstvy" +"Nejnižší výška tisknutelné vrstvy pro extruder. Používá se k omezení minimální výšky vrstvy při povolení " +"adaptivní výšky vrstvy" msgid "Min print speed" msgstr "Minimální rychlost tisku" @@ -8829,22 +8679,17 @@ msgid "Diameter of nozzle" msgstr "Průměr trysky" msgid "Configuration notes" -msgstr "" +msgstr "Poznámky k nastavení" -msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." -msgstr "" +msgid "You can put here your personal notes. This text will be added to the G-code header comments." +msgstr "Zde můžete zadat své osobní poznámky. Tento text bude přidán do komentáře záhlaví G-kódu." msgid "Host Type" msgstr "Typ tiskového serveru" -msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." +msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." msgstr "" -"Slic3r může nahrát soubory G-kódu do tiskového serveru. Toto pole musí " -"obsahovat druh tiskového serveru." +"Slic3r může nahrát soubory G-kódu do tiskového serveru. Toto pole musí obsahovat druh tiskového serveru." msgid "Nozzle volume" msgstr "Objem trysky" @@ -8853,43 +8698,49 @@ msgid "Volume of nozzle between the cutter and the end of nozzle" msgstr "Objem trysky mezi frézou a koncem trysky" msgid "Cooling tube position" -msgstr "" +msgstr "Pozice chladící trubičky" msgid "Distance of the center-point of the cooling tube from the extruder tip." -msgstr "" +msgstr "Vzdálenost ze středu chladící trubičky ke špičce extruderu." msgid "Cooling tube length" -msgstr "" +msgstr "Délka chladící trubičky" msgid "Length of the cooling tube to limit space for cooling moves inside it." -msgstr "" +msgstr "Délka kovové trubičky určené pro ochlazení a zformování filamentu po vytažení z extruderu." msgid "High extruder current on filament swap" -msgstr "" +msgstr "Zvýšený proud do extruderového motoru při výměně filamentu" msgid "" -"It may be beneficial to increase the extruder motor current during the " -"filament exchange sequence to allow for rapid ramming feed rates and to " -"overcome resistance when loading a filament with an ugly shaped tip." +"It may be beneficial to increase the extruder motor current during the filament exchange sequence to " +"allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly " +"shaped tip." msgstr "" +"Může být užitečné zvýšit proud motoru extruderu během sekvence výměny filamentu, aby se umožnily vysoké " +"rychlosti zavádění filamentu a aby se překonal odpor při zavádění filamentu s ošklivě tvarovanou špičkou." msgid "Filament parking position" -msgstr "" +msgstr "Parkovací pozice filamentu" msgid "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware." +"Distance of the extruder tip from the position where the filament is parked when unloaded. This should " +"match the value in printer firmware." msgstr "" +"Vzdálenost špičky extruderu od místa, kde je zaparkován filament při vytažení. Měla by se shodovat s " +"hodnotou ve firmware tiskárny." msgid "Extra loading distance" -msgstr "" +msgstr "Extra délka při zavádění" msgid "" -"When set to zero, the distance the filament is moved from parking position " -"during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading." +"When set to zero, the distance the filament is moved from parking position during load is exactly the " +"same as it was moved back during unload. When positive, it is loaded further, if negative, the loading " +"move is shorter than unloading." msgstr "" +"Když je hodnota nastavena na nulu, vzdálenost o kterou se filament posune během zavádění, je stejná, " +"jako zpětný posun během vysouvání filamentu. Je-li hodnota kladná, je filament posunut více,. Je-li " +"hodnota záporná, posun při zavádění je kratší než při vysouvání." msgid "Start end points" msgstr "Začátek konec body" @@ -8901,13 +8752,12 @@ msgid "Reduce infill retraction" msgstr "Omezení retrakcí ve výplni" msgid "" -"Don't retract when the travel is in infill area absolutely. 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" +"Don't retract when the travel is in infill area absolutely. 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" msgstr "" -"Omezte retrakce, když je pohyb v oblasti výplně absolutně. To znamená, že " -"vytékání není vidět. To může zkrátit dobu retrakcí u složitého modelu a " -"ušetřit čas tisku, ale zpomalit krájení a generování G-kódu" +"Omezte retrakce, když je pohyb v oblasti výplně absolutně. To znamená, že vytékání není vidět. To může " +"zkrátit dobu retrakcí u složitého modelu a ušetřit čas tisku, ale zpomalit krájení a generování G-kódu" msgid "Enable" msgstr "Zapnout" @@ -8928,23 +8778,21 @@ msgid "Make overhang printable maximum angle" msgstr "Umožnit tisk převisů maximálního úhlu" msgid "" -"Maximum angle of overhangs to allow after making more steep overhangs " -"printable.90° will not change the model at all and allow any overhang, while " -"0 will replace all overhangs with conical material." +"Maximum angle of overhangs to allow after making more steep overhangs printable.90° will not change the " +"model at all and allow any overhang, while 0 will replace all overhangs with conical material." msgstr "" -"Maximální úhel převisů, který bude povolen pro umožnění tisku strmějších " -"převisů. 90° nezmění model vůbec a umožní jakýkoli převis, zatímco 0 nahradí " -"všechny převisy kuželovým materiálem." +"Maximální úhel převisů, který bude povolen pro umožnění tisku strmějších převisů. 90° nezmění model " +"vůbec a umožní jakýkoli převis, zatímco 0 nahradí všechny převisy kuželovým materiálem." msgid "Make overhang printable hole area" -msgstr "Oblast otvoru pro tisk převisu bez podpěr." +msgstr "Oblast otvoru pro tisk převisu bez podpěr" msgid "" -"Maximum area of a hole in the base of the model before it's filled by " -"conical material.A value of 0 will fill all the holes in the model base." +"Maximum area of a hole in the base of the model before it's filled by conical material.A value of 0 will " +"fill all the holes in the model base." msgstr "" -"Maximální plocha otvoru v základně modelu před tím, než bude vyplněna " -"kuželovým materiálem. Hodnota 0 vyplní všechny díry v základně modelu." +"Maximální plocha otvoru v základně modelu před tím, než bude vyplněna kuželovým materiálem. Hodnota 0 " +"vyplní všechny díry v základně modelu." msgid "mm²" msgstr "mm²" @@ -8954,18 +8802,14 @@ msgstr "Detekovat převisy stěn" #, c-format, boost-format msgid "" -"Detect the overhang percentage relative to line width and use different " -"speed to print. For 100%% overhang, bridge speed is used." +"Detect the overhang percentage relative to line width and use different speed to print. For 100%% " +"overhang, bridge speed is used." msgstr "" -"Zjistěte procento převisů vzhledem k šířce extruze a použijte jinou rychlost " -"tisku. Pro 100%% převisy se použije rychlost mostu." +"Zjistěte procento převisů vzhledem k šířce extruze a použijte jinou rychlost tisku. Pro 100%% převisy se " +"použije rychlost mostu." -msgid "" -"Line width of inner wall. If expressed as a %, it will be computed over the " -"nozzle diameter." -msgstr "" -"Šířka extruze vnitřní stěny. Pokud je vyjádřena jako %, vypočítá se vzhledem " -"k průměru trysky." +msgid "Line width of inner wall. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Šířka extruze vnitřní stěny. Pokud je vyjádřena jako %, vypočítá se vzhledem k průměru trysky." msgid "Speed of inner wall" msgstr "Rychlost vnitřní stěny" @@ -8974,22 +8818,19 @@ msgid "Number of walls of every layer" msgstr "Počet perimetrů/stěn každé vrstvy" msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." +"If you want to process the output G-code through custom scripts, just list their absolute paths here. " +"Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file " +"as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "" -"Pokud chcete výstupní G-kód zpracovat pomocí vlastních skriptů, stačí zde " -"uvést jejich absolutní cesty. Více skriptů oddělte středníkem. Skriptu bude " -"předána absolutní cesta k souboru G-kódu jako první argument a mohou přístup " -"k nastavení konfigurace Slic3r čtením proměnných prostředí." +"Pokud chcete výstupní G-kód zpracovat pomocí vlastních skriptů, stačí zde uvést jejich absolutní cesty. " +"Více skriptů oddělte středníkem. Skriptu bude předána absolutní cesta k souboru G-kódu jako první " +"argument a mohou přístup k nastavení konfigurace Slic3r čtením proměnných prostředí." msgid "Printer notes" -msgstr "" +msgstr "Poznámky o tiskárně" msgid "You can put your notes regarding the printer here." -msgstr "" +msgstr "Zde můžete uvést poznámky týkající se tiskárny." msgid "Raft contact Z distance" msgstr "Mezera mezi objektem a raftem v ose Z" @@ -9013,43 +8854,35 @@ msgid "Initial layer expansion" msgstr "Rozšíření první vrstvy" msgid "Expand the first raft or support layer to improve bed plate adhesion" -msgstr "" -"Rozšiřte první raft nebo podpůrnou vrstvu pro zlepšení přilnavosti k podložce" +msgstr "Rozšiřte první raft nebo podpůrnou vrstvu pro zlepšení přilnavosti k podložce" msgid "Raft layers" msgstr "Vrstev raftu" msgid "" -"Object will be raised by this number of support layers. Use this function to " -"avoid wrapping when print ABS" +"Object will be raised by this number of support layers. Use this function to avoid wrapping when print " +"ABS" msgstr "" -"Objekt bude zvednut o tento počet podpůrných vrstev. Tuto funkci použijte, " -"abyste se vyhnuli obtékání při tisku ABS" +"Objekt bude zvednut o tento počet podpůrných vrstev. Tuto funkci použijte, abyste se vyhnuli obtékání " +"při tisku ABS" msgid "" -"G-code path is genereated after simplifing the contour of model to avoid too " -"much points and gcode lines in gcode file. Smaller value means higher " -"resolution and more time to slice" +"G-code path is genereated after simplifing the contour of model to avoid too much points and gcode lines " +"in gcode file. Smaller value means higher resolution and more time to slice" msgstr "" -"Cesta G-kódu se generuje po zjednodušení obrysu modelu, aby se předešlo " -"příliš velkému počtu bodů a Linek gcode v souboru gcode. Menší hodnota " -"znamená vyšší rozlišení a více času na slicování" +"Cesta G-kódu se generuje po zjednodušení obrysu modelu, aby se předešlo příliš velkému počtu bodů a " +"Linek gcode v souboru gcode. Menší hodnota znamená vyšší rozlišení a více času na slicování" msgid "Travel distance threshold" msgstr "Hranice cestovní vzdálenosti" -msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" -msgstr "" -"Spusťte retrakci pouze tehdy, když je dráha jízdy delší než tato hraniční " -"hohnota" +msgid "Only trigger retraction when the travel distance is longer than this threshold" +msgstr "Spusťte retrakci pouze tehdy, když je dráha jízdy delší než tato hraniční hohnota" msgid "Retract amount before wipe" msgstr "Délka retrakce před očištěním" -msgid "" -"The length of fast retraction before wipe, relative to retraction length" +msgid "The length of fast retraction before wipe, relative to retraction length" msgstr "Délka rychlé retrakce před očištěním, vzhledem k délce retrakce" msgid "Retract when change layer" @@ -9065,23 +8898,39 @@ msgid "Retraction Length" msgstr "Vzdálenost retrakce" msgid "" -"Some amount of material in extruder is pulled back to avoid ooze during long " -"travel. Set zero to disable retraction" +"Some amount of material in extruder is pulled back to avoid ooze during long travel. Set zero to disable " +"retraction" msgstr "" -"Některé množství materiálu v extruderu je staženo zpět, aby se zabránilo " -"slizu při dlouhém pohybu. Nastavte nulu, abyste zablokovali retrakce" +"Některé množství materiálu v extruderu je staženo zpět, aby se zabránilo slizu při dlouhém pohybu. " +"Nastavte nulu, abyste zablokovali retrakce" msgid "Z hop when retract" msgstr "Z hop při retrakci" msgid "" -"Whenever the retraction is done, the nozzle is lifted a little to create " -"clearance between nozzle and the print. It prevents nozzle from hitting the " -"print when travel move. Using spiral line to lift z can prevent stringing" +"Whenever the retraction is done, the nozzle is lifted a little to create clearance between nozzle and " +"the print. It prevents nozzle from hitting the print when travel move. Using spiral line to lift z can " +"prevent stringing" +msgstr "" +"Kdykoli je retrakce provedena, tryska se trochu zvedne, aby se vytvořila mezera mezi tryskou a tiskem. " +"Zabraňuje tomu, aby tryska zasáhla tisk při pohybu. Použití spirálové linky ke zvednutí z může zabránit " +"stringování" + +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the parameter: \"Z hop upper " +"boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above the parameter: \"Z hop lower " +"boundary\" and is below this value" msgstr "" -"Kdykoli je retrakce provedena, tryska se trochu zvedne, aby se vytvořila " -"mezera mezi tryskou a tiskem. Zabraňuje tomu, aby tryska zasáhla tisk při " -"pohybu. Použití spirálové linky ke zvednutí z může zabránit stringování" msgid "Z hop type" msgstr "Typ Z hop" @@ -9095,32 +8944,21 @@ msgstr "Spirála" msgid "Only lift Z above" msgstr "Zvednout Z pouze nad" -msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z." -msgstr "" -"Zadání kladné hodnoty se zdvih Z uskuteční pouze nad zadanou absolutní " -"hodnotou Z." +msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z." +msgstr "Zadání kladné hodnoty se zdvih Z uskuteční pouze nad zadanou absolutní hodnotou Z." msgid "Only lift Z below" msgstr "Zvednout Z pouze pod" -msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z." -msgstr "" -"Zadání kladné hodnoty se zdvih Z uskuteční pouze pod zadanou absolutní " -"hodnotou Z." +msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z." +msgstr "Zadání kladné hodnoty se zdvih Z uskuteční pouze pod zadanou absolutní hodnotou Z." msgid "On surfaces" msgstr "Na površích" -msgid "" -"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " -"lift Z above/below)." +msgid "Enforce Z Hop behavior. This setting is impacted by the above settings (Only lift Z above/below)." msgstr "" -"Povolit chování Z Hop. Tato volba je ovlivněna výše uvedenými nastaveními " -"(Pouze zvednout Z nad/pod)." +"Povolit chování Z Hop. Tato volba je ovlivněna výše uvedenými nastaveními (Pouze zvednout Z nad/pod)." msgid "All Surfaces" msgstr "Všechny povrchy" @@ -9138,18 +8976,16 @@ msgid "Extra length on restart" msgstr "Extra vzdálenost při návratu" msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." +"When the retraction is compensated after the travel move, the extruder will push this additional amount " +"of filament. This setting is rarely needed." msgstr "" -"Když je retrakce kompenzována po rychloposunu, extruder vytlačuje toto další " -"množství filamentu. Toto nastavení je zřídkakdy potřeba." +"Když je retrakce kompenzována po rychloposunu, extruder vytlačuje toto další množství filamentu. Toto " +"nastavení je zřídkakdy potřeba." msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." -msgstr "" -"Když je retrakce kompenzována po změně nástroje, extruder vytlačuje toto " -"další množství filamentu." +"When the retraction is compensated after changing tool, the extruder will push this additional amount of " +"filament." +msgstr "Když je retrakce kompenzována po změně nástroje, extruder vytlačuje toto další množství filamentu." msgid "Retraction Speed" msgstr "Rychlost Retrakce" @@ -9160,23 +8996,19 @@ msgstr "Rychlost Retrakce" msgid "Deretraction Speed" msgstr "Rychlost Deretrakce" -msgid "" -"Speed for reloading filament into extruder. Zero means same speed with " -"retraction" +msgid "Speed for reloading filament into extruder. Zero means same speed with retraction" msgstr "" -"Rychlost pro opětovné vkládání filamentu do extruderu. Nula znamená stejnou " -"rychlost jako pro retrakce" +"Rychlost pro opětovné vkládání filamentu do extruderu. Nula znamená stejnou rychlost jako pro retrakce" msgid "Use firmware retraction" msgstr "Použít retrakce z firmwaru" msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." +"This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is " +"only supported in recent Marlin." msgstr "" -"Toto experimentální nastavení používá příkazy G10 a G11, aby si firmware " -"poradil s retrakcí. Toto je podporováno pouze v posledních verzích firmwaru " -"Marlin." +"Toto experimentální nastavení používá příkazy G10 a G11, aby si firmware poradil s retrakcí. Toto je " +"podporováno pouze v posledních verzích firmwaru Marlin." msgid "Show auto-calibration marks" msgstr "Zobrazit automatické kalibrační značky" @@ -9203,111 +9035,101 @@ msgid "Staggered inner seams" msgstr "Posunuté vnitřní švy" msgid "" -"This option causes the inner seams to be shifted backwards based on their " -"depth, forming a zigzag pattern." +"This option causes the inner seams to be shifted backwards based on their depth, forming a zigzag " +"pattern." msgstr "" -"Tato možnost způsobí, že vnitřní švy budou posunuty dozadu na základě jejich " -"hloubky, vytvářející střídavý (zigzag) vzor." +"Tato možnost způsobí, že vnitřní švy budou posunuty dozadu na základě jejich hloubky, vytvářející " +"střídavý (zigzag) vzor." msgid "Seam gap" msgstr "Mezera švu" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, " -"the loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, the loop is interrupted and " +"shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the current extruder diameter. The " +"default value for this parameter is 10%." msgstr "" -"Aby se snížila viditelnost spoje při uzavřené extruzi, je smyčka přerušena a " -"zkrácena o stanovenou hodnotu.\n" -"Tato hodnota může být zadána v milimetrech nebo jako procento aktuálního " -"průměru trysky. Výchozí hodnota pro tento parametr je 10%." +"Aby se snížila viditelnost spoje při uzavřené extruzi, je smyčka přerušena a zkrácena o stanovenou " +"hodnotu.\n" +"Tato hodnota může být zadána v milimetrech nebo jako procento aktuálního průměru trysky. Výchozí hodnota " +"pro tento parametr je 10%." msgid "Role base wipe speed" msgstr "Rychlost č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." +"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 čištění je určena rychlostí aktuální role vytlačování, např. pokud " -"je činnost čištění provedena bezprostředně po vytlačování vnější stěny, " -"rychlost vytlačování vnější stěny bude využita pro činnost čištění." +"Rychlost čištění je určena rychlostí aktuální role vytlačování, např. pokud je činnost čištění provedena " +"bezprostředně po vytlačování vnější stěny, rychlost vytlačování vnější stěny bude využita pro činnost " +"čištění." msgid "Wipe on loops" msgstr "Čistit na smyčce" msgid "" -"To minimize the visibility of the seam in a closed loop extrusion, a small " -"inward movement is executed before the extruder leaves the loop." +"To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed " +"before the extruder leaves the loop." msgstr "" -"Aby byla minimalizována viditelnost švu při vytlačování s uzavřenou smyčkou, " -"je proveden malý pohyb dovnitř předtím, než vytlačovací stroj opustí smyčku." +"Aby byla minimalizována viditelnost švu při vytlačování s uzavřenou smyčkou, je proveden malý pohyb " +"dovnitř předtím, než vytlačovací stroj opustí smyčku." msgid "Wipe speed" msgstr "Rychlost čištění" 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%" +"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 "" -"Rychlost čištění je určena nastavením rychlosti specifikovaným v této " -"konfiguraci. Pokud je hodnota vyjádřena v procentech (např. 80%), bude " -"vypočítána na základě výše nastavené rychlosti jízdy. Výchozí hodnota pro " -"tento parametr je 80%" +"Rychlost čištění je určena nastavením rychlosti specifikovaným v této konfiguraci. Pokud je hodnota " +"vyjádřena v procentech (např. 80%), bude vypočítána na základě výše nastavené rychlosti jízdy. Výchozí " +"hodnota pro tento parametr je 80%" msgid "Skirt distance" -msgstr "Vzdálenost Obrysu" +msgstr "Vzdálenost obrysu" msgid "Distance from skirt to brim or object" msgstr "Vzdálenost od Obrysu k Límci nebo předmětu" msgid "Skirt height" -msgstr "Výška Obrysu" +msgstr "Výška obrysu" msgid "How many layers of skirt. Usually only one layer" msgstr "Kolik vrstev Obrysu. Obvykle pouze jedna vrstva" msgid "Skirt loops" -msgstr "Obrysové Smyčky" +msgstr "Obrysové smyčky" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "Počet smyček pro obrys. Nula znamená deaktivaci obrysu" msgid "Skirt speed" -msgstr "Rychlost Obrysu" +msgstr "Rychlost obrysu" msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." -msgstr "" -"Rychlost obrysu, v mm/s. Nula znamená použít výchozí rychlost vrstvy extruze." +msgstr "Rychlost obrysu, v mm/s. Nula znamená použít výchozí rychlost vrstvy extruze." msgid "" -"The printing speed in exported gcode will be slowed down, when the estimated " -"layer time is shorter than this value, to get better cooling for these layers" +"The printing speed in exported gcode will be slowed down, when the estimated layer time is shorter than " +"this value, to get better cooling for these layers" msgstr "" -"Rychlost tisku v exportovaném kódu gcode se zpomalí, když je odhadovaná doba " -"vrstvy kratší než tato hodnota, aby se dosáhlo lepšího chlazení pro tyto " -"vrstvy" +"Rychlost tisku v exportovaném kódu gcode se zpomalí, když je odhadovaná doba vrstvy kratší než tato " +"hodnota, aby se dosáhlo lepšího chlazení pro tyto vrstvy" msgid "Minimum sparse infill threshold" msgstr "Minimální hranice vnitřní výplně" -msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " -"internal solid infill" -msgstr "" -"Řídká oblast výplně, která je menší než hraniční hodnota, je nahrazena " -"vnitřní plnou výplní" +msgid "Sparse infill area which is smaller than threshold value is replaced by internal solid infill" +msgstr "Řídká oblast výplně, která je menší než hraniční hodnota, je nahrazena vnitřní plnou výplní" msgid "" -"Line width of internal solid infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be computed over the nozzle diameter." msgstr "" -"Šířka extruze pro vnitřní výplň. Pokud je vyjádřena jako %, bude vypočtena " -"vzhledem k průměru trysky." +"Šířka extruze pro vnitřní výplň. Pokud je vyjádřena jako %, bude vypočtena vzhledem k průměru trysky." msgid "Speed of internal solid infill, not the top and bottom surface" msgstr "Rychlost vnitřní plné výplně, nikoli horní a spodní plochy" @@ -9316,31 +9138,25 @@ msgid "Spiral vase" msgstr "Spirálová váza" msgid "" -"Spiralize 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" +"Spiralize 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 vyhlazuje pohyby z vnějšího obrysu. A přemění pevný model na " -"jednostěnný tisk s pevnými spodními vrstvami. Konečný vygenerovaný model " -"nemá žádný šev" +"Spiralize vyhlazuje pohyby z vnějšího obrysu. A přemění pevný model na jednostěnný tisk s pevnými " +"spodními vrstvami. Konečný vygenerovaný model nemá žádný šev" 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, prime tower is required for smooth mode to " -"wipe nozzle." +"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, prime tower is required for smooth mode to wipe " +"nozzle." msgstr "" -"Pokud je vybrán plynulý nebo tradiční režim, pro každý tisk se vygeneruje " -"časosběrné video. Po vytištění každé vrstvy je pořízen snímek komorovou " -"kamerou. Všechny tyto snímky jsou po dokončení tisku složeny do časosběrného " -"videa. Pokud je vybrán hladký režim, nástrojová hlava se po vytištění každé " -"vrstvy přesune do přebytečného skluzu a poté pořídí snímek. Kvůli tomu, že " -"se během procesu tavení filamentu může unikat z trysky, pro hladký režim je " -"vyžadována čistící věž pro otření trysky." +"Pokud je vybrán plynulý nebo tradiční režim, pro každý tisk se vygeneruje časosběrné video. Po vytištění " +"každé vrstvy je pořízen snímek komorovou kamerou. Všechny tyto snímky jsou po dokončení tisku složeny do " +"časosběrného videa. Pokud je vybrán hladký režim, nástrojová hlava se po vytištění každé vrstvy přesune " +"do přebytečného skluzu a poté pořídí snímek. Kvůli tomu, že se během procesu tavení filamentu může " +"unikat z trysky, pro hladký režim je vyžadována čistící věž pro otření trysky." msgid "Traditional" msgstr "Tradiční" @@ -9358,59 +9174,61 @@ msgid "Start G-code when start the printing of this filament" msgstr "Start G-kód při zahájení tisku tohoto filamentu" msgid "Single Extruder Multi Material" -msgstr "" +msgstr "MultiMaterial tisk s jedním extruderem" msgid "Use single nozzle to print multi filament" -msgstr "" +msgstr "Použít jednu trysku pro tisk s více filamenty" msgid "Purge in prime tower" -msgstr "" +msgstr "Očistit do čistící věže" msgid "Purge remaining filament into prime tower" -msgstr "" +msgstr "Očistěte zbývající filament do čistící věže" msgid "Enable filament ramming" -msgstr "" +msgstr "Povolit rapidní extruzi filamentu" msgid "No sparse layers (EXPERIMENTAL)" -msgstr "" +msgstr "Bez řídkých vrstev (EXPERIMENTÁLNÍ)" msgid "" -"If enabled, the wipe tower will not be printed on layers with no " -"toolchanges. On layers with a toolchange, extruder will travel downward to " -"print the wipe tower. User is responsible for ensuring there is no collision " -"with the print." +"If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a " +"toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring " +"there is no collision with the print." msgstr "" +"Pokud je tato možnost povolena, nebude čistící věž vytištěna ve vrstvách bez změny barvy. U vrstev s " +"výměnou sjede extruder směrem dolů a vytiskne vrstvu čistící věže. Uživatel je odpovědný za to, že " +"nedojde ke kolizi tiskové hlavy s tiskem." msgid "Prime all printing extruders" -msgstr "" +msgstr "Příprava všech tiskových extruderů" msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." +"If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the " +"print." msgstr "" +"Pokud je tato možnost povolena, všechny tiskové extrudery na začátku tisku vytlačí na předním okraji " +"podložky malé množství materiálu." msgid "Slice gap closing radius" msgstr "Poloměr uzavření mezery v tiskové vrstvě" msgid "" -"Cracks smaller than 2x gap closing radius are being filled during the " -"triangle mesh slicing. The gap closing operation may reduce the final print " -"resolution, therefore it is advisable to keep the value reasonably low." +"Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap " +"closing operation may reduce the final print resolution, therefore it is advisable to keep the value " +"reasonably low." msgstr "" -"Praskliny menší než 2x poloměr uzavření mezery se vyplní během slicování " -"trojúhelníkových sítí. Operace uzavírání mezery může snížit konečné " -"rozlišení tisku, proto je vhodné udržovat rozumně nízkou hodnotu." +"Praskliny menší než 2x poloměr uzavření mezery se vyplní během slicování trojúhelníkových sítí. Operace " +"uzavírání mezery může snížit konečné rozlišení tisku, proto je vhodné udržovat rozumně nízkou hodnotu." msgid "Slicing Mode" msgstr "Režim Slicování" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " -"close all holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "" -"Pro modely letadel 3DLabPrint použijte \"Paritní vyplňování\". Použijte " -"\"Uzavírání děr\" pro uzavření všech otvorů v modelu." +"Pro modely letadel 3DLabPrint použijte \"Paritní vyplňování\". Použijte \"Uzavírání děr\" pro uzavření " +"všech otvorů v modelu." msgid "Regular" msgstr "Obvyklý" @@ -9428,13 +9246,11 @@ msgid "Enable support generation." msgstr "Povolit generování podpěr." msgid "" -"normal(auto) and tree(auto) is used to generate support automatically. If " -"normal(manual) or tree(manual) is selected, only support enforcers are " -"generated" +"normal(auto) and tree(auto) is used to generate support automatically. If normal(manual) or tree(manual) " +"is selected, only support enforcers are generated" msgstr "" -"normální(auto) a Strom(auto) se používají k automatickému generování podpěr. " -"Pokud je vybrána možnost normální(manual) nebo Strom(manual), budou " -"generovány pouze vynucené podpěry" +"Normální(auto) a Strom(auto) se používají k automatickému generování podpěr. Pokud je vybrána možnost " +"Normální(manual) nebo Strom(manual), budou generovány pouze vynucené podpěry" msgid "normal(auto)" msgstr "Normální (auto)" @@ -9469,12 +9285,8 @@ msgstr "Nevytvářejte podpěry na povrchu modelu, pouze na podložce" msgid "Support critical regions only" msgstr "Podpěry pouze pro kritické oblasti" -msgid "" -"Only create support for critical regions including sharp tail, cantilever, " -"etc." -msgstr "" -"Vytvářejte podpěry pouze pro kritické oblasti včetně ostrého ocasu, konzoly " -"atd." +msgid "Only create support for critical regions including sharp tail, cantilever, etc." +msgstr "Vytvářejte podpěry pouze pro kritické oblasti včetně ostrého ocasu, konzoly atd." msgid "Remove small overhangs" msgstr "Odstranit malé převisy" @@ -9498,38 +9310,30 @@ msgid "Support/raft base" msgstr "Podpěry/raft základna" msgid "" -"Filament to print support base and raft. \"Default\" means no specific " -"filament for support and current filament is used" +"Filament to print support base and raft. \"Default\" means no specific filament for support and current " +"filament is used" msgstr "" -"Filament pro tiskové podpěry základen a raftu. \"Výchozí\" znamená, že pro " -"podpěry není použit žádný konkrétní filament a je použit aktuální filament" +"Filament pro tiskové podpěry základen a raftu. \"Výchozí\" znamená, že pro podpěry není použit žádný " +"konkrétní filament a je použit aktuální filament" -msgid "" -"Line width of support. If expressed as a %, it will be computed over the " -"nozzle diameter." -msgstr "" -"Šířka extruze pro podpěry. Pokud je vyjádřena jako %, bude vypočtena " -"vzhledem k průměru trysky." +msgid "Line width of support. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Šířka extruze pro podpěry. Pokud je vyjádřena jako %, bude vypočtena vzhledem k průměru trysky." msgid "Interface use loop pattern" msgstr "Použijte vzor smyčky" -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "" -"Zakrýt smyčkami horní kontaktní vrstvu podpěr. Ve výchozím nastavení " -"zakázáno." +msgid "Cover the top contact layer of the supports with loops. Disabled by default." +msgstr "Zakrýt smyčkami horní kontaktní vrstvu podpěr. Ve výchozím nastavení zakázáno." msgid "Support/raft interface" msgstr "Podpěry/raft kontaktní vrstva" msgid "" -"Filament to print support interface. \"Default\" means no specific filament " -"for support interface and current filament is used" +"Filament to print support interface. \"Default\" means no specific filament for support interface and " +"current filament is used" msgstr "" -"Filament k tisku kontaktních vrstev podpěr. \"Výchozí\" znamená, že pro " -"kontaktní vrstvy podpěr není použit žádný konkrétní filament a je použit " -"aktuální filament" +"Filament k tisku kontaktních vrstev podpěr. \"Výchozí\" znamená, že pro kontaktní vrstvy podpěr není " +"použit žádný konkrétní filament a je použit aktuální filament" msgid "Top interface layers" msgstr "Vrchní kontaktní vrstvy" @@ -9571,13 +9375,11 @@ msgid "Interface pattern" msgstr "Vzor kontaktní vrstvy" msgid "" -"Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support " -"interface is Concentric" +"Line pattern of support interface. Default pattern for non-soluble support interface is Rectilinear, " +"while default pattern for soluble support interface is Concentric" msgstr "" -"Vzor čáry pro kontaktní vrstvy podpěr. Výchozí vzor pro rozhraní nerozpustné " -"podpěry je přímočarý, zatímco výchozí vzor pro rozhraní rozpustné podpěry je " -"koncentrický" +"Vzor čáry pro kontaktní vrstvy podpěr. Výchozí vzor pro rozhraní nerozpustné podpěry je přímočarý, " +"zatímco výchozí vzor pro rozhraní rozpustné podpěry je koncentrický" msgid "Rectilinear Interlaced" msgstr "Přímočarý Prokládaný" @@ -9598,19 +9400,18 @@ msgid "Speed of support" msgstr "Rychlost podpěr" msgid "" -"Style and shape of the support. For normal support, projecting the supports " -"into a regular grid will create more stable supports (default), while snug " -"support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"Style and shape of the support. For normal support, projecting the supports into a regular grid will " +"create more stable supports (default), while snug support towers will save material and reduce object " +"scarring.\n" +"For tree support, slim and organic style will merge branches more aggressively and save a lot of " +"material (default organic), while hybrid style will create similar structure to normal support under " +"large flat overhangs." msgstr "" -"Styl a tvar podpěry. Pro normální podpěru vytvoří promítnutí podpěr do " -"pravidelné mřížky stabilnější podpěry (výchozí), zatímco přiléhavé podpěrné " -"věže šetří materiál a omezují zjizvení objektů.\n" -"Pro podpěru stromu se tenký styl spojí větví se agresivněji a ušetří spoustu " -"materiálu (výchozí), zatímco hybridní styl vytvoří podobnou strukturu jako " -"normální podpěr a pod velkými plochými převisy." +"Styl a tvar podpěr. Pro běžnou podpěru, projekce podpěry do pravidelné mřížky vytvoří stabilnější " +"podpěry (výchozí), zatímco pevné věže pro podpěru ušetří materiál a sníží poškození objektu.\n" +"Pro stromovou podpěru, tenký a organický styl bude agresivněji slučovat větve a ušetří mnoho materiálu " +"(výchozí organický), zatímco hybridní styl vytvoří podobnou strukturu jako běžná podpěra pod velkými " +"plochými převiy." msgid "Snug" msgstr "Přiléhavý" @@ -9625,90 +9426,79 @@ msgid "Tree Hybrid" msgstr "Strom Hybrid" msgid "Organic" -msgstr "" +msgstr "Organické" msgid "Independent support layer height" msgstr "Výška nezávislé podpůrné vrstvy" 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." +"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 "" -"Vrstva podpěry používá nezávislou výšku vrstvy vzhledem k vrstvě objektu. " -"Tímto je umožněno upravit mezeru ve směru osy Z a zároveň ušetřit čas tisku. " -"Tato možnost bude neplatná, pokud je povolena věž pro čištění trysky." +"Vrstva podpěry používá nezávislou výšku vrstvy vzhledem k vrstvě objektu. Tímto je umožněno upravit " +"mezeru ve směru osy Z a zároveň ušetřit čas tisku. Tato možnost bude neplatná, pokud je povolena věž pro " +"čištění trysky." msgid "Threshold angle" msgstr "Hraniční úhel" -msgid "" -"Support will be generated for overhangs whose slope angle is below the " -"threshold." -msgstr "" -"Podpěry budou generovány pro převisy, jejichž úhel sklonu je pod hraniční " -"hodnotou." +msgid "Support will be generated for overhangs whose slope angle is below the threshold." +msgstr "Podpěry budou generovány pro převisy, jejichž úhel sklonu je pod hraniční hodnotou." msgid "Tree support branch angle" msgstr "Úhel větve podpěr stromu" msgid "" -"This setting determines the maximum overhang angle that t he branches of " -"tree support allowed to make.If the angle is increased, the branches can be " -"printed more horizontally, allowing them to reach farther." +"This setting determines the maximum overhang angle that t he branches of tree support allowed to make.If " +"the angle is increased, the branches can be printed more horizontally, allowing them to reach farther." msgstr "" -"Toto nastavení určuje maximální úhel převisů, který mohou větve podpěry " -"stromu dělat. Pokud se úhel zvětší, větve mohou být vytištěny více " -"vodorovně, což jim umožní dosáhnout dále." +"Toto nastavení určuje maximální úhel převisů, který mohou větve podpěry stromu dělat. Pokud se úhel " +"zvětší, větve mohou být vytištěny více vodorovně, což jim umožní dosáhnout dále." msgid "Preferred Branch Angle" -msgstr "" +msgstr "Preferovaný úhel větve" #. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" msgid "" -"The preferred angle of the branches, when they do not have to avoid the " -"model. Use a lower angle to make them more vertical and more stable. Use a " -"higher angle for branches to merge faster." +"The preferred angle of the branches, when they do not have to avoid the model. Use a lower angle to make " +"them more vertical and more stable. Use a higher angle for branches to merge faster." msgstr "" +"Upřednostňovaný úhel větví, pokud se větve musí vyhnout modelu. Použijte menší úhel, aby byly svislejší " +"a stabilnější. Použijte vyšší úhel, aby se větve dříve spojovaly." msgid "Tree support branch distance" msgstr "Vzdálenost větví podpěr stromů" -msgid "" -"This setting determines the distance between neighboring tree support nodes." +msgid "This setting determines the distance between neighboring tree support nodes." msgstr "Toto nastavení určuje vzdálenost mezi sousedními uzly podpěr stromů." msgid "Branch Density" -msgstr "" +msgstr "Hustota větví" #. TRN PrintSettings: "Organic supports" > "Branch Density" msgid "" -"Adjusts the density of the support structure used to generate the tips of " -"the branches. A higher value results in better overhangs but the supports " -"are harder to remove, thus it is recommended to enable top support " -"interfaces instead of a high branch density value if dense interfaces are " -"needed." +"Adjusts the density of the support structure used to generate the tips of the branches. A higher value " +"results in better overhangs but the supports are harder to remove, thus it is recommended to enable top " +"support interfaces instead of a high branch density value if dense interfaces are needed." msgstr "" +"Upravuje hustotu podpěrných špiček větví. Vyšší hodnota vede k lepším převisům, ale podpěry se hůře " +"odstraňují. Proto se doporučuje povolit vrchní kontaktní vrstvy podpěr namísto vysoké hodnoty hustoty " +"větví." msgid "Adaptive layer height" msgstr "Adaptivní výška vrstvy" msgid "" -"Enabling this option means the height of tree support layer except the " -"first will be automatically calculated " +"Enabling this option means the height of tree support layer except the first will be automatically " +"calculated " msgstr "" -"Povolení této možnosti znamená, že výška stromové podpůrné vrstvy kromě " -"první bude automaticky vypočtena " +"Povolení této možnosti znamená, že výška stromové podpůrné vrstvy kromě první bude automaticky vypočtena " msgid "Auto brim width" -msgstr "Automatická šířka Límce" +msgstr "Automatická šířka límce" -msgid "" -"Enabling this option means the width of the brim for tree support will be " -"automatically calculated" -msgstr "" -"Povolení této možnosti znamená, že šířka límce pro podpěry stromu budou " -"automaticky vypočítány" +msgid "Enabling this option means the width of the brim for tree support will be automatically calculated" +msgstr "Povolení této možnosti znamená, že šířka límce pro podpěry stromu budou automaticky vypočítány" msgid "Tree support brim width" msgstr "Šířka Limce podpěr stromů" @@ -9717,11 +9507,11 @@ msgid "Distance from tree branch to the outermost brim line" msgstr "Vzdálenost od větve stromu k nejvzdálenější linii Límce" msgid "Tip Diameter" -msgstr "" +msgstr "Průměr hrotu" #. TRN PrintSettings: "Organic supports" > "Tip Diameter" msgid "Branch tip diameter for organic supports." -msgstr "" +msgstr "Průměr vrcholu špičky větví organických podpěr." msgid "Tree support branch diameter" msgstr "Průměr větve podpěr stromů" @@ -9731,25 +9521,27 @@ msgstr "Toto nastavení určuje počáteční průměr uzlů poděry." #. TRN PrintSettings: #lmFIXME msgid "Branch Diameter Angle" -msgstr "" +msgstr "Úhel definující průměr větve" #. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" msgid "" -"The angle of the branches' diameter as they gradually become thicker towards " -"the bottom. An angle of 0 will cause the branches to have uniform thickness " -"over their length. A bit of an angle can increase stability of the organic " -"support." +"The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 " +"will cause the branches to have uniform thickness over their length. A bit of an angle can increase " +"stability of the organic support." msgstr "" +"Úhel, který udává průměr větví, jak se postupně zesilují směrem dolů. Úhel 0 způsobí, že větve budou mít " +"po celé délce stejnou tloušťku. Trochu větší úhel může zvýšit stabilitu organických podpěr." msgid "Branch Diameter with double walls" -msgstr "" +msgstr "Průměr větve s dvojitými stěnami" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" -"Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no " -"double walls." +"Branches with area larger than the area of a circle of this diameter will be printed with double walls " +"for stability. Set this value to zero for no double walls." msgstr "" +"Větve s plochou větší, než je plocha kruhu o zadaném průměru, budou kvůli stabilitě tištěny s dvojitými " +"stěnami. Nastavte tuto hodnotu na nulu, abyste zakázali dvojité stěny." msgid "Tree support wall loops" msgstr "Stěnové smyčky na podpěry stromů" @@ -9760,57 +9552,44 @@ msgstr "Toto nastavení určuje počet stěn kolem podpěry stromu" msgid "Tree support with infill" msgstr "Podpěry stromu s výplní" -msgid "" -"This setting specifies whether to add infill inside large hollows of tree " -"support" -msgstr "" -"Toto nastavení určuje, zda se má přidat výplň do velkých dutin podpěr stromů" +msgid "This setting specifies whether to add infill inside large hollows of tree support" +msgstr "Toto nastavení určuje, zda se má přidat výplň do velkých dutin podpěr stromů" msgid "Chamber temperature" msgstr "Teplota v komoře" -msgid "Target chamber temperature" -msgstr "Cílová teplota v komoře" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and potentially lead to higher interlayer " +"bonding strength for high temperature materials like ABS, ASA, PC, PA and so on.At the same time, the " +"air filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and other low temperature " +"materials,the actual chamber temperature should not be high to avoid cloggings, so 0 which stands for " +"turning off is highly recommended" +msgstr "" +"Vyšší teplota komory může pomoci potlačit nebo snížit odchlipování a potenciálně vést k vyšší pevnosti " +"spojů mezi vrstvami pro materiály s vysokou teplotou, jako je ABS, ASA, PC, PA a další. Zároveň se však " +"zhorší filtrace vzduchu pro ABS a ASA. Naopak pro PLA, PETG, TPU, PVA a další materiály s nízkou " +"teplotou by teplota komory neměla být vysoká, aby se předešlo zanášení, takže je velmi doporučeno použít " +"hodnotu 0, která znamená vypnutí" msgid "Nozzle temperature for layers after the initial one" msgstr "Teplota trysky pro vrstvy po počáteční" -msgid "Bed temperature difference" -msgstr "Rozdíl teplot podložky" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"Nedoporučujeme, aby teplota podložky jiné vrstvy byla nižší než počáteční " -"vrstva o více než tento limit. Příliš nízká teplota podložky jiné vrstvy " -"může způsobit, že se model uvolní z vyhřívané podložky" - msgid "Detect thin wall" msgstr "Detekce tenkých stěn" msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop" +"Detect thin wall which can't contain two line width. And use single line to print. Maybe printed not " +"very well, because it's not closed loop" msgstr "" -"Detekujte tenkou stěnu, která nemůže obsahovat dvě šířky extruze. A k tisku " -"použijte jednu linku. Možná se to nevytiskne moc dobře, protože to není " -"uzavřená smyčka" +"Detekujte tenkou stěnu, která nemůže obsahovat dvě šířky extruze. A k tisku použijte jednu linku. Možná " +"se to nevytiskne moc dobře, protože to není uzavřená smyčka" -msgid "" -"This gcode is inserted when change filament, including T command to trigger " -"tool change" -msgstr "" -"Tento gcode se vloží při výměně filamentu, včetně příkazu T ke spuštění " -"výměny nástroje" +msgid "This gcode is inserted when change filament, including T command to trigger tool change" +msgstr "Tento gcode se vloží při výměně filamentu, včetně příkazu T ke spuštění výměny nástroje" -msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over " -"the nozzle diameter." +msgid "Line width for top surfaces. If expressed as a %, it will be computed over the nozzle diameter." msgstr "" -"Šířka extruze pro horní plochy. Pokud je vyjádřena jako %, bude vypočtena " -"vzhledem k průměru trysky." +"Šířka extruze pro horní plochy. Pokud je vyjádřena jako %, bude vypočtena vzhledem k průměru trysky." msgid "Speed of top surface infill which is solid" msgstr "Rychlost výplně horních ploch, která je plná" @@ -9819,13 +9598,11 @@ msgid "Top shell layers" msgstr "Vrchní vrstvy skořepiny" 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 top shell " -"thickness, the top shell layers will be increased" +"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 top shell thickness, the top shell layers will be increased" msgstr "" -"Toto je počet pevných vrstev vrchní skořepiny, včetně vrchní povrchové " -"vrstvy. Když je tloušťka vypočtená touto hodnotou tenčí než tloušťka vrchní " -"skořepiny, vrchní vrstvy skořepiny se zvětší" +"Toto je počet pevných vrstev vrchní skořepiny, včetně vrchní povrchové vrstvy. Když je tloušťka " +"vypočtená touto hodnotou tenčí než tloušťka vrchní skořepiny, vrchní vrstvy skořepiny se zvětší" msgid "Top solid layers" msgstr "Vrchních plných vrstev" @@ -9834,17 +9611,14 @@ msgid "Top shell thickness" msgstr "Tloušťka horní skořepiny" 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 shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top " -"shell layers" +"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 shell when layer height is small. 0 means " +"that this setting is disabled and thickness of top shell is absolutely determained by top shell layers" msgstr "" -"Počet vrchních pevných vrstev se při krájení zvýší, pokud je tloušťka " -"vypočítaná horními vrstvami skořepiny tenčí než tato hodnota. Tím se lze " -"vyhnout příliš tenké skořepině, když je výška vrstvy malá. 0 znamená, že " -"toto nastavení je zakázáno a tloušťka vrchní skořepiny je absolutně určován " -"vrchními vrstvami pláště" +"Počet vrchních pevných vrstev se při krájení zvýší, pokud je tloušťka vypočítaná horními vrstvami " +"skořepiny tenčí než tato hodnota. Tím se lze vyhnout příliš tenké skořepině, když je výška vrstvy malá. " +"0 znamená, že toto nastavení je zakázáno a tloušťka vrchní skořepiny je absolutně určován vrchními " +"vrstvami pláště" msgid "Speed of travel which is faster and without extrusion" msgstr "Rychlost pohybu, která je rychlejší a bez extruze" @@ -9853,28 +9627,24 @@ msgid "Wipe while retracting" msgstr "Očistit při retrakci" msgid "" -"Move nozzle along the last extrusion path when retracting to clean leaked " -"material on nozzle. This can minimize blob when print new part after travel" +"Move nozzle along the last extrusion path when retracting to clean leaked material on nozzle. This can " +"minimize blob when print new part after travel" msgstr "" -"Při zasouvání přesuňte trysku podél poslední dráhy vytlačování, abyste " -"vyčistili uniklý materiál na trysce. To může minimalizovat skvrny při tisku " -"nového dílu po cestě" +"Při zasouvání přesuňte trysku podél poslední dráhy vytlačování, abyste vyčistili uniklý materiál na " +"trysce. To může minimalizovat skvrny při tisku nového dílu po cestě" msgid "Wipe Distance" msgstr "Vzdálenost čištění" -msgid "" -"Discribe how long the nozzle will move along the last path when retracting" -msgstr "" -"Popište, jak dlouho se bude tryska při retrakci pohybovat po poslední dráze" +msgid "Discribe how long the nozzle will move along the last path when retracting" +msgstr "Popište, jak dlouho se bude tryska při retrakci pohybovat po poslední dráze" msgid "" -"The wiping tower can be used to clean up the residue on the nozzle and " -"stabilize the chamber pressure inside the nozzle, in order to avoid " -"appearance defects when printing objects." +"The wiping tower can be used to clean up the residue on the nozzle and stabilize the chamber pressure " +"inside the nozzle, in order to avoid appearance defects when printing objects." msgstr "" -"Věž pro čištění se může použít k čištění zbytků na trysce a stabilizaci " -"tlaku v trysce, aby se předešlo vzniku vad při tisku objektů." +"Věž pro čištění se může použít k čištění zbytků na trysce a stabilizaci tlaku v trysce, aby se předešlo " +"vzniku vad při tisku objektů." msgid "Purging volumes" msgstr "Objemy čištění" @@ -9883,11 +9653,9 @@ msgid "Flush multiplier" msgstr "Čistit multiplikátor" msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by " -"the flushing volumes in the table." -msgstr "" -"Skutečný objem čištění se rovná multiplikátoru čištění vynásobenému objemy " -"čištění v tabulce." +"The actual flushing volumes is equal to the flush multiplier multiplied by the flushing volumes in the " +"table." +msgstr "Skutečný objem čištění se rovná multiplikátoru čištění vynásobenému objemy čištění v tabulce." msgid "Prime volume" msgstr "Základní objem" @@ -9902,135 +9670,128 @@ msgid "Width of prime tower" msgstr "Šířka pro čistící věž" msgid "Wipe tower rotation angle" -msgstr "" +msgstr "Úhel natočení čistící věže" msgid "Wipe tower rotation angle with respect to x-axis." -msgstr "" +msgstr "Úhel natočení čistící věže s ohledem na osu X." msgid "Stabilization cone apex angle" -msgstr "" +msgstr "Úhel vrcholu stabilizačního kužele" msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. " -"Larger angle means wider base." +"Angle at the apex of the cone that is used to stabilize the wipe tower. Larger angle means wider base." msgstr "" +"Úhel na vrcholu kužele, který se používá ke stabilizaci čistící věže. Větší úhel znamená širší základnu." msgid "Wipe tower purge lines spacing" -msgstr "" +msgstr "Rozteč čistících linek v čistící věži" msgid "Spacing of purge lines on the wipe tower." -msgstr "" +msgstr "Rozteč čistících linek v čistící věži." msgid "Wipe tower extruder" -msgstr "" +msgstr "Extruder čistící věže" 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)." +"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 "" +"Extruder, který se použije při tisku obvodu čistící věže. Nastavte na 0, abyste použili ten, který je k " +"dispozici (přednostně s nerozpustným filamentem)." msgid "Purging volumes - load/unload volumes" -msgstr "" +msgstr "Objemy čištění - zaváděné/vyjmuté objemy" 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." +"This vector saves required volumes to change from/to each tool used on the wipe tower. These values are " +"used to simplify creation of the full purging volumes below." msgstr "" +"Tento vektor ukládá potřebné objemy pro změnu z/na každý extruder používaný na čistící věži. Tyto " +"hodnoty jsou použity pro zjednodušení vytvoření celkových objemů čištění níže." 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 seen " -"outside. It will not take effect, unless the prime tower is enabled." +"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 seen outside. It will not take effect, unless the prime tower is enabled." msgstr "" -"Čištění po výměně filamentu bude provedeno uvnitř výplní objektů. To může " -"snížit množství odpadu a zkrátit dobu tisku. Pokud jsou stěny potištěny " -"průhledným filamentem, výplň smíšených barev bude vidět venku. Neprojeví se " -"to pokud není povolena čistící věž." +"Čištění po výměně filamentu bude provedeno uvnitř výplní objektů. To může snížit množství odpadu a " +"zkrátit dobu tisku. Pokud jsou stěny potištěny průhledným filamentem, výplň smíšených barev bude vidět " +"venku. Neprojeví se to pokud není povolena čistící věž." 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 the prime tower is enabled." +"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 the prime tower is enabled." msgstr "" -"Čištění po výměně filamentu bude provedeno uvnitř podpěry objektů. To může " -"snížit množství odpadu a zkrátit dobu tisku. Neprojeví se, pokud není " -"aktivována čistící věž." +"Čištění po výměně filamentu bude provedeno uvnitř podpěry objektů. To může snížit množství odpadu a " +"zkrátit dobu tisku. Neprojeví se, pokud není aktivována čistící věž." msgid "" -"This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed " -"as a result. It will not take effect, unless the prime tower is enabled." +"This object will be used to purge the nozzle after a filament change to save filament and decrease the " +"print time. Colours of the objects will be mixed as a result. It will not take effect, unless the prime " +"tower is enabled." msgstr "" -"Tento objekt bude použit k očištění trysky po výměně filamentu, aby se " -"ušetřil filament a zkrátila se doba tisku. V důsledku toho budou barvy " -"objektů smíšené. Neprojeví se to, pokud není aktivována čistící věž." +"Tento objekt bude použit k očištění trysky po výměně filamentu, aby se ušetřil filament a zkrátila se " +"doba tisku. V důsledku toho budou barvy objektů smíšené. Neprojeví se to, pokud není aktivována čistící " +"věž." msgid "Maximal bridging distance" -msgstr "" +msgstr "Maximální vzdálenost přemostění" msgid "Maximal distance between supports on sparse infill sections." -msgstr "" +msgstr "Maximální vzdálenost mezi podpěrami u částí s řídkou výplní." msgid "X-Y hole compensation" msgstr "X-Y Kompenzace otvoru" msgid "" -"Holes of object will be grown or shrunk in XY plane by the configured value. " -"Positive value makes holes bigger. Negative value makes holes smaller. This " -"function is used to adjust size slightly when the object has assembling issue" +"Holes of object will be grown or shrunk in XY plane by the configured value. Positive value makes holes " +"bigger. Negative value makes holes smaller. This function is used to adjust size slightly when the " +"object has assembling issue" msgstr "" -"Díry objektu se zvětší nebo zmenší v rovině XY o nakonfigurovanou hodnotu. " -"Kladná hodnota zvětší díry. Záporná hodnota díry zmenšuje. Tato funkce se " -"používá k mírné úpravě velikosti, když má objekt problém se sestavováním" +"Díry objektu se zvětší nebo zmenší v rovině XY o nakonfigurovanou hodnotu. Kladná hodnota zvětší díry. " +"Záporná hodnota díry zmenšuje. Tato funkce se používá k mírné úpravě velikosti, když má objekt problém " +"se sestavováním" msgid "X-Y contour compensation" msgstr "X-Y Kompenzace obrysu" msgid "" -"Contour of object will be grown or shrunk in XY plane by the configured " -"value. Positive value makes contour bigger. Negative value makes contour " -"smaller. This function is used to adjust size slightly when the object has " -"assembling issue" +"Contour of object will be grown or shrunk in XY plane by the configured value. Positive value makes " +"contour bigger. Negative value makes contour smaller. This function is used to adjust size slightly when " +"the object has assembling issue" msgstr "" -"Kontura objektu se zvětší nebo zmenší v rovině XY o nakonfigurovanou " -"hodnotu. Kladná hodnota zvětší obrys. Záporná hodnota zmenší obrys. Tato " -"funkce se používá k mírné úpravě velikosti, když má objekt problém se " -"sestavováním" +"Kontura objektu se zvětší nebo zmenší v rovině XY o nakonfigurovanou hodnotu. Kladná hodnota zvětší " +"obrys. Záporná hodnota zmenší obrys. Tato funkce se používá k mírné úpravě velikosti, když má objekt " +"problém se sestavováním" msgid "G-code thumbnails" msgstr "Náhledy G-kódu" msgid "" -"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " -"following format: \"XxY, XxY, ...\"" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following format: \"XxY, XxY, ..." +"\"" msgstr "" -"Velikosti obrázků budou uloženy do souborů .gcode / .sl1 / .sl1s, v " -"následujícím formátu: \"XxY, XxY, ...\"" +"Velikosti obrázků budou uloženy do souborů .gcode / .sl1 / .sl1s, v následujícím formátu: \"XxY, XxY, ..." +"\"" msgid "Use relative E distances" msgstr "Použít relativní E vzdálenosti" msgid "" -"Relative extrusion is recommended when using \"label_objects\" option.Some " -"extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Relative extrusion is recommended when using \"label_objects\" option.Some extruders work better with " +"this option unckecked (absolute extrusion mode). Wipe tower is only compatible with relative mode. It is " +"always enabled on BambuLab printers. Default is checked" msgstr "" -"Při použití volby \"label_objects\" se doporučuje relativní vytlačování. " -"Některé extrudery fungují lépe, když je tato možnost odškrtnuta (režim " -"absolutního vytlačování). Čistící věž je kompatibilní pouze s relativním " -"režimem. Na tiskárnách BambuLab je vždy povolen. Výchozí je zaškrtnuto" +"Při použití volby \"label_objects\" se doporučuje relativní vytlačování. Některé extrudery fungují lépe, " +"když je tato možnost odškrtnuta (režim absolutního vytlačování). Čistící věž je kompatibilní pouze s " +"relativním režimem. Na tiskárnách BambuLab je vždy povolen. Výchozí je zaškrtnuto" msgid "" -"Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with " -"variable extrusion width" +"Classic wall generator produces walls with constant extrusion width and for very thin areas is used gap-" +"fill. Arachne engine produces walls with variable extrusion width" msgstr "" -"Klasický generátor stěn produkuje stěny s konstantní extruzní šířkou a pro " -"velmi tenké oblasti se používá gap-fill. Arachne engine produkuje stěny s " -"proměnnou extruzní šířkou." +"Klasický generátor stěn produkuje stěny s konstantní extruzní šířkou a pro velmi tenké oblasti se " +"používá gap-fill. Arachne engine produkuje stěny s proměnnou extruzní šířkou." msgid "Classic" msgstr "Klasický" @@ -10042,107 +9803,96 @@ msgid "Wall transition length" msgstr "Délka přechodu stěny" msgid "" -"When transitioning between different numbers of walls as the part becomes " -"thinner, a certain amount of space is allotted to split or join the wall " -"segments. It's expressed as a percentage over nozzle diameter" +"When transitioning between different numbers of walls as the part becomes thinner, a certain amount of " +"space is allotted to split or join the wall segments. It's expressed as a percentage over nozzle diameter" msgstr "" -"Při přechodu mezi různými počty stěn, jak se díl ztenčuje, je vyhrazeno " -"určité množství prostoru pro rozdělení nebo spojení segmentů stěny. " -"Vyjadřuje se jako procento průměru trysky" +"Při přechodu mezi různými počty stěn, jak se díl ztenčuje, je vyhrazeno určité množství prostoru pro " +"rozdělení nebo spojení segmentů stěny. Vyjadřuje se jako procento průměru trysky" msgid "Wall transitioning filter margin" msgstr "Okraj filtru přechodu stěny" 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" +"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 "" -"Zabránit přechodu mezi jednou dodatečnou stěnou a jednou méně. Tato mez " -"rozšiřuje rozsah šířek extruze na [Minimální šířka stěny - mezera, 2 * " -"Minimální šířka stěny + mezera]. Zvýšení této mezery snižuje počet přechodů, " -"což zase snižuje počet začátků/konec extruze a čas cestování. Nicméně velké " -"rozdíly ve šířce extruze mohou vést k nedostatečné nebo přílišné extruzi. Je " -"vyjádřena jako procento nad průměrem trysky" +"Zabránit přechodu mezi jednou dodatečnou stěnou a jednou méně. Tato mez rozšiřuje rozsah šířek extruze " +"na [Minimální šířka stěny - mezera, 2 * Minimální šířka stěny + mezera]. Zvýšení této mezery snižuje " +"počet přechodů, což zase snižuje počet začátků/konec extruze a čas cestování. Nicméně velké rozdíly ve " +"šířce extruze mohou vést k nedostatečné nebo přílišné extruzi. Je vyjádřena jako procento nad průměrem " +"trysky" msgid "Wall transitioning threshold angle" msgstr "Hraniční úhel přechodu stěny" msgid "" -"When to create transitions between even and odd numbers of walls. A wedge " -"shape with an angle greater than this setting will not have transitions and " -"no walls will be printed in the center to fill the remaining space. Reducing " -"this setting reduces the number and length of these center walls, but may " +"When to create transitions between even and odd numbers of walls. A wedge shape with an angle greater " +"than this setting will not have transitions and no walls will be printed in the center to fill the " +"remaining space. Reducing this setting reduces the number and length of these center walls, but may " "leave gaps or overextrude" msgstr "" -"Kdy vytvořit přechody mezi sudým a lichým počtem stěn. Klínový tvar s úhlem " -"větším, než je toto nastavení, nebude mít přechody a do středu se " -"nevytisknou žádné stěny, které vyplní zbývající prostor. Zmenšením tohoto " -"nastavení se sníží počet a délka těchto středových stěn, ale může zanechat " -"mezery nebo přečnívat" +"Kdy vytvořit přechody mezi sudým a lichým počtem stěn. Klínový tvar s úhlem větším, než je toto " +"nastavení, nebude mít přechody a do středu se nevytisknou žádné stěny, které vyplní zbývající prostor. " +"Zmenšením tohoto nastavení se sníží počet a délka těchto středových stěn, ale může zanechat mezery nebo " +"přečnívat" msgid "Wall distribution count" msgstr "Počet rozložení stěn" msgid "" -"The number of walls, counted from the center, over which the variation needs " -"to be spread. Lower values mean that the outer walls don't change in width" +"The number of walls, counted from the center, over which the variation needs to be spread. Lower values " +"mean that the outer walls don't change in width" msgstr "" -"Počet stěn, počítáno od středu, přes které je třeba rozložit variaci. Nižší " -"hodnoty znamenají, že vnější stěny se nemění na šířku" +"Počet stěn, počítáno od středu, přes které je třeba rozložit variaci. Nižší hodnoty znamenají, že vnější " +"stěny se nemění na šířku" msgid "Minimum feature size" msgstr "Minimální velikost prvku" msgid "" -"Minimum thickness of thin features. Model features that are thinner than " -"this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum wall width. It's expressed as a " -"percentage over nozzle diameter" +"Minimum thickness of thin features. Model features that are thinner than this value will not be printed, " +"while features thicker than the Minimum feature size will be widened to the Minimum wall width. It's " +"expressed as a percentage over nozzle diameter" msgstr "" -"Minimální tloušťka tenkých prvků. Prvky modelu, které jsou tenčí než tato " -"hodnota, nebudou vytištěny, zatímco prvky tlustší než minimální velikost " -"prvku budou rozšířeny na minimální šířku stěny. Vyjadřuje se jako procento " -"průměru trysky" +"Minimální tloušťka tenkých prvků. Prvky modelu, které jsou tenčí než tato hodnota, nebudou vytištěny, " +"zatímco prvky tlustší než minimální velikost prvku budou rozšířeny na minimální šířku stěny. Vyjadřuje " +"se jako procento průměru trysky" msgid "First layer minimum wall width" -msgstr "" +msgstr "Minimální šířka stěny první vrstvy" 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." +"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 "" +"Minimální šířka stěny, která by měla být použita pro první vrstvu, se doporučuje nastavit na stejnou " +"velikost jako tryska. Toto nastavení by mělo zvýšit přilnavost." msgid "Minimum wall width" msgstr "Minimální šířka stěny" msgid "" -"Width of the wall that will replace thin features (according to the Minimum " -"feature size) of the model. If the Minimum wall width is thinner than the " -"thickness of the feature, the wall will become as thick as the feature " -"itself. It's expressed as a percentage over nozzle diameter" +"Width of the wall that will replace thin features (according to the Minimum feature size) of the model. " +"If the Minimum wall width is thinner than the thickness of the feature, the wall will become as thick as " +"the feature itself. It's expressed as a percentage over nozzle diameter" msgstr "" -"Šířka stěny, která nahradí tenké prvky (podle Minimální velikosti prvku) " -"modelu. Pokud je minimální šířka stěny tenčí než tloušťka prvku, zeď bude " -"stejně tlustá jako prvek samotný. Vyjadřuje se jako procento nad průměr " -"trysky" +"Šířka stěny, která nahradí tenké prvky (podle Minimální velikosti prvku) modelu. Pokud je minimální " +"šířka stěny tenčí než tloušťka prvku, zeď bude stejně tlustá jako prvek samotný. Vyjadřuje se jako " +"procento nad průměr trysky" msgid "Detect narrow internal solid infill" msgstr "Detekovat úzkou vnitřní plnou výplň" msgid "" -"This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. " -"Otherwise, rectilinear pattern is used defaultly." +"This option will auto detect narrow internal solid infill area. If enabled, concentric pattern will be " +"used for the area to speed printing up. Otherwise, rectilinear pattern is used defaultly." msgstr "" -"Tato možnost automaticky rozpozná úzkou vnitřní plnou výplňovou oblast. Je-" -"li povolena, bude pro oblast použit soustředný vzor, aby se urychlil tisk. V " -"opačném případě se ve výchozím nastavení použije přímočarý vzor." +"Tato možnost automaticky rozpozná úzkou vnitřní plnou výplňovou oblast. Je-li povolena, bude pro oblast " +"použit soustředný vzor, aby se urychlil tisk. V opačném případě se ve výchozím nastavení použije " +"přímočarý vzor." msgid "invalid value " msgstr "neplatná hodnota " @@ -10205,6 +9955,12 @@ msgstr "Načíst výchozí filameny" msgid "Load first filament as default for those not loaded" msgstr "Načíst první filament jako výchozí pro ty, které nebyly načteny" +msgid "Minimum save" +msgstr "Uložit minimum" + +msgid "export 3mf with minimum size." +msgstr "exportovat 3mf s minimální velikostí." + msgid "mtcpp" msgstr "mtcpp" @@ -10221,8 +9977,7 @@ msgid "No check" msgstr "Žádná kontrola" msgid "Do not run any validity checks, such as gcode path conflicts check." -msgstr "" -"Neprovádět žádné kontrolní testy, například kontrolu konfliktů cesty g-kódu." +msgstr "Neprovádět žádné kontrolní testy, například kontrolu konfliktů cesty g-kódu." msgid "Normative check" msgstr "Normativní kontrola" @@ -10260,14 +10015,38 @@ msgstr "Počet opakování" msgid "Repetions count of the whole model" msgstr "Počet opakování celého modelu" +msgid "Ensure on bed" +msgstr "Zajistit na podložce" + +msgid "Lift the object above the bed when it is partially below. Disabled by default" +msgstr "Zvedněte objekt nad podložku, když je částečně pod ní. Výchozí stav je vypnutý" + msgid "Convert Unit" msgstr "Převést jednotku" msgid "Convert the units of model" msgstr "Převést jednotky modelu" -msgid "Orient the model" -msgstr "Orientujte model" +msgid "Orient Options" +msgstr "Orientační možnosti" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "Orientační možnosti: 0-vypnuto, 1-zapnuto, ostatní-auto" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "Úhel rotace kolem osy Z v stupních." + +msgid "Rotate around X" +msgstr "Rotace kolem osy X" + +msgid "Rotation angle around the X axis in degrees." +msgstr "Úhel rotace kolem osy X v stupních." + +msgid "Rotate around Y" +msgstr "Rotace kolem osy Y" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "Úhel rotace kolem osy Y v stupních." msgid "Scale the model by a float factor" msgstr "Měřítko modelu pomocí plovoucího faktoru" @@ -10293,23 +10072,18 @@ msgstr "Přeskočit některé objekty při tisku" msgid "load uptodate process/machine settings when using uptodate" msgstr "Načítat aktuální nastavení procesu/stroje při použití aktuálního" -msgid "" -"load uptodate process/machine settings from the specified file when using " -"uptodate" -msgstr "" -"Načítat aktuální nastavení procesu/stroje ze zadaného souboru při použití " -"aktuálního" +msgid "load uptodate process/machine settings from the specified file when using uptodate" +msgstr "Načítat aktuální nastavení procesu/stroje ze zadaného souboru při použití aktuálního" msgid "Data directory" msgstr "Složka Data" msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." +"Load and store settings at the given directory. This is useful for maintaining different profiles or " +"including configurations from a network storage." msgstr "" -"Načtěte a uložte nastavení z/do daného adresáře. To je užitečné pro " -"udržování různých profilů nebo konfigurací ze síťového úložiště." +"Načtěte a uložte nastavení z/do daného adresáře. To je užitečné pro udržování různých profilů nebo " +"konfigurací ze síťového úložiště." msgid "Output directory" msgstr "Výstupní adresář" @@ -10320,12 +10094,14 @@ msgstr "Výstupní adresář pro exportované soubory." msgid "Debug level" msgstr "Úroveň ladění" -msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" -msgstr "" -"Nastaví úroveň protokolování ladění. 0:fatal, 1:error, 2:warning, 3:info, 4:" -"debug, 5:sledovat\n" +msgid "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" +msgstr "Nastaví úroveň protokolování ladění. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:sledovat\n" + +msgid "Load custom gcode" +msgstr "Načíst vlastní G-kód" + +msgid "Load custom gcode from json" +msgstr "Načíst vlastní G-kód z JSON" msgid "Error in zip archive" msgstr "Chyba v archivu zip" @@ -10349,28 +10125,23 @@ msgid "Checking support necessity" msgstr "Zkontroluji nutnost podpěr" msgid "floating regions" -msgstr "plovoucí regiony" +msgstr "levitující oblasti" msgid "floating cantilever" -msgstr "plovoucí konzola" +msgstr "levitující konstrukce" msgid "large overhangs" msgstr "velké převisy" #, c-format, boost-format -msgid "" -"It seems object %s has %s. Please re-orient the object or enable support " -"generation." -msgstr "" -"Zdá se, že objekt %s má %s. Změňte orientaci objektu nebo povolte generování " -"podpěr." +msgid "It seems object %s has %s. Please re-orient the object or enable support generation." +msgstr "Zdá se, že objekt %s má %s. Změňte orientaci objektu nebo povolte generování podpěr." msgid "Optimizing toolpath" msgstr "Optimalizace dráhy nástroje" msgid "Empty layers around bottom are replaced by nearest normal layers." -msgstr "" -"Prázdné vrstvy kolem dna jsou nahrazeny nejbližšími normálními vrstvami." +msgstr "Prázdné vrstvy kolem dna jsou nahrazeny nejbližšími normálními vrstvami." msgid "The model has too many empty layers." msgstr "Model má příliš mnoho prázdných vrstev." @@ -10379,19 +10150,17 @@ msgid "Slicing mesh" msgstr "Slicování sítě" msgid "" -"No layers were detected. You might want to repair your STL file(s) or check " -"their size or thickness and retry.\n" +"No layers were detected. You might want to repair your STL file(s) or check their size or thickness and " +"retry.\n" msgstr "" -"Nebyly zjištěny žádné vrstvy. Možná budete chtít opravit své soubory STL " -"nebo zkontrolovat jejich velikost či tloušťku a zkusit to znovu.\n" +"Nebyly zjištěny žádné vrstvy. Možná budete chtít opravit své soubory STL nebo zkontrolovat jejich " +"velikost či tloušťku a zkusit to znovu.\n" msgid "" -"An object's XY size compensation will not be used because it is also color-" -"painted.\n" +"An object's XY size compensation will not be used because it is also color-painted.\n" "XY Size compensation can not be combined with color-painting." msgstr "" -"Kompenzace velikosti XY objektu nebude použita, protože je také barevně " -"natřený.\n" +"Kompenzace velikosti XY objektu nebude použita, protože je také barevně natřený.\n" "Korekci velikosti XY nelze kombinovat s barevnou malbou." #, c-format, boost-format @@ -10425,21 +10194,17 @@ msgstr "Podpěry: oprava děr ve vrstvě %d" msgid "Support: propagate branches at layer %d" msgstr "Podpěry: šíření větví na vrstvě %d" -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Neznámý formát souboru. Vstupní soubor musí mít příponu .stl, .obj nebo ." -"amf(.xml)" +msgid "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "Neznámý formát souboru. Vstupní soubor musí mít příponu .stl, .obj nebo .amf(.xml)" msgid "Loading of a model file failed." msgstr "Nahrávání souboru modelu selhalo." msgid "The supplied file couldn't be read because it's empty" -msgstr "Nahraný soubor nemohl být načten, protože je prázdný." +msgstr "Nahraný soubor nemohl být načten, protože je prázdný" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." -msgstr "" -"Neznámý formát souboru. Vstupní soubor musí mít příponu .3mf nebo .zip.amf." +msgstr "Neznámý formát souboru. Vstupní soubor musí mít příponu .3mf nebo .zip.amf." msgid "Canceled" msgstr "Zrušeno" @@ -10454,7 +10219,7 @@ msgid "The file contains polygons with less than 2 vertices." msgstr "Soubor obsahuje polygon s méně než 2 vrcholy." msgid "The file contains invalid vertex index." -msgstr "Soubor obsahuje neplatný index vrcholu" +msgstr "Soubor obsahuje neplatný index vrcholu." msgid "This OBJ file couldn't be read because it's empty." msgstr "Tento soubor formátu OBJ nemohl být načten, protože je prázdný." @@ -10498,9 +10263,8 @@ msgstr "Wiki" msgid "How to use calibration result?" msgstr "Jak použít výsledek kalibrace?" -msgid "" -"You could change the Flow Dynamics Calibration Factor in material editing" -msgstr "Můžete změnit faktor kalibrace dynamiky průtoku při úpravě materiálu." +msgid "You could change the Flow Dynamics Calibration Factor in material editing" +msgstr "Můžete změnit faktor kalibrace dynamiky průtoku při úpravě materiálu" msgid "" "The current firmware version of the printer does not support calibration.\n" @@ -10527,6 +10291,20 @@ msgstr "Zadejte název, který chcete uložit do tiskárny." msgid "The name cannot exceed 40 characters." msgstr "Název nemůže překročit 40 znaků." +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" +"Prosím, zadejte platné hodnoty:\n" +"Počáteční hodnota: >= %.1f\n" +"Koncová hodnota: <= %.1f\n" +"Koncová hodnota: > Počáteční hodnota\n" +"Krok hodnoty: >= %.3f)" + msgid "The name cannot be empty." msgstr "Název nemůže být prázdný." @@ -10538,16 +10316,13 @@ msgid "The name cannot be the same as the system preset name." msgstr "Název nemůže být stejný jako název systémové předvolby." msgid "The name is the same as another existing preset name" -msgstr "Název je stejný jako název jiné existující předvolby." +msgstr "Název je stejný jako název jiné existující předvolby" msgid "create new preset failed." msgstr "Vytvoření nové předvolby selhalo." -msgid "" -"Are you sure to cancel the current calibration and return to the home page?" -msgstr "" -"Jste si jistí, že chcete zrušit aktuální kalibraci a vrátit se na domovskou " -"stránku?" +msgid "Are you sure to cancel the current calibration and return to the home page?" +msgstr "Jste si jistí, že chcete zrušit aktuální kalibraci a vrátit se na domovskou stránku?" msgid "No Printer Connected!" msgstr "Není připojena žádná tiskárna!" @@ -10558,6 +10333,9 @@ msgstr "Tiskárna je zatím nepřipojena." msgid "Please select filament to calibrate." msgstr "Vyberte prosím filament pro kalibraci." +msgid "The input value size must be 3." +msgstr "Velikost vstupní hodnoty musí být 3." + msgid "Connecting to printer..." msgstr "Připojování k tiskárně..." @@ -10576,33 +10354,26 @@ msgstr "Vyberte prosím alespoň jeden filament pro kalibraci" msgid "Flow rate calibration result has been saved to preset" msgstr "Výsledek kalibrace průtoku byl uložen do předvolby" -msgid "The input value size must be 3." -msgstr "Velikost vstupní hodnoty musí být 3." - msgid "Max volumetric speed calibration result has been saved to preset" -msgstr "" -"Výsledek kalibrace maximální objemové rychlosti byl uložen do předvolby" +msgstr "Výsledek kalibrace maximální objemové rychlosti byl uložen do předvolby" msgid "When do you need Flow Dynamics Calibration" msgstr "Kdy potřebujete kalibraci dynamiky průtoku" msgid "" -"We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future " -"use. You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the " -"filament is damp;\n" +"We now have added the auto-calibration for different filaments, which is fully automated and the result " +"will be saved into the printer for future use. You only need to do the calibration in the following " +"limited cases:\n" +"1. If you introduce a new filament of different brands/models or the filament is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" -"3. If the max volumetric speed or print temperature is changed in the " -"filament setting." +"3. If the max volumetric speed or print temperature is changed in the filament setting." msgstr "" -"Nyní jsme přidali automatickou kalibraci pro různé filameny, která je plně " -"automatizovaná a výsledek bude uložen do tiskárny pro budoucí použití. " -"Kalibraci musíte provést pouze v následujících omezených případech:\n" +"Nyní jsme přidali automatickou kalibraci pro různé filameny, která je plně automatizovaná a výsledek " +"bude uložen do tiskárny pro budoucí použití. Kalibraci musíte provést pouze v následujících omezených " +"případech:\n" "1. Pokud použijete nový filament jiné značky/modelu nebo je filament vlhký;\n" "2. Pokud je tryska opotřebená nebo nahrazena novou;\n" -"3. Pokud je maximální objemová rychlost nebo tisková teplota změněna v " -"nastavení filamentu." +"3. Pokud je maximální objemová rychlost nebo tisková teplota změněna v nastavení filamentu." msgid "About this calibration" msgstr "O této kalibraci" @@ -10610,123 +10381,103 @@ msgstr "O této kalibraci" msgid "" "Please find the details of Flow Dynamics Calibration from our wiki.\n" "\n" -"Usually the calibration is unnecessary. When you start a single color/" -"material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the " -"filament before the print; When you start a multi color/material print, the " -"printer will use the default compensation parameter for the filament during " -"every filament switch which will have a good result in most cases.\n" +"Usually the calibration is unnecessary. When you start a single color/material print, with the \"flow " +"dynamics calibration\" option checked in the print start menu, the printer will follow the old way, " +"calibrate the filament before the print; When you start a multi color/material print, the printer will " +"use the default compensation parameter for the filament during every filament switch which will have a " +"good result in most cases.\n" "\n" -"Please note there are a few cases that will make the calibration result not " -"reliable: using a texture plate to do the calibration; the build plate does " -"not have good adhesion (please wash the build plate or apply gluestick!) ..." -"You can find more from our wiki.\n" +"Please note there are a few cases that will make the calibration result not reliable: using a texture " +"plate to do the calibration; the build plate does not have good adhesion (please wash the build plate or " +"apply gluestick!) ...You can find more from our wiki.\n" "\n" -"The calibration results have about 10 percent jitter in our test, which may " -"cause the result not exactly the same in each calibration. We are still " -"investigating the root cause to do improvements with new updates." +"The calibration results have about 10 percent jitter in our test, which may cause the result not exactly " +"the same in each calibration. We are still investigating the root cause to do improvements with new " +"updates." msgstr "" "Najdete podrobnosti o kalibraci průtoku dynamiky v naší wiki.\n" "\n" -"Obvykle kalibrace není potřebná. Při spuštění tisku s jednobarevným/" -"materiálovým filamentem a zaškrtnutou volbou \"kalibrace průtoku dynamiky\" " -"v menu spuštění tisku, tiskárna bude postupovat podle staré metody a " -"zkalibruje filament před tiskem. Při spuštění tisku s vícebarevným/" -"materiálovým filamentem bude tiskárna při každé změně filamentu používat " -"výchozí kompenzační parametr pro filament, což má většinou dobrý výsledek.\n" +"Obvykle kalibrace není potřebná. Při spuštění tisku s jednobarevným/materiálovým filamentem a " +"zaškrtnutou volbou \"kalibrace průtoku dynamiky\" v menu spuštění tisku, tiskárna bude postupovat podle " +"staré metody a zkalibruje filament před tiskem. Při spuštění tisku s vícebarevným/materiálovým " +"filamentem bude tiskárna při každé změně filamentu používat výchozí kompenzační parametr pro filament, " +"což má většinou dobrý výsledek.\n" "\n" -"Všimněte si, že existují některé případy, které mohou způsobit, že výsledek " -"kalibrace nebude spolehlivý: použití texturované podložky pro kalibraci; " -"podložka nemá dobrou adhezi (prosím umyjte podložku nebo naneste " -"lepidlo!) ... Více informací najdete v naší wiki.\n" +"Všimněte si, že existují některé případy, které mohou způsobit, že výsledek kalibrace nebude spolehlivý: " +"použití texturované podložky pro kalibraci; podložka nemá dobrou adhezi (prosím umyjte podložku nebo " +"naneste lepidlo!) ... Více informací najdete v naší wiki.\n" "\n" -"Výsledky kalibrace mají v našich testech asi 10% fluktuaci, což může " -"způsobit, že výsledek nebude přesně stejný u každé kalibrace. Stále zkoumáme " -"kořenovou příčinu, abychom mohli provést zlepšení v nových aktualizacích." +"Výsledky kalibrace mají v našich testech asi 10% fluktuaci, což může způsobit, že výsledek nebude přesně " +"stejný u každé kalibrace. Stále zkoumáme kořenovou příčinu, abychom mohli provést zlepšení v nových " +"aktualizacích." msgid "When to use Flow Rate Calibration" msgstr "Kdy použít kalibraci průtoku" 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" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " -"top layer of the model, even when printing slowly.\n" +"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" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top layer of the model, even " +"when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " -"they should be." +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be." msgstr "" -"Použitím kalibrace průtoku dynamiky se mohou stále objevit některé problémy " -"s extruzí, jako například:\n" -"1. Přeextruze: Přebytečný materiál na vašem tištěném objektu, vytváření " -"bobrů nebo pupínků nebo se zdá, že vrstvy jsou tlustší než je očekáváno a " -"nejsou rovnoměrné.\n" -"2. Nedostatečná extruze: Velmi tenké vrstvy, slabá pevnost výplně nebo " -"mezery na horní vrstvě modelu, i když tisknete pomalu.\n" -"3. Slabá kvalita povrchu: Povrch vašich výtisků se zdá být drsný nebo " -"nevyrovnaný.\n" -"4. Slabá strukturální integrita: Výtisky se snadno lámají nebo se nezdají " -"být tak odolné, jak by měly být." +"Použitím kalibrace průtoku dynamiky se mohou stále objevit některé problémy s extruzí, jako například:\n" +"1. Přeextruze: Přebytečný materiál na vašem tištěném objektu, vytváření bobrů nebo pupínků nebo se zdá, " +"že vrstvy jsou tlustší než je očekáváno a nejsou rovnoměrné.\n" +"2. Nedostatečná extruze: Velmi tenké vrstvy, slabá pevnost výplně nebo mezery na horní vrstvě modelu, i " +"když tisknete pomalu.\n" +"3. Slabá kvalita povrchu: Povrch vašich výtisků se zdá být drsný nebo nevyrovnaný.\n" +"4. Slabá strukturální integrita: Výtisky se snadno lámají nebo se nezdají být tak odolné, jak by měly " +"být." msgid "" -"In addition, Flow Rate Calibration is crucial for foaming materials like LW-" -"PLA used in RC planes. These materials expand greatly when heated, and " -"calibration provides a useful reference flow rate." +"In addition, Flow Rate Calibration is crucial for foaming materials like LW-PLA used in RC planes. These " +"materials expand greatly when heated, and calibration provides a useful reference flow rate." msgstr "" -"Kromě toho je kalibrace průtoku klíčová pro pěnové materiály, jako je LW-PLA " -"používaný u modelů RC letadel. Tyto materiály se při zahřátí výrazně " -"rozšiřují a kalibrace poskytuje užitečný referenční průtok." +"Kromě toho je kalibrace průtoku klíčová pro pěnové materiály, jako je LW-PLA používaný u modelů RC " +"letadel. Tyto materiály se při zahřátí výrazně rozšiřují a kalibrace poskytuje užitečný referenční " +"průtok." msgid "" -"Flow Rate Calibration measures the ratio of expected to actual extrusion " -"volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular " -"filament, you usually won't need to perform a Flow Rate Calibration unless " -"you still see the listed defects after you have done other calibrations. For " -"more details, please check out the wiki article." +"Flow Rate Calibration measures the ratio of expected to actual extrusion volumes. The default setting " +"works well in Bambu Lab printers and official filaments as they were pre-calibrated and fine-tuned. For " +"a regular filament, you usually won't need to perform a Flow Rate Calibration unless you still see the " +"listed defects after you have done other calibrations. For more details, please check out the wiki " +"article." msgstr "" -"Kalibrace průtoku měří poměr očekávaných a skutečných objemů extruze. " -"Výchozí nastavení dobře funguje u tiskáren Bambu Lab a oficiálních " -"filamentů, protože byly předem zkalibrovány a jemně vyladěny. Pro běžný " -"filament obvykle nebudete potřebovat provádět kalibraci průtoku, pokud po " -"provedení jiných kalibrací stále vidíte uvedené nedostatky. Pro více " -"informací se podívejte do článku na naší wiki." +"Kalibrace průtoku měří poměr očekávaných a skutečných objemů extruze. Výchozí nastavení dobře funguje u " +"tiskáren Bambu Lab a oficiálních filamentů, protože byly předem zkalibrovány a jemně vyladěny. Pro běžný " +"filament obvykle nebudete potřebovat provádět kalibraci průtoku, pokud po provedení jiných kalibrací " +"stále vidíte uvedené nedostatky. Pro více informací se podívejte do článku na naší wiki." msgid "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " -"directly measuring the calibration patterns. However, please be advised that " -"the efficacy and accuracy of this method may be compromised with specific " -"types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not " -"be suitable for this calibration and can produce less-than-desirable " -"results.\n" +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly measuring the " +"calibration patterns. However, please be advised that the efficacy and accuracy of this method may be " +"compromised with specific types of materials. Particularly, filaments that are transparent or semi-" +"transparent, sparkling-particled, or have a high-reflective finish may not be suitable for this " +"calibration and can produce less-than-desirable results.\n" "\n" -"The calibration results may vary between each calibration or filament. We " -"are still improving the accuracy and compatibility of this calibration " -"through firmware updates over time.\n" +"The calibration results may vary between each calibration or filament. We are still improving the " +"accuracy and compatibility of this calibration through firmware updates over time.\n" "\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only " -"by those who fully understand its purpose and implications. Incorrect usage " -"can lead to sub-par prints or printer damage. Please make sure to carefully " -"read and understand the process before doing it." +"Caution: Flow Rate Calibration is an advanced process, to be attempted only by those who fully " +"understand its purpose and implications. Incorrect usage can lead to sub-par prints or printer damage. " +"Please make sure to carefully read and understand the process before doing it." msgstr "" -"Automatizovaná kalibrace průtoku využívá Mikro-Lidar technologii Bambu Lab, " -"která přímo měří kalibrační vzory. Nicméně, mějte na paměti, že účinnost a " -"přesnost této metody mohou být ovlivněny určitými typy materiálů. Zejména " -"filamenty, které jsou průhledné nebo poloprůhledné, s jiskřícími částicemi " -"nebo s vysokým odrazivým povrchem, nemusí být vhodné pro tuto kalibraci a " -"mohou produkovat méně než optimální výsledky.\n" +"Automatizovaná kalibrace průtoku využívá Mikro-Lidar technologii Bambu Lab, která přímo měří kalibrační " +"vzory. Nicméně, mějte na paměti, že účinnost a přesnost této metody mohou být ovlivněny určitými typy " +"materiálů. Zejména filamenty, které jsou průhledné nebo poloprůhledné, s jiskřícími částicemi nebo s " +"vysokým odrazivým povrchem, nemusí být vhodné pro tuto kalibraci a mohou produkovat méně než optimální " +"výsledky.\n" "\n" -"Výsledky kalibrace se mohou lišit mezi jednotlivými kalibracemi nebo " -"filamenty. Nadále zlepšujeme přesnost a kompatibilitu této kalibrace pomocí " -"aktualizací firmwaru.\n" +"Výsledky kalibrace se mohou lišit mezi jednotlivými kalibracemi nebo filamenty. Nadále zlepšujeme " +"přesnost a kompatibilitu této kalibrace pomocí aktualizací firmwaru.\n" "\n" -"Pozor: Kalibrace průtoku je pokročilý proces, který by měl být prováděn " -"pouze těmi, kteří plně rozumí jejímu účelu a důsledkům. Nesprávné použití " -"může vést k nepovedeným tiskům nebo poškození tiskárny. Před provedením " -"kalibrace si pečlivě přečtěte a porozumějte procesu." +"Pozor: Kalibrace průtoku je pokročilý proces, který by měl být prováděn pouze těmi, kteří plně rozumí " +"jejímu účelu a důsledkům. Nesprávné použití může vést k nepovedeným tiskům nebo poškození tiskárny. Před " +"provedením kalibrace si pečlivě přečtěte a porozumějte procesu." msgid "When you need Max Volumetric Speed Calibration" msgstr "Kdy potřebujete kalibraci maximální objemové rychlosti" @@ -10747,42 +10498,37 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "Našli jsme nejlepší kalibrační faktor pro průtok" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The " -"failed test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The failed test result would be " +"dropped." msgstr "" -"Část kalibrace selhala! Můžete podložku vyčistit a zkusit to znovu. Selhání " -"testovacího výsledku bude zahozeno." +"Část kalibrace selhala! Můžete podložku vyčistit a zkusit to znovu. Selhání testovacího výsledku bude " +"zahozeno." -msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in " -"the Name" -msgstr "" -"*Doporučujeme přidat do názvu také značku, materiál, typ a dokonce i úroveň " -"vlhkosti" +msgid "*We recommend you to add brand, materia, type, and even humidity level in the Name" +msgstr "*Doporučujeme přidat do názvu také značku, materiál, typ a dokonce i úroveň vlhkosti" msgid "Failed" msgstr "Selhalo" msgid "" -"Only one of the results with the same name will be saved. Are you sure you " -"want to overrides the other results?" -msgstr "" -"Bude uložen pouze jeden z výsledků se stejným názvem. Opravdu chcete přepsat " -"ostatní výsledky?" +"Only one of the results with the same name will be saved. Are you sure you want to overrides the other " +"results?" +msgstr "Bude uložen pouze jeden z výsledků se stejným názvem. Opravdu chcete přepsat ostatní výsledky?" #, c-format, boost-format msgid "" -"There is already a historical calibration result with the same name: %s. " -"Only one of the results with the same name is saved. Are you sure you want " -"to overrides the historical result?" +"There is already a historical calibration result with the same name: %s. Only one of the results with " +"the same name is saved. Are you sure you want to overrides the historical result?" msgstr "" -"Už existuje historický kalibrační výsledek se stejným názvem: %s. Bude " -"uložen pouze jeden z výsledků se stejným názvem. Opravdu chcete přepsat " -"historický výsledek?" +"Už existuje historický kalibrační výsledek se stejným názvem: %s. Bude uložen pouze jeden z výsledků se " +"stejným názvem. Opravdu chcete přepsat historický výsledek?" msgid "Please find the best line on your plate" msgstr "Najděte nejlepší linku na své podložce" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "Prosím, najděte roh s dokonalým stupněm extruze" + msgid "Input Value" msgstr "Vstupní hodnota" @@ -10824,7 +10570,7 @@ msgstr "Přeskočit kalibraci 2" #, c-format, boost-format msgid "flow ratio : %s " -msgstr "poměr průtoku: %s" +msgstr "poměr průtoku: %s " msgid "Please choose a block with smoothest top surface" msgstr "Vyberte blok s nejhladším horním povrchem" @@ -10848,11 +10594,11 @@ msgid "Title" msgstr "Název" msgid "" -"A test model will be printed. Please clear the build plate and place it back " -"to the hot bed before calibration." +"A test model will be printed. Please clear the build plate and place it back to the hot bed before " +"calibration." msgstr "" -"Bude proveden tisk testovacího modelu. Před kalibrací prosím vyčistěte " -"stavební podložku a umístěte ji zpět na vyhřívaný podstavec." +"Bude proveden tisk testovacího modelu. Před kalibrací prosím vyčistěte stavební podložku a umístěte ji " +"zpět na vyhřívaný podstavec." msgid "Printing Parameters" msgstr "Parametry tisku" @@ -10882,8 +10628,7 @@ msgid "" msgstr "" "Tipy na kalibrační materiál: \n" "- Materiály, které mohou sdílet stejnou teplotu podložky\n" -"- Různá značka a skupina filamentu (Značka = Bambu, Skupina = Základní, " -"Matný)" +"- Různá značka a skupina filamentu (Značka = Bambu, Skupina = Základní, Matný)" msgid "Error desc" msgstr "Popis chyby" @@ -10891,6 +10636,12 @@ msgstr "Popis chyby" msgid "Extra info" msgstr "Další informace" +msgid "Pattern" +msgstr "Vzor" + +msgid "Method" +msgstr "Metoda" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s není kompatibilní s %s" @@ -10901,6 +10652,21 @@ msgstr "TPU není podporováno pro automatickou kalibraci dynamiky průtoku." msgid "Connecting to printer" msgstr "Připojování k tiskárně" +msgid "From k Value" +msgstr "Od hodnoty k" + +msgid "To k Value" +msgstr "Do hodnoty k" + +msgid "Step value" +msgstr "Krok hodnoty" + +msgid "0.5" +msgstr "0.5" + +msgid "0.005" +msgstr "0.005" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "Průměr trysky byl synchronizován z Nastavení tiskárny" @@ -10950,13 +10716,15 @@ msgid "Finished" msgstr "Dokončeno" msgid "Multiple resolved IP addresses" -msgstr "" +msgstr "Nejednoznačná IP adresa" #, boost-format msgid "" "There are several IP addresses resolving to hostname %1%.\n" "Please select one that should be used." msgstr "" +"Překlad doménového jména %1% na IP adresu je nejednoznačný.\n" +"Vyberte prosím tu, která má být použita." msgid "Unable to perform boolean operation on selected parts" msgstr "Nelze provést booleovskou operaci na vybraných částech" @@ -10998,7 +10766,7 @@ msgid "Delete input" msgstr "Smazat vstup" msgid "Send G-Code to printer host" -msgstr "" +msgstr "Odeslat G-Kód do tiskového serveru" msgid "Upload to Printer Host with the following filename:" msgstr "Nahrát do tiskového serveru s následujícím názvem souboru:" @@ -11007,12 +10775,15 @@ msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Pokud je to nutné, použijte pro oddělení složek lomítko (/)." msgid "Upload to storage" -msgstr "" +msgstr "Nahrát do úložiště" #, c-format, boost-format msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "Název nahrávaného souboru neskončí s \"%s\". Přejete si pokračovat?" +msgid "Upload" +msgstr "Nahrát" + msgid "Print host upload queue" msgstr "Fronta nahrávání tiskového serveru" @@ -11033,7 +10804,7 @@ msgid "Filename" msgstr "Název souboru" msgid "Message" -msgstr "" +msgstr "Zpráva" msgid "Cancel selected" msgstr "Zrušit vybrané" @@ -11051,7 +10822,7 @@ msgid "Cancelling" msgstr "Ruší se" msgid "Error uploading to print host" -msgstr "" +msgstr "Chyba při nahrávání do tiskového serveru" msgid "PA Calibration" msgstr "PA Kalibrace" @@ -11074,9 +10845,6 @@ msgstr "PA Linky" msgid "PA Pattern" msgstr "PA Vzor" -msgid "Method" -msgstr "Metoda" - msgid "Start PA: " msgstr "Spustit PA: " @@ -11154,11 +10922,13 @@ msgstr "krok: " msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" "Zadejte prosím platné hodnoty:\n" -"start > 0 krok >= 0\n" +"start > 0 \n" +"krok >= 0\n" "konec > začátek + krok)" msgid "VFA test" @@ -11172,11 +10942,13 @@ msgstr "Koncová rychlost: " msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" "Zadejte prosím platné hodnoty:\n" -"start > 10 kroků >= 0\n" +"start > 10 \n" +"krok >= 0\n" "konec > začátek + krok)" msgid "Start retraction length: " @@ -11206,12 +10978,8 @@ msgstr "Úspěch!" msgid "Refresh Printers" msgstr "Obnovit tiskárny" -msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." -msgstr "" -"Soubor HTTPS CA je volitelný. Je nutný pouze pokud použijte HTTPS certifikát " -"s vlastním podpisem." +msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." +msgstr "Soubor HTTPS CA je volitelný. Je nutný pouze pokud použijte HTTPS certifikát s vlastním podpisem." msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Soubory s certifikátem (*.crt, *.pem)|*.crt;*.pem|Všechny soubory|*.*" @@ -11220,54 +10988,51 @@ msgid "Open CA certificate file" msgstr "Otevřít soubor s certifikátem CA" #, c-format, boost-format -msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store " -"or Keychain." -msgstr "" -"V tomto systému používá %s certifikáty HTTPS ze systému Certificate Store " -"nebo Keychain." +msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." +msgstr "V tomto systému používá %s certifikáty HTTPS ze systému Certificate Store nebo Keychain." -msgid "" -"To use a custom CA file, please import your CA file into Certificate Store / " -"Keychain." -msgstr "" -"Chcete-li použít vlastní soubor CA, importujte soubor CA do Certificate " -"Store / Keychain." +msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." +msgstr "Chcete-li použít vlastní soubor CA, importujte soubor CA do Certificate Store / Keychain." msgid "Connection to printers connected via the print host failed." +msgstr "Připojení k tiskárnám připojených prostřednictvím tiskového serveru se nezdařilo." + +msgid "The start, end or step is not valid value." +msgstr "Počáteční, koncová nebo kroková hodnota není platná." + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too large, or the step is too small" msgstr "" -"Připojení k tiskárnám připojených prostřednictvím tiskového serveru se " -"nezdařilo." +"Nelze provést kalibraci: možná je rozsah kalibračních hodnot nastaven příliš velký nebo krok je příliš " +"malý" + +msgid "Need select printer" +msgstr "Je nutné vybrat tiskárnu" #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" -"Did you know how to control view and object/part selection with mouse and " -"touchpanel in the 3D scene?" +"Did you know how to control view and object/part selection with mouse and touchpanel in the 3D scene?" msgstr "" "Operace v 3D scéně\n" -"Věděli jste, že můžete ovládat zobrazení a výběr objektů nebo částí pomocí " -"myši a dotykového panelu v 3D scéně?" +"Věděli jste, že můžete ovládat zobrazení a výběr objektů nebo částí pomocí myši a dotykového panelu v 3D " +"scéně?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the " -"cutting tool?" +"Did you know that you can cut a model at any angle and position with the cutting tool?" msgstr "" "Nástroj pro řezání\n" -"Věděli jste, že můžete pomocí řezacího nástroje provádět řezy modelu pod " -"různými úhly a pozicemi?" +"Věděli jste, že můžete pomocí řezacího nástroje provádět řezy modelu pod různými úhly a pozicemi?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" "Fix Model\n" -"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " -"problems?" +"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems?" msgstr "" "Opravit model\n" -"Věděli jste, že můžete opravit poškozený 3D model a vyhnout se tak mnoha " -"problémům při slicování?" +"Věděli jste, že můžete opravit poškozený 3D model a vyhnout se tak mnoha problémům při slicování?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -11283,202 +11048,171 @@ msgid "" "Did you know that you can auto-arrange all objects in your project?" msgstr "" "Automatické uspořádání\n" -"Věděli jste, že můžete automaticky uspořádat všechny objekty ve vašem " -"projektu?" +"Věděli jste, že můžete automaticky uspořádat všechny objekty ve vašem projektu?" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" "Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for " -"printing by a simple click?" +"Did you know that you can rotate objects to an optimal orientation for printing by a simple click?" msgstr "" "Automatická Orientace\n" -"Věděli jste, že můžete pomocí jednoho kliknutí otočit objekty do optimálního " -"natočení pro tisk?" +"Věděli jste, že můžete pomocí jednoho kliknutí otočit objekty do optimálního natočení pro tisk?" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" "Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces " -"sits on the print bed? Select the \"Place on face\" function or press the " -"F key." +"Did you know that you can quickly orient a model so that one of its faces sits on the print bed? Select " +"the \"Place on face\" function or press the F key." msgstr "" "Plochou na podložku\n" -"Věděli jste, že můžete rychle nastavit orientaci modelu tak, aby jedna z " -"jeho stěn spočívala na tiskovém podloží? Vyberte funkci \"Plochou na podložku" -"\" nebo stiskněte klávesu F." +"Věděli jste, že můžete rychle nastavit orientaci modelu tak, aby jedna z jeho stěn spočívala na tiskovém " +"podloží? Vyberte funkci \"Plochou na podložku\" nebo stiskněte klávesu F." #: resources/data/hints.ini: [hint:Object List] msgid "" "Object List\n" -"Did you know that you can view all objects/parts in a list and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts in a list and change settings for each object/part?" msgstr "" "Seznam objektů\n" -"Věděli jste, že si můžete zobrazit všechny objekty/části v seznamu a upravit " -"nastavení pro každý objekt/část zvlášť?" +"Věděli jste, že si můžete zobrazit všechny objekty/části v seznamu a upravit nastavení pro každý objekt/" +"část zvlášť?" #: resources/data/hints.ini: [hint:Simplify Model] msgid "" "Simplify Model\n" -"Did you know that you can reduce the number of triangles in a mesh using the " -"Simplify mesh feature? Right-click the model and select Simplify model. Read " -"more in the documentation." +"Did you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? " +"Right-click the model and select Simplify model. Read more in the documentation." msgstr "" "Zjednodušit model\n" -"Věděli jste, že můžete snížit počet trojúhelníků v síti pomocí funkce " -"Zjednodušit síť? Klikněte pravým tlačítkem na model a vyberte možnost " -"Zjednodušit model. Více informací najdete v dokumentaci." +"Věděli jste, že můžete snížit počet trojúhelníků v síti pomocí funkce Zjednodušit síť? Klikněte pravým " +"tlačítkem na model a vyberte možnost Zjednodušit model. Více informací najdete v dokumentaci." #: resources/data/hints.ini: [hint:Slicing Parameter Table] msgid "" "Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts on a table and change settings for each object/part?" msgstr "" "Tabulka parametrů pro Slicování\n" -"Věděli jste, že můžete zobrazit všechny objekty/části v tabulce a změnit " -"nastavení pro každý objekt/část?" +"Věděli jste, že můžete zobrazit všechny objekty/části v tabulce a změnit nastavení pro každý objekt/část?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] msgid "" "Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy " -"colorizing or printing?" +"Did you know that you can split a big object into small ones for easy colorizing or printing?" msgstr "" "Rozdělit na objekty/části\n" -"Věděli jste, že můžete rozdělit velký objekt na menší části pro snadné " -"barevné zpracování nebo tisk?" +"Věděli jste, že můžete rozdělit velký objekt na menší části pro snadné barevné zpracování nebo tisk?" #: resources/data/hints.ini: [hint:Subtract a Part] msgid "" "Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative " -"part modifier? That way you can, for example, create easily resizable holes " -"directly in Orca Slicer. Read more in the documentation." +"Did you know that you can subtract one mesh from another using the Negative part modifier? That way you " +"can, for example, create easily resizable holes directly in Orca Slicer. Read more in the documentation." msgstr "" "Odečíst část\n" -"Věděli jste, že můžete odečíst jednu síťovinu od druhé pomocí negativního " -"modifikátoru části? Tímto způsobem můžete například vytvářet snadno " -"nastavitelné otvory přímo v programu Orca Slicer. Přečtěte si více v " -"dokumentaci." +"Věděli jste, že můžete odečíst jednu síťovinu od druhé pomocí negativního modifikátoru části? Tímto " +"způsobem můžete například vytvářet snadno nastavitelné otvory přímo v programu Orca Slicer. Přečtěte si " +"více v dokumentaci." #: resources/data/hints.ini: [hint:STEP] msgid "" "STEP\n" -"Did you know that you can improve your print quality by slicing a STEP file " -"instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a " -"lower resolution STL. Give it a try!" +"Did you know that you can improve your print quality by slicing a STEP file instead of an STL?\n" +"Orca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it " +"a try!" msgstr "" "STEP\n" -"Věděli jste, že můžete zlepšit kvalitu svého tisku tím, že rozdělíte soubor " -"STEP namísto STL?\n" -"Orca Slicer podporuje rozdělování souborů STEP, což poskytuje hladší " -"výsledky než s nižším rozlišením STL. Vyzkoušejte to!" +"Věděli jste, že můžete zlepšit kvalitu svého tisku tím, že rozdělíte soubor STEP namísto STL?\n" +"Orca Slicer podporuje rozdělování souborů STEP, což poskytuje hladší výsledky než s nižším rozlišením " +"STL. Vyzkoušejte to!" #: resources/data/hints.ini: [hint:Z seam location] msgid "" "Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even " -"paint it on your print, to have it in a less visible location? This improves " -"the overall look of your model. Check it out!" +"Did you know that you can customize the location of the Z seam, and even paint it on your print, to have " +"it in a less visible location? This improves the overall look of your model. Check it out!" msgstr "" "Z poloha švu\n" -"Věděli jste, že můžete přizpůsobit umístění Z spoje a dokonce ho na svém " -"tisku namalovat, aby byl ve méně viditelné poloze? Tím se zlepší celkový " -"vzhled vašeho modelu. Podívejte se na to!" +"Věděli jste, že můžete přizpůsobit umístění Z spoje a dokonce ho na svém tisku namalovat, aby byl ve " +"méně viditelné poloze? Tím se zlepší celkový vzhled vašeho modelu. Podívejte se na to!" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking " -"prints? Depending on the material, you can improve the overall finish of the " -"printed model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking prints? Depending on the material, " +"you can improve the overall finish of the printed model by doing some fine-tuning." msgstr "" "Jemné doladění pro rychlost průtoku\n" -"Věděli jste, že průtokovou rychlost lze jemně doladit pro ještě lepší vzhled " -"tisku? V závislosti na materiálu můžete zlepšit celkový povrch tištěného " -"modelu pomocí drobného doladění." +"Věděli jste, že průtokovou rychlost lze jemně doladit pro ještě lepší vzhled tisku? V závislosti na " +"materiálu můžete zlepšit celkový povrch tištěného modelu pomocí drobného doladění." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" "Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into " -"individual plates ready to print? This will simplify the process of keeping " -"track of all the parts." +"Did you know that you can split a model that has a lot of parts into individual plates ready to print? " +"This will simplify the process of keeping track of all the parts." msgstr "" "Rozdělte své tisky na podložky\n" -"Věděli jste, že můžete rozdělit model s mnoha díly na jednotlivé podložky " -"připravené k tisku? Tímto zjednodušíte proces sledování všech dílů." +"Věděli jste, že můžete rozdělit model s mnoha díly na jednotlivé podložky připravené k tisku? Tímto " +"zjednodušíte proces sledování všech dílů." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer -#: Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] msgid "" "Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive " -"Layer Height option? Check it out!" +"Did you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it " +"out!" msgstr "" "Zrychlete svůj 3D tisk pomocí adaptivní výšky vrstvy\n" -"Věděli jste, že můžete ještě rychleji vytisknout své 3D modely pomocí " -"možnosti adaptivní výšky vrstvy? Tímto způsobem dosáhnete zkrácení celkového " -"času tisku!" +"Věděli jste, že můžete ještě rychleji vytisknout své 3D modely pomocí možnosti adaptivní výšky vrstvy? " +"Tímto způsobem dosáhnete zkrácení celkového času tisku!" #: resources/data/hints.ini: [hint:Support painting] msgid "" "Support painting\n" -"Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the " -"model that actually need it." +"Did you know that you can paint the location of your supports? This feature makes it easy to place the " +"support material only on the sections of the model that actually need it." msgstr "" "Malování podpěr\n" -"Věděli jste, že můžete malovat umístění podpěr? Tato funkce umožňuje snadné " -"umístění podpůrného materiálu pouze na části modelu, které ho skutečně " -"potřebují." +"Věděli jste, že můžete malovat umístění podpěr? Tato funkce umožňuje snadné umístění podpůrného " +"materiálu pouze na části modelu, které ho skutečně potřebují." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" "Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree " -"supports work great for organic models, while saving filament and improving " -"print speed. Check them out!" +"Did you know that you can choose from multiple types of supports? Tree supports work great for organic " +"models, while saving filament and improving print speed. Check them out!" msgstr "" "Různé typy podpěr\n" -"Věděli jste, že můžete vybírat z různých typů podpěr? Stromové podpěry se " -"skvěle hodí pro organické modely a zároveň šetří filament a zlepšuje " -"rychlost tisku. Podívejte se na ně!" +"Věděli jste, že můžete vybírat z různých typů podpěr? Stromové podpěry se skvěle hodí pro organické " +"modely a zároveň šetří filament a zlepšuje rychlost tisku. Podívejte se na ně!" #: resources/data/hints.ini: [hint:Printing Silk Filament] msgid "" "Printing Silk Filament\n" -"Did you know that Silk filament needs special consideration to print it " -"successfully? Higher temperature and lower speed are always recommended for " -"the best results." +"Did you know that Silk filament needs special consideration to print it successfully? Higher temperature " +"and lower speed are always recommended for the best results." msgstr "" "Tisk hedvábného filamentu\n" -"Věděli jste, že tisk hedvábného filamentu vyžaduje zvláštní zvážení pro " -"úspěšné provedení? Vždy se doporučuje vyšší teplota a nižší rychlost pro " -"dosažení nejlepších výsledků." +"Věděli jste, že tisk hedvábného filamentu vyžaduje zvláštní zvážení pro úspěšné provedení? Vždy se " +"doporučuje vyšší teplota a nižší rychlost pro dosažení nejlepších výsledků." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" "Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with " -"the printing surface, it's recommended to use a brim?" +"Did you know that when printing models have a small contact interface with the printing surface, it's " +"recommended to use a brim?" msgstr "" "Límec pro lepší přilnavost\n" -"Věděli jste, že při tisku modelů s malým kontaktním rozhraním s tiskovou " -"plochou se doporučuje použití Límce (brim)?" +"Věděli jste, že při tisku modelů s malým kontaktním rozhraním s tiskovou plochou se doporučuje použití " +"Límce (brim)?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" "Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at " -"one time?" +"Did you know that you can set slicing parameters for all selected objects at one time?" msgstr "" "Nastavte parametry pro více objektů\n" -"Věděli jste, že můžete najednou nastavit parametry pro všechny vybrané " -"objekty?" +"Věděli jste, že můžete najednou nastavit parametry pro všechny vybrané objekty?" #: resources/data/hints.ini: [hint:Stack objects] msgid "" @@ -11491,19 +11225,152 @@ msgstr "" #: resources/data/hints.ini: [hint:Flush into support/objects/infill] msgid "" "Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into " -"support/objects/infill during filament change?" +"Did you know that you can save the wasted filament by flushing them into support/objects/infill during " +"filament change?" msgstr "" "Čištit do podpěr/objektů/výplně\n" -"Věděli jste, že můžete ušetřit zahozené filamenty tím, že je očistíte do " -"podpěr/objektů/výplně během výměny filamentu?" +"Věděli jste, že můžete ušetřit zahozené filamenty tím, že je očistíte do podpěr/objektů/výplně během " +"výměny filamentu?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" "Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill " -"density to improve the strength of the model?" +"Did you know that you can use more wall loops and higher sparse infill density to improve the strength " +"of the model?" msgstr "" "Zvýšení pevnosti\n" -"Věděli jste, že můžete použít více opakování stěn a vyšší hustotu řídké " -"výplně pro zvýšení pevnosti modelu?" +"Věděli jste, že můžete použít více opakování stěn a vyšší hustotu řídké výplně pro zvýšení pevnosti " +"modelu?" + +#~ msgid "Cali" +#~ msgstr "Kalibrace" + +#~ msgid "Calibration of extrusion" +#~ msgstr "Kalibrace extruze" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Zasuňte nový filament do extruderu" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial layer for more than %d degree " +#~ "centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "Teplota podložky ostatních vrstev je nižší než teplota podložky první vrstvy o více než %d stupňů " +#~ "Celsia.\n" +#~ "To může způsobit, že se modely během tisku uvolní z podložky" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air circulation or reduce the " +#~ "temperature of the hot bed" +#~ msgstr "" +#~ "Teplota podložky je vyšší než teplota vitrifikace tohoto filamentu.\n" +#~ "To může způsobit ucpání trysky a selhání tisku\n" +#~ "Nechte tiskárnu během procesu tisku otevřenou, abyste zajistili cirkulaci vzduchu nebo snížení " +#~ "teploty podložky" + +#~ msgid "Total Time Estimation" +#~ msgstr "Celkový odhad času" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Identifikace rezonanční frekvence" + +#~ msgid "Immediately score" +#~ msgstr "Okamžitě ohodnotit" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "Prosím, ohodnoťte svůj oblíbený model z Bambu Market." + +#~ msgid "Score" +#~ msgstr "Hodnocení" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bamabu Engineering Podložka" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bambu vysoká teplota Podlozky" + +#~ msgid "Can't connect to the printer" +#~ msgstr "Nelze se připojit k tiskárně" + +#~ msgid "Recommended temperature range" +#~ msgstr "Doporučený teplotní rozsah" + +#~ msgid "High Temp Plate" +#~ msgstr "High Temp Podložka" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means the filament does not support " +#~ "to print on the High Temp Plate" +#~ msgstr "" +#~ "Toto je teplota podložky, když je instalována konstrukční podložka. Hodnota 0 znamená, že filament " +#~ "nepodporuje tisk na High Temp Podložku" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Tloušťka vnitřní podpěry mostu" + +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of internal bridges.These support " +#~ "loops could prevent internal bridges from extruding over the air and improve the top surface quality, " +#~ "especially when the sparse infill density is low.This value determines the thickness of the support " +#~ "loops. 0 means disable this feature" +#~ msgstr "" +#~ "Pokud je povoleno, podpůrné smyčky budou generovány pod obrysy interních mostů. Tyto podpůrné smyčky " +#~ "mohou zabránit extruzi materiálu do vzduchu a zlepšit kvalitu horního povrchu, zejména když je nízká " +#~ "hustota výplně. Tato hodnota určuje tloušťku podpůrných smyček. Hodnota 0 znamená, že tato funkce je " +#~ "zakázána." + +#, fuzzy, c-format, boost-format +#~ msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#~ msgstr "Klipper max_accel_to_decel bude upraven na toto % zrychlení" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the supports into a regular grid will " +#~ "create more stable supports (default), while snug support towers will save material and reduce object " +#~ "scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and save a lot of material " +#~ "(default), while hybrid style will create similar structure to normal support under large flat " +#~ "overhangs." +#~ msgstr "" +#~ "Styl a tvar podpěry. Pro normální podpěru vytvoří promítnutí podpěr do pravidelné mřížky stabilnější " +#~ "podpěry (výchozí), zatímco přiléhavé podpěrné věže šetří materiál a omezují zjizvení objektů.\n" +#~ "Pro podpěru stromu se tenký styl spojí větví se agresivněji a ušetří spoustu materiálu (výchozí), " +#~ "zatímco hybridní styl vytvoří podobnou strukturu jako normální podpěr a pod velkými plochými převisy." + +#~ msgid "Target chamber temperature" +#~ msgstr "Cílová teplota v komoře" + +#~ msgid "Bed temperature difference" +#~ msgstr "Rozdíl teplot podložky" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial layer for more than this " +#~ "threshold. Too low bed temperature of other layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "Nedoporučujeme, aby teplota podložky jiné vrstvy byla nižší než počáteční vrstva o více než tento " +#~ "limit. Příliš nízká teplota podložky jiné vrstvy může způsobit, že se model uvolní z vyhřívané " +#~ "podložky" + +#~ msgid "Orient the model" +#~ msgstr "Orientujte model" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 0 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Zadejte prosím platné hodnoty:\n" +#~ "start > 0 krok >= 0\n" +#~ "konec > začátek + krok)" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 10 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Zadejte prosím platné hodnoty:\n" +#~ "start > 10 kroků >= 0\n" +#~ "konec > začátek + krok)" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 07abe0beec..393cc14512 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-16 08:15+0200\n" +"POT-Creation-Date: 2023-10-03 14:55+0200\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -670,6 +670,9 @@ msgstr "Laden einer Modusansicht" msgid "Choose one file (3mf):" msgstr "Wählen sie eine Datei (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "Wählen sie eine oder mehrere Dateien (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Wählen sie eine oder mehrere Dateien (3mf/step/stl/svg/obj/amf):" @@ -1541,6 +1544,9 @@ msgstr "Verbinden..." msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "Leer" @@ -1553,12 +1559,6 @@ msgstr "Automatisch nachfüllen" msgid "AMS not connected" msgstr "AMS nicht verbunden" -msgid "Cali" -msgstr "Kalibrierung" - -msgid "Calibration of extrusion" -msgstr "Kalibrierung der Extrusion" - msgid "Load Filament" msgstr "Laden" @@ -1591,6 +1591,9 @@ msgstr "Erneut Kalibrieren" msgid "Cancel calibration" msgstr "Kalibrierung abbrechen" +msgid "Idling..." +msgstr "Pause..." + msgid "Heat the nozzle" msgstr "Düse aufheizen" @@ -1606,8 +1609,14 @@ msgstr "Neues Filament in den Extruder schieben" msgid "Purge old filament" msgstr "Altes Filament entfernen" -msgid "Push new filament into the extruder" -msgstr "Neues Filament in den Extruder schieben" +msgid "Feed Filament" +msgstr "Filament zuführen" + +msgid "Confirm extruded" +msgstr "Bestätigen es wurde extrudiert" + +msgid "Check filament location" +msgstr "Überprüfen Sie das Filament" msgid "Grab new filament" msgstr "Neues Filament holen" @@ -2480,30 +2489,6 @@ msgid "" msgstr "" "Die empfohlene Düsentemperatur für diesen Filamenttyp beträgt [%d, %d] °C" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"Die Betttemperatur der anderen Schicht ist um mehr als %d Grad Celsius " -"niedriger als die Betttemperatur der ersten Schicht.\n" -"Dies kann dazu führen, dass sich das Modell während des Drucks von der " -"Druckplatte löst" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"Die Druckbetttemperatur ist höher als die Verglasungstemperatur dieses " -"Filaments.\n" -"Dies kann zu einer Verstopfung der Düse und zu Druckfehlern führen.\n" -"Bitte lassen Sie den Drucker während des Druckvorgangs geöffnet, um die " -"Luftzirkulation zu gewährleisten, oder reduzieren Sie die Temperatur des " -"Heizbetts." - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2511,6 +2496,16 @@ msgstr "" "Zu kleine maximale volumetrische Geschwindigkeit.\n" "Wert wurde auf 0,5 zurückgesetzt" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" +"Die aktuelle Kammer-Temperatur ist höher als die sichere Temperatur des " +"Materials, dies kann zu Materialerweichung und Verstopfung führen. Die " +"maximale sichere Temperatur für das Material beträgt %d" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2576,6 +2571,9 @@ msgstr "" "Zeitraffers auf \n" "traditional steht." +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr " Maschinen mit I3-Struktur erzeugen jedoch keine Zeitraffer-Videos." + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2706,6 +2704,36 @@ msgstr "Pausiert aufgrund einer Fehlfunktion der Düsentemperatur" msgid "Paused due to heat bed temperature malfunction" msgstr "Pausiert aufgrund einer Fehlfunktion der Heizbetttemperatur" +msgid "Filament unloading" +msgstr "Entladen des Filaments" + +msgid "Skip step pause" +msgstr "Überspringen der Pause" + +msgid "Filament loading" +msgstr "Laden des Filaments" + +msgid "Motor noise calibration" +msgstr "Motorgeräuschkalibrierung" + +msgid "Paused due to AMS lost" +msgstr "Pausiert aufgrund eines AMS-Verlustes" + +msgid "Paused due to low speed of the heat break fan" +msgstr "Pausiert aufgrund einer zu niedrigen Geschwindigkeit des Heatbreak-Lüfters" + +msgid "Paused due to chamber temperature control error" +msgstr "Pausiert aufgrund eines Fehlers bei der Kammer-Temperaturregelung" + +msgid "Cooling chamber" +msgstr "Kühlung der Kammer" + +msgid "Paused by the Gcode inserted by user" +msgstr "Pausiert durch den vom Benutzer eingefügten G-Code" + +msgid "Motor noise showoff" +msgstr "Motorgeräusch-Showoff" + msgid "MC" msgstr "MC" @@ -2742,6 +2770,33 @@ msgstr "Authentifizierung fehlgeschlagen." msgid "Update failed." msgstr "Update fehlgeschlagen." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" +"Die aktuelle Kammer-Temperatur oder die Ziel-Kammer-Temperatur überschreitet " +"45℃. Um ein Verstopfen des Extruders zu vermeiden, ist es nicht erlaubt, " +"Filament mit niedriger Temperatur (PLA/PETG/TPU) zu laden." + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" +"Filament mit niedriger Temperatur (PLA/PETG/TPU) ist im Extruder geladen. Um " +"ein Verstopfen des Extruders zu vermeiden, ist es nicht erlaubt, die " +"Kammertemperatur über 45℃ einzustellen." + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" +"Wenn Sie die Kammertemperatur unter 40℃ einstellen, wird die " +"Kammertemperaturregelung nicht aktiviert. Die Ziel-Kammertemperatur wird " +"automatisch auf 0℃ eingestellt." + msgid "Failed to start printing job" msgstr "Druckauftrag konnte nicht gestartet werden" @@ -2874,12 +2929,15 @@ msgstr "Gereinigt" msgid "Total" msgstr "Gesamt" -msgid "Total Time Estimation" -msgstr "Geschätzte Gesamtdauer" +msgid "Total Estimation" +msgstr "Gesamtschätzung" msgid "Total time" msgstr "Gesamtdauer" +msgid "Total cost" +msgstr "Geamtkosten" + msgid "up to" msgstr "bis zu" @@ -2967,9 +3025,6 @@ msgstr "Drucker" msgid "Print settings" msgstr "Druckeinstellungen" -msgid "Total Estimation" -msgstr "Gesamtschätzung" - msgid "Time Estimation" msgstr "Geschätzte Zeit" @@ -3078,6 +3133,9 @@ msgstr "Erlaube mehrere Materialien auf einer Druckplatte" msgid "Avoid extrusion calibration region" msgstr "Vermeiden Sie den Bereich der Extrusionskalibrierung" +msgid "Align to Y axis" +msgstr "An Y-Achse ausrichten" + msgid "Add" msgstr "Hinzufügen" @@ -3135,7 +3193,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Größe:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3175,8 +3233,11 @@ msgstr "Mikro-Lidar Kalibrierung" msgid "Bed leveling" msgstr "Druckbettnivellierung" -msgid "Resonance frequency identification" -msgstr "Resonanzfrequenzidentifikation" +msgid "Vibration compensation" +msgstr "Vibrationskompensation" + +msgid "Motor noise cancellation" +msgstr "Motorgeräuschunterdrückung" msgid "Calibration program" msgstr "Kalibrierungsprogramm" @@ -3195,6 +3256,9 @@ msgstr "Durchfluss-Kalibrierung" msgid "Start Calibration" msgstr "Kalibrierung starten" +msgid "No step selected" +msgstr "Kein Schritt ausgewählt" + msgid "Completed" msgstr "Abgeschlossen" @@ -3274,10 +3338,6 @@ msgstr "" "Bevor ein neues Modell erstellt wird, wird %1% geschlossen. Möchten Sie " "fortfahren?" -#, fuzzy -msgid "Upload" -msgstr "Entladen" - msgid "Slice plate" msgstr "Aktuelle Platte slicen" @@ -3959,12 +4019,22 @@ msgstr "0" msgid "Layer: N/A" msgstr "Schicht: N/A" -msgid "Immediately score" -msgstr "Direktpunktzahl" - msgid "Clear" msgstr "Löschen" +msgid "How do you like this printing file?" +msgstr "Wie gefällt Ihnen diese Druckdatei?" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" +"(Das Modell wurde bereits bewertet. Ihre Bewertung überschreibt die " +"vorherige Bewertung.)" + +msgid "Rate" +msgstr "Bewerten" + msgid "Camera" msgstr "Kamera" @@ -4031,13 +4101,6 @@ msgstr "" msgid "Layer: %s" msgstr "Schicht: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "" -"Bitte geben Sie eine Punktzahl für Ihr Lieblingsmodell von Bambu Market ab." - -msgid "Score" -msgstr "Punktzahl" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Schicht: %d/%d" @@ -4081,6 +4144,113 @@ msgstr "Verrückt" msgid "Can't start this without SD card." msgstr "Kann ohne MicroSD-Karte nicht gestartet werden." +msgid "Rate the Print Profile" +msgstr "Bewerten Sie das Druckprofil" + +msgid "Comment" +msgstr "Kommentar" + +msgid "Rate this print" +msgstr "Bewerten Sie diesen Druck" + +msgid "Add Photo" +msgstr "Foto hinzufügen" + +msgid "Delete Photo" +msgstr "Foto löschen" + +msgid "Submit" +msgstr "Übermitteln" + +msgid "Please click on the star first." +msgstr "Bitte klicken Sie zuerst auf den Stern." + +msgid "InFo" +msgstr "InFo" + +msgid "Get oss config failed." +msgstr "Fehler beim Abrufen der OSS-Konfiguration." + +msgid "Upload Pictrues" +msgstr "Bilder hochladen" + +msgid "Number of images successfully uploaded" +msgstr "Bilder erfolgreich hochgeladenen " + +msgid " upload failed" +msgstr "Hochladen fehlgeschlagen" + +msgid " upload config prase failed\n" +msgstr " Hochladen der Konfiguration fehlgeschlagen\n" + +msgid " No corresponding storage bucket\n" +msgstr " Kein entsprechender Speicher\n" + +msgid " can not be opened\n" +msgstr " Kann nicht geöffnet werden\n" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" +"Die folgenden Probleme sind während des Upload-Vorgangs aufgetreten. Möchten " +"Sie sie ignorieren?\n" +"\n" + +msgid "info" +msgstr "Infos" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" +"Die Druckergebnisse werden synchronisiert. Bitte versuchen Sie es in wenigen " +"Sekunden erneut." + +msgid "Upload failed\n" +msgstr "Hochladen fehlgeschlagen\n" + +msgid "obtaining instance_id failed\n" +msgstr "Abrufen der Instanz-ID fehlgeschlagen\n" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" +"Ihr Kommentarergebnis kann aus einigen Gründen nicht hochgeladen werden. " +"Wie folgt:\n" +"\n" +" Fehlercode: " + +msgid "error message: " +msgstr "Fehlermeldung: " + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" +"\n" +"\n" +"Möchten Sie zur Webseite für die Bewertung weitergeleitet werden?" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" +"Einige Ihrer Bilder konnten nicht hochgeladen werden. Möchten Sie zur " +"Webseite für die Bewertung weitergeleitet werden?" + +msgid "You can select up to 16 images." +msgstr "Sie können bis zu 16 Bilder auswählen." + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" +"Um eine positive Bewertung (4 oder 5 Sterne) abzugeben, ist mindestens ein " +"erfolgreicher Druck dieses Druckprofils erforderlich." + msgid "Status" msgstr "Status" @@ -4207,6 +4377,9 @@ msgstr "Warnung:" msgid "Export successfully." msgstr "Export erfolgreich." +msgid "Model file downloaded." +msgstr "Modelldatei heruntergeladen." + msgid "Serious warning:" msgstr "Wichtige Warnung:" @@ -4295,6 +4468,9 @@ msgstr "Inspektion der ersten Schicht" msgid "Auto-recovery from step loss" msgstr "Automatische Wiederherstellung bei Positionsverlust (Schrittverlust)" +msgid "Allow Prompt Sound" +msgstr "Erlaube akustische Signale" + msgid "Global" msgstr "Allgemein" @@ -4456,6 +4632,14 @@ msgstr "" "ändern Sie das Filament, da sich sonst die Düse abgenutzt oder beschädigt " "wird." +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" +"Die Aktivierung der traditionellen Zeitrafferfotografie kann zu " +"Oberflächenfehlern führen. Es wird empfohlen, in den Smooth-Modus zu " +"wechseln." + #, c-format, boost-format msgid "Loading file: %s" msgstr "Datei wird geladen: %s" @@ -4681,6 +4865,13 @@ msgstr "Projekt wird heruntergeladen..." msgid "Project downloaded %d%%" msgstr "Projekt heruntergeladen %d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" +"Der Import in Bambu Studio ist fehlgeschlagen. Bitte laden Sie die Datei " +"manuell herunter und importieren Sie sie." + msgid "The selected file" msgstr "Die ausgewählte Datei" @@ -5077,9 +5268,6 @@ msgstr "Fehler" msgid "warning" msgstr "Warnung" -msgid "info" -msgstr "Infos" - msgid "debug" msgstr "Fehlersuche" @@ -5334,11 +5522,17 @@ msgstr "Bambu kalte Druckplatte" msgid "PLA Plate" msgstr "PLA-Platte" -msgid "Bamabu Engineering Plate" -msgstr "Bambu technische Druckplatte" +msgid "Bambu Engineering Plate" +msgstr "Bambu Engineering-Platte" -msgid "Bamabu High Temperature Plate" -msgstr "Bambu Hochtemperaturdruckplatte" +msgid "Bambu Smooth PEI Plate" +msgstr "Bambu glatte PEI-Platte" + +msgid "High temperature Plate" +msgstr "Hochtemperaturplatte" + +msgid "Bambu Textured PEI Plate" +msgstr "Bambu strukturierte PEI-Platte" msgid "Send print job to" msgstr "Druckauftrag senden an" @@ -5352,8 +5546,8 @@ msgstr "Druckbettnivellierung" msgid "Flow Dynamics Calibration" msgstr "Dynamische Flusskalibrierung" -msgid "Can't connect to the printer" -msgstr "Es kann keine Verbindung zum Drucker hergestellt werden" +msgid "Click here if you can't connect to the printer" +msgstr "Klicken Sie hier, wenn Sie keine Verbindung zum Drucker herstellen können" msgid "send completed" msgstr "Senden abgeschlossen" @@ -5472,6 +5666,20 @@ msgstr "" msgid "This printer does not support printing all plates" msgstr "Dieser Drucker unterstützt nicht den Druck aller Platten" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" +"Wenn der Spiral-Vase-Modus aktiviert ist, werden bei Maschinen mit I3-" +"Struktur keine Zeitraffervideos erstellt." + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" +"Wenn nach Objekt gedruckt wird, werden bei Maschinen mit I3-Struktur keine " +"Zeitraffervideos erstellt." + msgid "Errors" msgstr "Fehler" @@ -5818,7 +6026,7 @@ msgid "Support filament" msgstr "Supportfilament" msgid "Tree supports" -msgstr "" +msgstr "Baumstützen" msgid "Prime tower" msgstr "Reinigungsturm" @@ -5876,9 +6084,6 @@ msgstr "" "Empfohlener Düsentemperaturbereich für dieses Filament. 0 bedeutet nicht " "gesetzt" -msgid "Recommended temperature range" -msgstr "Empfohlener Temperaturbereich" - msgid "Print temperature" msgstr "Drucktemperatur" @@ -5910,16 +6115,17 @@ msgstr "" "wird. Ein Wert von 0 bedeutet, dass das Filament auf der technischen " "Druckplatte nicht unterstützt wird." -msgid "High Temp Plate" -msgstr "Hochtemperaturdruckplatte" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "Glatte PEI-Platte / Hochtemperaturplatte" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"Dies ist die Betttemperatur, wenn die Hochtemperatur-Druckplatte installiert " -"ist. Ein Wert von 0 bedeutet, dass das Filament auf der Hochtemperatur-" -"Druckplatte nicht unterstützt wird." +"Dies ist die Betttemperatur, wenn die glatte PEI-Platte installiert ist. Ein " +"Wert von 0 bedeutet, dass das Filament auf der glatten PEI-/Hochtemperatur Platte nicht " +"unterstützt wird." msgid "Textured PEI Plate" msgstr "Texturierte PEI-Platte" @@ -5971,6 +6177,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "Hilfslüfter" +msgid "Exhaust fan" +msgstr "Abluftventilator" + +msgid "During print" +msgstr "Während des Drucks" + +msgid "Complete print" +msgstr "Druck abgeschlossen" + msgid "Filament start G-code" msgstr "Filament Start G-Code" @@ -6024,6 +6239,9 @@ msgstr "G-Code vor dem Schichtwechsel" msgid "Layer change G-code" msgstr "Schichtwechsel G-Code" +msgid "Time lapse G-code" +msgstr "Zeitraffer G-Code" + msgid "Change filament G-code" msgstr "Filamentwechsel G-Code" @@ -6910,6 +7128,13 @@ msgstr "" "Berechnung der Linienbreite von %1% fehlgeschlagen. Kann den Wert von \"%2%" "\" nicht abrufen" +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" +"Ungültiger Abstand für Flow::with_spacing() übergeben, überprüfen Sie Ihre " +"Schichthöhe und Extrusionsbreite" + msgid "undefined error" msgstr "unbekannter Fehler" @@ -7068,6 +7293,30 @@ msgstr "" "Der Vasen-Modus funktioniert nicht, wenn ein Objekt mehr als ein Material " "enthält." +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "Das Objekt %1% überschreitet die maximale Bauvolumenhöhe." + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" +"Obwohl das Objekt %1% selbst in das Bauvolumen passt, überschreitet seine " +"letzte Schicht die maximale Bauvolumenhöhe." + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" +"Sie möchten möglicherweise die Größe Ihres Modells reduzieren oder die " +"aktuellen Druckeinstellungen ändern und es erneut versuchen." + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" +"Variable Schichthöhe wird nicht mit organischen Stützstrukturen " +"unterstützt." + msgid "The prime tower is not supported in \"By object\" print." msgstr "Der Reinigungsturm wird im \"Nach Objekt\"-Druck nicht unterstützt." @@ -7222,6 +7471,23 @@ msgstr "" "Schrumpft die erste Schicht auf der Druckplatte, um den Elefantenfuß-Effekt " "auszugleichen." +msgid "Elephant foot compensation layers" +msgstr "Elefantenfußkompensationsschichten" + +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 "" +"Die Anzahl der Schichten, in denen die Elefantenfußkompensation aktiv ist. " +"Die erste Schicht wird um den Wert der Elefantenfußkompensation verkleinert, " +"dann werden die nächsten Schichten linear weniger verkleinert, bis zur " +"Schicht, die durch diesen Wert angegeben ist." + +msgid "layers" +msgstr "Schichten" + msgid "" "Slicing height for each layer. Smaller layer height means more accurate and " "more printing time" @@ -7630,6 +7896,16 @@ msgstr "" "Aktivieren Sie diese Option, um den Druck für verschiedene Überhangsgrade zu " "verlangsamen" +msgid "Slow down for curled perimeters" +msgstr "Langsamer Druck für gekrümmte Umfänge" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" +"Aktivieren Sie diese Option, um den Druck in Bereichen zu verlangsamen, in " +"denen möglicherweise gekrümmte Umfänge vorhanden sind" + msgid "mm/s or %" msgstr "mm/s o. %" @@ -7776,6 +8052,25 @@ msgstr "Standard-Prozessprofil" msgid "Default process profile when switch to this machine profile" msgstr "Standard-Prozessprofil beim Wechsel zu diesem Maschinenprofil" +msgid "Activate air filtration" +msgstr "Aktiviere Luftfilterung" + +msgid "Activate for better air filtration" +msgstr "Aktivieren Sie die Luftfilterung für eine bessere Luftfiltration" + +msgid "Fan speed" +msgstr "Lüftergeschwindigkeit" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" +"Geschwindigkeit des Abluftventilators während des Drucks. Diese Geschwindig-" +"keit überschreibt die Geschwindigkeit im Filament-Benutzerdefinierten G-Code" + +msgid "Speed of exhuast fan after printing completes" +msgstr "Geschwindigkeit des Abluftventilators nach Abschluss des Drucks" + msgid "No cooling for the first" msgstr "Keine Kühlung für die erste" @@ -7786,9 +8081,6 @@ msgstr "" "Schalte alle Lüfter für die ersten Schichten aus. Dies kann genutzt werden, " "um die Betthaftung zu verbessern." -msgid "layers" -msgstr "Schichten" - msgid "Don't support bridges" msgstr "Brücken nicht unterstützen" @@ -7844,22 +8136,6 @@ msgstr "" "In der Nähe von schrägen Flächen massive Füllungen hinzufügen, um die " "vertikale Wanddicke zu gewährleisten (obere + untere massive Schichten)." -msgid "Internal bridge support thickness" -msgstr "Dicke der internen Brückenstützen" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" -"Wenn aktiviert, werden Stützschleifen unter den Konturen interner Brücken " -"erzeugt. Diese Stützschleifen könnten verhindern, dass interne Brücken über " -"die Luft hinausragen und die Oberflächenqualität verbessern, insbesondere " -"wenn die Fülldichte des Sparmodus niedrig ist. Dieser Wert bestimmt die " -"Dicke der Stützschleifen. 0 bedeutet, diese Funktion zu deaktivieren." - msgid "Top surface pattern" msgstr "Muster der Oberfläche" @@ -8522,11 +8798,16 @@ msgstr "" msgid "accel_to_decel" msgstr "Beschleunigung zu Verzögerung" -#, fuzzy, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#, c-format, boost-format +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" msgstr "" -"Klipper’s max_accel_to_decel wird auf % of Prozentsatz der Beschleunigung " -"eingestellt" +"Klipper's max_accel_to_decel wird auf diesen %% der Beschleunigung verändert" + + +#, c-format, boost-format +msgid "%%" +msgstr "%%" msgid "Jerk of outer walls" msgstr "Ruckwert Außenwand" @@ -8752,6 +9033,30 @@ msgstr "" msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "Druckerstruktur" + +msgid "The physical arrangement and components of a printing device" +msgstr "Die physische Anordnung und Komponenten eines Druckers" + +msgid "CoreXY" +msgstr "CoreXY" + +msgid "I3" +msgstr "I3" + +msgid "Hbot" +msgstr "Hbot" + +msgid "Delta" +msgstr "Delta" + +msgid "Best object position" +msgstr "Beste Objektposition" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "Beste automatische Positionierung im Bereich [0,1] bezogen auf das Bett." + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "" "Aktivieren Sie diese Option, wenn die Maschine über ein zusätzliches " @@ -8800,6 +9105,30 @@ msgstr "" "Stillstand aus zu starten oder um den Lüfter schneller auf Touren zu bringen." "Setze den Wert auf 0, um diese Funktion zu deaktivieren." +msgid "Time cost" +msgstr "Druckzeit Kosten" + +msgid "The printer cost per hour" +msgstr "Die Druckkosten pro Stunde" + +msgid "money/h" +msgstr "€/h" + +msgid "Support control chamber temperature" +msgstr "Druckkammer-Temperatursteuerung" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" +"Diese Option ist aktiviert, wenn die Maschine die Steuerung der " +"Kammertemperatur unterstützt" + +msgid "Support air filtration" +msgstr "Luftfilterung unterstützen" + +msgid "Enable this if printer support air filtration" +msgstr "Aktivieren Sie diese Option, wenn der Drucker die Luftfilterung unterstützt" + msgid "G-code flavor" msgstr "G-Code Typ" @@ -9072,9 +9401,6 @@ msgstr "Maximale Fahrgeschwindigkeit" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "Maximale Fahrgeschwindigkeit (M204 T), gilt nur für Marlin 2" -msgid "Fan speed" -msgstr "Lüftergeschwindigkeit" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -9094,6 +9420,82 @@ msgstr "" "maximale Schichthöhe zu begrenzen, wenn die adaptive Schichthöhe aktiviert " "ist" +msgid "Extrusion rate smoothing" +msgstr "Glättung der Extrusionsrate" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" +"Dieser Parameter gleicht plötzliche Änderungen der Extrusionsrate aus, die " +"auftreten, wenn der Drucker von einer hohen Flussrate (hohe Geschwindigkeit/" +"größere Breite) zu einer niedrigeren Flussrate (niedrigere Geschwindigkeit/" +"kleinere Breite) und umgekehrt wechselt.\n" +"\n" +"Es definiert die maximale Rate, mit der sich der extrudierte Volumenstrom in " +"mm3/s über die Zeit ändern kann. Höhere Werte bedeuten, dass höhere " +"Extrusionsratenänderungen zulässig sind, was zu schnelleren " +"Geschwindigkeitsübergängen führt.\n" +"\n" +"Ein Wert von 0 deaktiviert die Funktion. \n" +"\n" +"Für einen Hochgeschwindigkeits-, Hochfluss-Direktantriebsdrucker (wie den " +"Bambu-Labor- oder Voron-Drucker) ist dieser Wert normalerweise nicht " +"erforderlich. Er kann jedoch in bestimmten Fällen einen geringfügigen " +"Vorteil bieten, in denen sich die Funktionen stark unterscheiden. Zum " +"Beispiel, wenn es aggressive Verlangsamungen aufgrund von Überhängen gibt. " +"In diesen Fällen wird ein hoher Wert von ca. 300-350mm3/s2 empfohlen, da " + +msgid "mm³/s²" +msgstr "m" + +msgid "Smoothing segment length" +msgstr "Segmentlänge für die Glättung" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" +"Ein niedrigerer Wert führt zu glatteren Extrusionsratenübergängen. Dies " +"führt jedoch zu einer deutlich größeren G-Code-Datei und mehr Anweisungen " +"für den Drucker, die verarbeitet werden müssen. \n" +"\n" +"Der Standardwert von 3 funktioniert für die meisten Fälle gut. Wenn Ihr " +"Drucker stottert, erhöhen Sie diesen Wert, um die Anzahl der Anpassungen zu " +"reduzieren\n" +"\n" +"Zulässige Werte: 1-5" + msgid "Minimum speed for part cooling fan" msgstr "Mindestdrehzahl der Bauteilkühlung" @@ -9412,6 +9814,26 @@ msgstr "" "bei der Verfahrbewegung gegen den Druck stößt. Die Verwendung einer " "Spirallinie zum Anheben von z kann Fadenbildung verhindern." +msgid "Z hop lower boundary" +msgstr "Z-Hub untere Grenze" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" +"Z-Hub wird nur wirksam, wenn Z über diesem Wert liegt und unter dem " +"Parameter: \"Z-Hub obere Grenze\" liegt" + +msgid "Z hop upper boundary" +msgstr "Z-Hub obere Grenze" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" +"Wenn dieser Wert positiv ist, wird der Z-Hub nur wirksam, wenn Z über dem " +"Parameter: \"Z-Hub untere Grenze\" liegt und unter diesem Wert liegt" + msgid "Z hop type" msgstr "Z-Hub Typ" @@ -9968,6 +10390,14 @@ msgid "" "style will create similar structure to normal support under large flat " "overhangs." msgstr "" +"Stil und Form der Stützstrukturen. Für normale Stützstrukturen erzeugt die " +"Projektion der Stützstrukturen in ein regelmäßiges Gitter stabilere " +"Stützstrukturen (Standard), während schlanke Stütztürme Material sparen und " +"Objektverletzungen reduzieren.\n" +"Für Baumstützen werden die schlanken und organischen Stile die Äste " +"aggressiver zusammenführen und viel Material sparen (Standardorganisch), " +"während der Hybridstil eine ähnliche Struktur wie normale Stützstrukturen " +"unter großen flachen Überhängen erzeugt." msgid "Snug" msgstr "Nahtlos" @@ -10144,25 +10574,26 @@ msgstr "Diese Einstellung gibt die Anzahl der Wände um den Baumsupport an" msgid "Chamber temperature" msgstr "Druckraum Temperatur" -msgid "Target chamber temperature" -msgstr "Druckraum Temperatur" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" +msgstr "" +"Eine höhere Druckraumtemperatur kann das Verziehen unterdrücken oder " +"reduzieren und möglicherweise zu einer höheren Zwischenschichtbindungsfestig" +"keit für Hochtemperaturmaterialien wie ABS, ASA, PC, PA und so weiter führen." +" Gleichzeitig wird die Luftfiltration von ABS und ASA schlechter. Für PLA, " +"PETG, TPU, PVA und andere Materialien mit niedriger Temperatur sollte die " +"tatsächliche Druckraumtemperatur nicht hoch sein, um Verstopfungen zu " +"vermeiden, daher wird 0, was für das Ausschalten steht, dringend empfohlen." msgid "Nozzle temperature for layers after the initial one" msgstr "Düsentemperatur nach der ersten Schicht" -msgid "Bed temperature difference" -msgstr "Druckbetttemperaturdifferenz" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"Es wird nicht empfohlen, dass die Druckbetttemperatur der anderen Schichten " -"um mehr als diesen Schwellenwert niedriger ist als die der ersten Schicht. " -"Eine zu niedrige Betttemperatur einer anderen Schicht kann dazu führen, dass " -"sich das Modell von der Bauplatte löst." - msgid "Detect thin wall" msgstr "Dünne Wand erkennen" @@ -10609,6 +11040,12 @@ msgstr "Standard-Filamente laden" msgid "Load first filament as default for those not loaded" msgstr "Das erste Filament als Standard für nicht geladene übernehmen" +msgid "Minimum save" +msgstr "Minimale Speicherung" + +msgid "export 3mf with minimum size." +msgstr "Exportieren Sie 3mf mit minimaler Größe." + msgid "mtcpp" msgstr "mtcpp" @@ -10665,14 +11102,41 @@ msgstr "Anzahl der Wiederholungen" msgid "Repetions count of the whole model" msgstr "Anzahl der Wiederholungen des gesamten Modells" +msgid "Ensure on bed" +msgstr "Auf dem Bett stellen" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" +"Heben Sie das Objekt über das Bett, wenn es teilweise darunter liegt. " +"Standardmäßig deaktiviert" + msgid "Convert Unit" msgstr "Einheit umrechnen" msgid "Convert the units of model" msgstr "Einheiten des Modells umrechnen" -msgid "Orient the model" -msgstr "Das Modell ausrichten" +msgid "Orient Options" +msgstr "Orientierungsoptionen" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "Orientierungsoptionen: 0-deaktiviert; 1-aktiviert; andere-automatisch" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "Rotationswinkel um die Z-Achse in Grad." + +msgid "Rotate around X" +msgstr "Rotieren um X" + +msgid "Rotation angle around the X axis in degrees." +msgstr "Rotationswinkel um die X-Achse in Grad." + +msgid "Rotate around Y" +msgstr "Rotieren um Y" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "Rotationswinkel um die Y-Achse in Grad." msgid "Scale the model by a float factor" msgstr "Skalierung des Modells um einen Faktor" @@ -10734,6 +11198,12 @@ msgstr "" "Legt die Stufe der Fehlerprotokollierung fest. 0:fatal, 1:error, 2:warning, " "3:info, 4:debug, 5:trace\n" +msgid "Load custom gcode" +msgstr "Lade benutzerdefinierten G-Code" + +msgid "Load custom gcode from json" +msgstr "Lade benutzerdefinierten G-Code aus json" + msgid "Error in zip archive" msgstr "Fehler im Zip-Archiv" @@ -10940,6 +11410,20 @@ msgstr "" msgid "The name cannot exceed 40 characters." msgstr "Der Name darf 40 Zeichen nicht überschreiten." +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" +"Geben Sie bitte gültige Werte ein:\n" +"Startwert: >= %.1f\n" +"Endwert: <= %.1f\n" +"Endwert: > Startwert\n" +"Werteschritt: >= %.3f)" + msgid "The name cannot be empty." msgstr "Der Name darf nicht leer sein." @@ -10973,6 +11457,9 @@ msgstr "Der Drucker ist noch nicht angeschlossen." msgid "Please select filament to calibrate." msgstr "Bitte wählen Sie das Filament zur Kalibrierung aus." +msgid "The input value size must be 3." +msgstr "Die Eingabewertgröße muss 3 sein." + msgid "Connecting to printer..." msgstr "Verbindung zum Drucker wird hergestellt..." @@ -10991,9 +11478,6 @@ msgstr "Bitte wählen Sie mindestens ein Filament zur Kalibrierung aus" msgid "Flow rate calibration result has been saved to preset" msgstr "Flussraten-Kalibrierungsergebnis wurde in Voreinstellung gespeichert" -msgid "The input value size must be 3." -msgstr "Die Eingabewertgröße muss 3 sein." - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" "Maximale volumetrische Geschwindigkeitskalibrierungsergebnis wurde in " @@ -11207,6 +11691,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "Bitte finden Sie die beste Linie auf Ihrer Platte" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "Bitte finden Sie die Ecke mit perfektem Extrusionsgrad" + msgid "Input Value" msgstr "Eingabewert" @@ -11318,6 +11805,12 @@ msgstr "Fehlerbeschreibung" msgid "Extra info" msgstr "Extra Info" +msgid "Pattern" +msgstr "Pattern" + +msgid "Method" +msgstr "Methode" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s ist nicht kompatibel mit %s" @@ -11329,6 +11822,21 @@ msgstr "" msgid "Connecting to printer" msgstr "Verbindung zum Drucker wird hergestellt" +msgid "From k Value" +msgstr "vom k Wert" + +msgid "To k Value" +msgstr "bis zum k Wert" + +msgid "Step value" +msgstr "Schrittweite" + +msgid "0.5" +msgstr "0,5" + +msgid "0.005" +msgstr "0,005" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "Der Düsendurchmesser wurde aus den Druckereinstellungen synchronisiert" @@ -11448,6 +11956,10 @@ msgstr "" "Der Dateiname für den Upload endet nicht mit \"%s\". Möchten Sie den Vorgang " "fortsetzen?" +#, fuzzy +msgid "Upload" +msgstr "Entladen" + msgid "Print host upload queue" msgstr "Druck-Host-Upload-Warteschlange" @@ -11509,9 +12021,6 @@ msgstr "PA Linie" msgid "PA Pattern" msgstr "PA Muster" -msgid "Method" -msgstr "Methode" - msgid "Start PA: " msgstr "Start PA: " @@ -11593,12 +12102,14 @@ msgstr "Schrittweite" msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" "Bitte geben Sie gültige Werte ein:\n" -"Start > 0 Schrittweite >= 0\n" -"Ende > Start + Schrittweite)" +"Start > 0 \n" +"Schritt >= 0\n" +"Ende > Start + Schritt)" msgid "VFA test" msgstr "VFA TEST" @@ -11611,12 +12122,14 @@ msgstr "Endgeschwindigkeit" msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" "Bitte geben Sie gültige Werte ein:\n" -"Start > 10 Schrittweite >= 0\n" -"Ende > Start + Schrittweite)" +"Start > 10 \n" +"Schritt >= 0\n" +"Ende > Start + Schritt)" #, fuzzy msgid "Start retraction length: " @@ -11681,6 +12194,19 @@ msgstr "" "Die Verbindung zu den über den Druck-Host verbundenen Druckern ist " "fehlgeschlagen." +msgid "The start, end or step is not valid value." +msgstr "Der Start, das Ende oder der Schritt ist kein gültiger Wert." + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" +"Kalibrierung nicht möglich: Möglicherweise, weil der eingestellte " +"Kalibrierungswertebereich zu groß ist oder der Schritt zu klein ist" + +msgid "Need select printer" +msgstr "Drucker auswählen" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -11954,6 +12480,141 @@ msgstr "" "Wussten Sie, dass Sie die Festigkeit des Modells durch mehr Wandschleifen " "und eine höhere Dichte der Füllung verbessern können?" +#~ msgid "Cali" +#~ msgstr "Kalibrierung" + +#~ msgid "Calibration of extrusion" +#~ msgstr "Kalibrierung der Extrusion" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Neues Filament in den Extruder schieben" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "Die Betttemperatur der anderen Schicht ist um mehr als %d Grad Celsius " +#~ "niedriger als die Betttemperatur der ersten Schicht.\n" +#~ "Dies kann dazu führen, dass sich das Modell während des Drucks von der " +#~ "Druckplatte löst" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "Die Druckbetttemperatur ist höher als die Verglasungstemperatur dieses " +#~ "Filaments.\n" +#~ "Dies kann zu einer Verstopfung der Düse und zu Druckfehlern führen.\n" +#~ "Bitte lassen Sie den Drucker während des Druckvorgangs geöffnet, um die " +#~ "Luftzirkulation zu gewährleisten, oder reduzieren Sie die Temperatur des " +#~ "Heizbetts." + +#~ msgid "Total Time Estimation" +#~ msgstr "Geschätzte Gesamtdauer" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Resonanzfrequenzidentifikation" + +#~ msgid "Immediately score" +#~ msgstr "Direktpunktzahl" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "" +#~ "Bitte geben Sie eine Punktzahl für Ihr Lieblingsmodell von Bambu Market " +#~ "ab." + +#~ msgid "Score" +#~ msgstr "Punktzahl" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bambu technische Druckplatte" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bambu Hochtemperaturdruckplatte" + +#~ msgid "Can't connect to the printer" +#~ msgstr "Es kann keine Verbindung zum Drucker hergestellt werden" + +#~ msgid "Recommended temperature range" +#~ msgstr "Empfohlener Temperaturbereich" + +#~ msgid "High Temp Plate" +#~ msgstr "Hochtemperaturdruckplatte" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "Dies ist die Betttemperatur, wenn die Hochtemperatur-Druckplatte " +#~ "installiert ist. Ein Wert von 0 bedeutet, dass das Filament auf der " +#~ "Hochtemperatur-Druckplatte nicht unterstützt wird." + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Dicke der internen Brückenstützen" + +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges.These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "Wenn aktiviert, werden Stützschleifen unter den Konturen interner Brücken " +#~ "erzeugt. Diese Stützschleifen könnten verhindern, dass interne Brücken " +#~ "über die Luft hinausragen und die Oberflächenqualität verbessern, " +#~ "insbesondere wenn die Fülldichte des Sparmodus niedrig ist. Dieser Wert " +#~ "bestimmt die Dicke der Stützschleifen. 0 bedeutet, diese Funktion zu " +#~ "deaktivieren." + +#, fuzzy, c-format, boost-format +#~ msgid "" +#~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#~ msgstr "" +#~ "Klipper’s max_accel_to_decel wird auf % of Prozentsatz der " +#~ "Beschleunigung eingestellt" + +#~ msgid "Target chamber temperature" +#~ msgstr "Druckraum Temperatur" + +#~ msgid "Bed temperature difference" +#~ msgstr "Druckbetttemperaturdifferenz" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "Es wird nicht empfohlen, dass die Druckbetttemperatur der anderen " +#~ "Schichten um mehr als diesen Schwellenwert niedriger ist als die der " +#~ "ersten Schicht. Eine zu niedrige Betttemperatur einer anderen Schicht " +#~ "kann dazu führen, dass sich das Modell von der Bauplatte löst." + +#~ msgid "Orient the model" +#~ msgstr "Das Modell ausrichten" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 0 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Bitte geben Sie gültige Werte ein:\n" +#~ "Start > 0 Schrittweite >= 0\n" +#~ "Ende > Start + Schrittweite)" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 10 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Bitte geben Sie gültige Werte ein:\n" +#~ "Start > 10 Schrittweite >= 0\n" +#~ "Ende > Start + Schrittweite)" + #~ msgid "" #~ "Style and shape of the support. For normal support, projecting the " #~ "supports into a regular grid will create more stable supports (default), " diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index f73a6ea122..2a82bb963c 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -650,6 +650,9 @@ msgstr "Loading a mode view" msgid "Choose one file (3mf):" msgstr "Choose one file (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Choose one or more files (3mf/step/stl/svg/obj/amf):" @@ -1493,6 +1496,9 @@ msgstr "Connecting..." msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "Empty" @@ -1505,12 +1511,6 @@ msgstr "" msgid "AMS not connected" msgstr "AMS not connected" -msgid "Cali" -msgstr "Cali" - -msgid "Calibration of extrusion" -msgstr "Calibration of extrusion" - msgid "Load Filament" msgstr "Load" @@ -1541,6 +1541,9 @@ msgstr "Calibrate again" msgid "Cancel calibration" msgstr "Cancel calibration" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "Heat the nozzle" @@ -1556,8 +1559,14 @@ msgstr "Push new filament into extruder" msgid "Purge old filament" msgstr "Purge old filament" -msgid "Push new filament into the extruder" -msgstr "Push new filament into the extruder" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "Grab new filament" @@ -2388,27 +2397,6 @@ msgstr "" "The recommended nozzle temperature for this filament type is [%d, %d] " "degrees centigrade" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"The bed temperature of other layers is lower than the bed temperature of the " -"first layer by more than %d degrees centigrade.\n" -"This may cause models to break free from the build plate during printing." - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blockage and print failure.\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed." - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2416,6 +2404,13 @@ msgstr "" "Too small max volumetric speed.\n" "Value was reset to 0.5" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2473,6 +2468,9 @@ msgstr "" "Spiral mode only works when wall loops is 1, support is disabled, top shell " "layers is 0, sparse infill density is 0 and timelapse type is traditional." +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2600,6 +2598,36 @@ msgstr "Paused due to nozzle temperature malfunction" msgid "Paused due to heat bed temperature malfunction" msgstr "Paused due to heat bed temperature malfunction" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "MC" @@ -2636,6 +2664,24 @@ msgstr "Verification failed." msgid "Update failed." msgstr "Update failed." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "Failed to start print job" @@ -2764,12 +2810,15 @@ msgstr "Flushed" msgid "Total" msgstr "Total" -msgid "Total Time Estimation" -msgstr "Total Time Estimation" +msgid "Total Estimation" +msgstr "Total estimation" msgid "Total time" msgstr "Total time" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "up to" @@ -2857,9 +2906,6 @@ msgstr "Printer" msgid "Print settings" msgstr "Print settings" -msgid "Total Estimation" -msgstr "Total estimation" - msgid "Time Estimation" msgstr "Time Estimation" @@ -2968,6 +3014,9 @@ msgstr "Allow multiple materials on same plate" msgid "Avoid extrusion calibration region" msgstr "Avoid extrusion calibration region" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "Add" @@ -3062,8 +3111,11 @@ msgstr "Micro lidar calibration" msgid "Bed leveling" msgstr "Bed leveling" -msgid "Resonance frequency identification" -msgstr "Resonance frequency identification" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "Calibration program" @@ -3083,6 +3135,9 @@ msgstr "Calibration Flow" msgid "Start Calibration" msgstr "Start Calibration" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "Completed" @@ -3159,9 +3214,6 @@ msgstr "No" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "will be closed before creating a new model. Do you want to continue?" -msgid "Upload" -msgstr "" - msgid "Slice plate" msgstr "Slice plate" @@ -3823,12 +3875,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "Layer: N/A" -msgid "Immediately score" -msgstr "Immediately score" - msgid "Clear" msgstr "Clear" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "Camera" @@ -3894,12 +3954,6 @@ msgstr "In Cloud Slicing Queue, there are %s tasks ahead of you." msgid "Layer: %s" msgstr "Layer: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Please give a score for your favorite Bambu Market model." - -msgid "Score" -msgstr "Score" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Layer: %d/%d" @@ -3941,6 +3995,97 @@ msgstr "Ludicrous" msgid "Can't start this without SD card." msgstr "Can't start without MicroSD card." +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "info" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "Status" @@ -4067,6 +4212,9 @@ msgstr "Warning:" msgid "Export successfully." msgstr "Exported successfully" +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "" @@ -4154,6 +4302,9 @@ msgstr "First Layer Inspection" msgid "Auto-recovery from step loss" msgstr "Auto-recover from step loss" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "Global" @@ -4306,6 +4457,11 @@ msgstr "" "nozzle hardness of the printer. Please replace the hardened nozzle or " "filament, otherwise, the nozzle will be worn down or damaged." +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, c-format, boost-format msgid "Loading file: %s" msgstr "Loading file: %s" @@ -4518,6 +4674,11 @@ msgstr "downloading project ..." msgid "Project downloaded %d%%" msgstr "Project downloaded %d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "The selected file" @@ -4906,9 +5067,6 @@ msgstr "error" msgid "warning" msgstr "warning" -msgid "info" -msgstr "info" - msgid "debug" msgstr "debug" @@ -5159,11 +5317,17 @@ msgstr "Bambu Cool Plate" msgid "PLA Plate" msgstr "PLA Plate" -msgid "Bamabu Engineering Plate" -msgstr "Bambu Engineering Plate" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "Bambu High Temperature Plate" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "Send print job to" @@ -5177,8 +5341,8 @@ msgstr "Bed leveling" msgid "Flow Dynamics Calibration" msgstr "" -msgid "Can't connect to the printer" -msgstr "Can't connect to the printer" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "Send complete" @@ -5286,6 +5450,16 @@ msgstr "Cannot send a print job for an empty plate." msgid "This printer does not support printing all plates" msgstr "This printer does not support printing all plates" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "Errors" @@ -5608,6 +5782,9 @@ msgstr "Raft" msgid "Support filament" msgstr "Filament for Supports" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "Prime tower" @@ -5662,9 +5839,6 @@ msgstr "Recommended nozzle temperature" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "Recommended nozzle temperature range of this filament. 0 means not set" -msgid "Recommended temperature range" -msgstr "Recommended temperature range" - msgid "Print temperature" msgstr "Print temperature" @@ -5694,16 +5868,14 @@ msgstr "" "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." -msgid "High Temp Plate" -msgstr "High Temp Plate" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"This is the bed temperature when the high temperature plate is installed. A " -"value of 0 means the filament does not support printing on the High Temp " -"Plate." msgid "Textured PEI Plate" msgstr "Textured PEI Plate" @@ -5754,6 +5926,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "Auxiliary part cooling fan" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "Filament start G-code" @@ -5805,6 +5986,9 @@ msgstr "Before layer change G-code" msgid "Layer change G-code" msgstr "Layer change G-code" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "Change filament G-code" @@ -6660,6 +6844,11 @@ msgstr "Multiple" msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "Failed to calculate line width of %1%. Cannot get value of “%2%” " +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "undefined error" @@ -6816,6 +7005,24 @@ msgstr "" "Spiral (vase) mode does not work when an object contains more than one " "material." +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "A prime tower is not supported in “By object” print." @@ -7325,6 +7532,14 @@ msgstr "" "Enable this option to slow down when printing overhangs. The speeds for " "different overhang percentages are set below." +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "" @@ -7460,6 +7675,23 @@ msgstr "Default process profile" msgid "Default process profile when switch to this machine profile" msgstr "Default process profile when switching to this machine profile" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "Fan speed" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "No cooling for the first" @@ -7527,17 +7759,6 @@ msgstr "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." -msgid "Internal bridge support thickness" -msgstr "Internal bridge support thickness" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" - msgid "Top surface pattern" msgstr "Top surface pattern" @@ -8111,7 +8332,12 @@ msgid "accel_to_decel" msgstr "" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" msgstr "" msgid "Jerk of outer walls" @@ -8319,6 +8545,30 @@ msgstr "" msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "Enable this option if the machine has an auxiliary part cooling fan" @@ -8351,6 +8601,28 @@ msgid "" "Set to 0 to deactivate." msgstr "" +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "G-code flavor" @@ -8602,9 +8874,6 @@ msgstr "Maximum acceleration for travel" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -msgid "Fan speed" -msgstr "Fan speed" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8622,6 +8891,55 @@ msgstr "" "The highest printable layer height for the extruder: this is used to limit " "the maximum layer height when adaptive layer height is enabled." +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "Minimum speed for part cooling fan" @@ -8905,6 +9223,22 @@ msgstr "" "hitting the print when traveling more. Using spiral lines to lift z can " "prevent stringing." +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "" @@ -9395,16 +9729,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"Style and shape of the support. For normal support, projecting the supports " -"into a regular grid will create more stable supports (default), while snug " -"support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." msgid "Snug" msgstr "Snug" @@ -9561,24 +9890,19 @@ msgstr "" msgid "Chamber temperature" msgstr "" -msgid "Target chamber temperature" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "Nozzle temperature after the first layer" -msgid "Bed temperature difference" -msgstr "Bed temperature difference" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"It is not recommend for bed temperature of other layers to be lower than the " -"first layer by more than this threshold. Too low bed temperature of other " -"layer may cause the model to break free from the build plate." - msgid "Detect thin wall" msgstr "Detect thin walls" @@ -9993,6 +10317,12 @@ msgstr "" msgid "Load first filament as default for those not loaded" msgstr "" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "mtcpp" @@ -10047,14 +10377,39 @@ msgstr "" msgid "Repetions count of the whole model" msgstr "" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "Convert Unit" msgid "Convert the units of model" msgstr "Convert the units of model" -msgid "Orient the model" -msgstr "Orient the model" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "Scale the model by a float factor" @@ -10110,6 +10465,12 @@ msgstr "" "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "Error in zip archive" @@ -10306,6 +10667,15 @@ msgstr "" msgid "The name cannot exceed 40 characters." msgstr "" +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "" @@ -10335,6 +10705,9 @@ msgstr "" msgid "Please select filament to calibrate." msgstr "" +msgid "The input value size must be 3." +msgstr "" + msgid "Connecting to printer..." msgstr "" @@ -10353,9 +10726,6 @@ msgstr "" msgid "Flow rate calibration result has been saved to preset" msgstr "" -msgid "The input value size must be 3." -msgstr "" - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" @@ -10491,6 +10861,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "" @@ -10593,6 +10966,12 @@ msgstr "" msgid "Extra info" msgstr "" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "" @@ -10603,6 +10982,21 @@ msgstr "" msgid "Connecting to printer" msgstr "" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" @@ -10715,6 +11109,9 @@ msgstr "" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" +msgid "Upload" +msgstr "" + msgid "Print host upload queue" msgstr "" @@ -10776,9 +11173,6 @@ msgstr "" msgid "PA Pattern" msgstr "" -msgid "Method" -msgstr "" - msgid "Start PA: " msgstr "" @@ -10852,7 +11246,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10867,7 +11262,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10924,6 +11320,17 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "" +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -11107,3 +11514,106 @@ msgid "" "Did you know that you can use more wall loops and higher sparse infill " "density to improve the strength of the model?" msgstr "" + +#~ msgid "Cali" +#~ msgstr "Cali" + +#~ msgid "Calibration of extrusion" +#~ msgstr "Calibration of extrusion" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Push new filament into the extruder" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "The bed temperature of other layers is lower than the bed temperature of " +#~ "the first layer by more than %d degrees centigrade.\n" +#~ "This may cause models to break free from the build plate during printing." + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blockage and print failure.\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed." + +#~ msgid "Total Time Estimation" +#~ msgstr "Total Time Estimation" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Resonance frequency identification" + +#~ msgid "Immediately score" +#~ msgstr "Immediately score" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "Please give a score for your favorite Bambu Market model." + +#~ msgid "Score" +#~ msgstr "Score" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bambu Engineering Plate" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bambu High Temperature Plate" + +#~ msgid "Can't connect to the printer" +#~ msgstr "Can't connect to the printer" + +#~ msgid "Recommended temperature range" +#~ msgstr "Recommended temperature range" + +#~ msgid "High Temp Plate" +#~ msgstr "High Temp Plate" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "This is the bed temperature when the high temperature plate is installed. " +#~ "A value of 0 means the filament does not support printing on the High " +#~ "Temp Plate." + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Internal bridge support thickness" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." + +#~ msgid "Bed temperature difference" +#~ msgstr "Bed temperature difference" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "It is not recommend for bed temperature of other layers to be lower than " +#~ "the first layer by more than this threshold. Too low bed temperature of " +#~ "other layer may cause the model to break free from the build plate." + +#~ msgid "Orient the model" +#~ msgstr "Orient the model" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 20d1588e1b..960207f9c3 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -677,6 +677,9 @@ msgstr "Cargar un modo de vista" msgid "Choose one file (3mf):" msgstr "Elija un archivo (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Elige uno o más archivos (3mf/step/stl/svg/obj/amf):" @@ -1533,6 +1536,9 @@ msgstr "Conectando…" msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "Vacío" @@ -1545,12 +1551,6 @@ msgstr "Auto Rellenado" msgid "AMS not connected" msgstr "AMS no conectado" -msgid "Cali" -msgstr "Cali" - -msgid "Calibration of extrusion" -msgstr "Calibración de extrusión" - msgid "Load Filament" msgstr "Cargar" @@ -1583,6 +1583,9 @@ msgstr "Calibrar de nuevo" msgid "Cancel calibration" msgstr "Cancelar calibración" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "Calentar la boquilla" @@ -1598,8 +1601,14 @@ msgstr "Introducir nuevo filamento en el extrusor" msgid "Purge old filament" msgstr "Purgar el filamento viejo" -msgid "Push new filament into the extruder" -msgstr "Push new filament into the extruder" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "Grab new filament" @@ -2457,30 +2466,6 @@ msgstr "" "La temperatura recomendada de la boquilla de este tipo de filamento es de " "[%d, %d] grados centígrados" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"La temperatura del lecho de la otra capa es inferior a la temperatura del " -"lecho de la primera capa durante más de %d grados centígrados.\n" -"Esto puede hacer que el modelo se desprenda de la bandeja durante la " -"impresión" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"La temperatura de capa es superior que la temperatura de vitrificación de " -"este filamento. \n" -" Esto podría causar que la boquilla se bloquee y produzca un fallo de " -"impresión. Por favor, mantenga la impresora abierta durante el proceso para " -"garantizar la circulación de aire o reducir la temperatura de la cama " -"caliente" - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2488,6 +2473,13 @@ msgstr "" "Velocidad volumétrica máxima demasiado baja.\n" "Reajustar a 0.5" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2551,6 +2543,9 @@ msgstr "" "densidad de relleno de baja densidad es 0 y el tipo de timelapse es " "tradicional." +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2684,6 +2679,36 @@ msgstr "" "Se ha interrumpido debido a un mal funcionamiento de la temperatura de la " "cama caliente" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "MC" @@ -2720,6 +2745,24 @@ msgstr "Verificación fallida." msgid "Update failed." msgstr "Actualización fallida." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "Fallo iniciando el trabajo de impresión" @@ -2852,12 +2895,15 @@ msgstr "Descargado" msgid "Total" msgstr "Total" -msgid "Total Time Estimation" -msgstr "Tiempo Total Estimado" +msgid "Total Estimation" +msgstr "Estimación total" msgid "Total time" msgstr "Tiempo total" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "hasta" @@ -2945,9 +2991,6 @@ msgstr "Impresora" msgid "Print settings" msgstr "Configuración de impresión" -msgid "Total Estimation" -msgstr "Estimación total" - msgid "Time Estimation" msgstr "Estimación de Tiempo" @@ -3056,6 +3099,9 @@ msgstr "Permitir varios materiales en la misma bandeja" msgid "Avoid extrusion calibration region" msgstr "Evitar la zona de calibración del extrusor" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "Añadir" @@ -3152,8 +3198,11 @@ msgstr "Calibración Micro lidar" msgid "Bed leveling" msgstr "Nivelación de la cama" -msgid "Resonance frequency identification" -msgstr "Identificación de frecuencia de resonancia" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "Programa de calibración" @@ -3173,6 +3222,9 @@ msgstr "Calibración del Caudal" msgid "Start Calibration" msgstr "Iniciar Calibración" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "Completado" @@ -3249,9 +3301,6 @@ msgstr "No" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "se cerrará antes de crear un nuevo modelo. ¿Quiere continuar?" -msgid "Upload" -msgstr "Cargar" - msgid "Slice plate" msgstr "Laminar bandeja" @@ -3925,12 +3974,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "Capa: N/A" -msgid "Immediately score" -msgstr "Immediately score" - msgid "Clear" msgstr "Vaciar" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "Cámara" @@ -3996,12 +4053,6 @@ msgstr "Hay %s tareas por delante, en la Cola de Laminado en la Nube." msgid "Layer: %s" msgstr "Capa: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Please give a score for your favorite Bambu Market model." - -msgid "Score" -msgstr "Score" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Capa: %d/%d" @@ -4044,6 +4095,97 @@ msgstr "Lúdico" msgid "Can't start this without SD card." msgstr "No puede iniciarse sin una tarjeta SD." +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "información" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "Estado" @@ -4170,6 +4312,9 @@ msgstr "Advertencia:" msgid "Export successfully." msgstr "Exportación exitosa." +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "Seria advertencia:" @@ -4257,6 +4402,9 @@ msgstr "Inspección de Primera Capa" msgid "Auto-recovery from step loss" msgstr "Autorecuperar desde pérdida de paso" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "Global" @@ -4415,6 +4563,11 @@ msgstr "" "endurecida y el filamento, de otra forma, la boquilla se atascará o se " "dañará." +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, c-format, boost-format msgid "Loading file: %s" msgstr "Cargando archivo: %s" @@ -4637,6 +4790,11 @@ msgstr "descargando proyecto..." msgid "Project downloaded %d%%" msgstr "Proyecto descargado %d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "El archivo seleccionado" @@ -5035,9 +5193,6 @@ msgstr "error" msgid "warning" msgstr "advertencia" -msgid "info" -msgstr "información" - msgid "debug" msgstr "depurar" @@ -5292,11 +5447,17 @@ msgstr "Bandeja frío Bambu" msgid "PLA Plate" msgstr "PLA Plate" -msgid "Bamabu Engineering Plate" -msgstr "Bandeja de Ingeniería Bambú" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "Bandeja de Alta Temperatura Bambú" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "Enviar el trabajo de impresión a" @@ -5310,8 +5471,8 @@ msgstr "Nivelación de la cama" msgid "Flow Dynamics Calibration" msgstr "Calibración de Dinámicas de Flujo" -msgid "Can't connect to the printer" -msgstr "No se puede conectar a la impresora" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "envío completo" @@ -5427,6 +5588,16 @@ msgstr "No es posible enviar el trabajo de impresión a una bandeja vacía" msgid "This printer does not support printing all plates" msgstr "Esta impresora no soporta la impresión en todas las bandejas" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "Errores" @@ -5694,8 +5865,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Cuando grabamos timelapse sin cabezal de impresión, es recomendable añadir " "un \"Torre de Purga de Intervalo\" \n" @@ -5760,6 +5931,9 @@ msgstr "Base de impresión" msgid "Support filament" msgstr "Filamento de soporte" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "Torre de Purga" @@ -5816,9 +5990,6 @@ msgstr "" "Rango de temperatura de boquilla recomendado para este filamento. 0 " "significa que no se ajusta" -msgid "Recommended temperature range" -msgstr "Rango de temperatura recomendado" - msgid "Print temperature" msgstr "Temperatura de impresión" @@ -5850,16 +6021,14 @@ msgstr "" "instalada. Un valor de 0 significa que el filamento no admite la impresión " "en la Bandeja de Ingeniería" -msgid "High Temp Plate" -msgstr "Bandeja de Alta Temperatura" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"Esta es la temperatura de la cama cuando la bandeja de alta temperatura está " -"instalada. Un valor de 0 significa que el filamento no admite la impresión " -"en la bandeja de alta temperatura" msgid "Textured PEI Plate" msgstr "Bandeja PEI Texturizada" @@ -5913,6 +6082,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "Ventilador de parte auxiliar" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "G-Code de inicio de filamento" @@ -5965,6 +6143,9 @@ msgstr "G-Code para antes del cambio de capa" msgid "Layer change G-code" msgstr "Cambiar el G-Code tras el cambio de capa" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "G-Code para el cambio de filamento" @@ -6841,6 +7022,11 @@ msgstr "" "Ha fallado el cálculo del ancho de extrusión de %1%. No se puede obtener el " "valor de \"%2%\". " +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "error no definido" @@ -7001,6 +7187,24 @@ msgstr "" "El modo de jarrón en espiral no funciona cuando un objeto contiene más de un " "material." +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "La torre de purga no es compatible con la impresión \"Por objeto\"." @@ -7559,6 +7763,14 @@ msgstr "" "Habilite esta opción para ralentizar la impresión para diferentes grados de " "voladizo" +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "mm/s o %" @@ -7706,6 +7918,23 @@ msgid "Default process profile when switch to this machine profile" msgstr "" "Perfil de proceso por defecto cuando se cambia a este perfil de máquina" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "Velocidad del ventilador" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "No refrigerar las primeras" @@ -7773,22 +8002,6 @@ msgstr "" "Añadir relleno sólido al lado de capas inclinadas para garantizar el grosor " "de carcasa vertical (capas sólidas superior+inferior)" -msgid "Internal bridge support thickness" -msgstr "Altura carcasa de refuerzo interior en puentes" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" -"Si está activado, los bucles de soporte generarán debajo de los contornos de " -"puentes internos. Estos bucles de soporte pueden prevenir extruir puentes en " -"el aire y mejorar la calidad de la superficie superior, especialmente cuando " -"la densidad de relleno es baja. Este valor determina el grosor de los bucles " -"de soporte. 0 significa deshabilitar esta característica" - msgid "Top surface pattern" msgstr "Patrón de relleno superior" @@ -8454,8 +8667,13 @@ msgid "accel_to_decel" msgstr "accel_to_decel" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" -msgstr "El max_accel_to_decel de Klipper se ajustará a este % o de aceleración" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" +msgstr "" msgid "Jerk of outer walls" msgstr "Jerk de los perímetros externos" @@ -8531,10 +8749,10 @@ msgstr "Velocidad máxima del ventilador en la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocidad de ventilador se incrementará linealmente de cero a " "\"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". " @@ -8677,6 +8895,30 @@ msgstr "" msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "" "Habilite esta opción si la máquina tiene un ventilador auxiliar de " @@ -8728,6 +8970,28 @@ msgstr "" "para que el ventilador alcance la velocidad más rápido.\n" "Ajústelo a 0 para desactivarlo." +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "Tipo de G-Code" @@ -8997,9 +9261,6 @@ msgstr "" "Aceleración máxima para el desplazamiento (M204 T), sólo se aplica en Marlin " "2" -msgid "Fan speed" -msgstr "Velocidad del ventilador" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -9018,6 +9279,55 @@ msgstr "" "La mayor altura de capa imprimible para el extrusor. Se utiliza para limitar " "la altura máxima de la capa cuando se habilita la altura de capa adaptativa" +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "Velocidad mínima del ventilador de refrigeración de la pieza" @@ -9338,6 +9648,22 @@ msgstr "" "boquilla golpee la impresión cuando se desplaza. El uso de la línea espiral " "para levantar z puede evitar el encordado" +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "Tipo de salto Z" @@ -9875,18 +10201,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"Estilo y forma del soporte. Para el soporte normal, proyectar los soportes " -"en una cuadrícula regular creará soportes más estables (por defecto), " -"mientras que las torres de soporte ajustadas ahorrarán material y reducirán " -"las cicatrices del objeto.\n" -"Para el soporte arbóreo, el estilo esbelto fusionará las ramas de forma más " -"agresiva y ahorrará mucho material (por defecto), mientras que el estilo " -"híbrido creará una estructura similar a la del soporte normal bajo grandes " -"voladizos planos." msgid "Snug" msgstr "Ajustado" @@ -10066,24 +10385,19 @@ msgstr "" msgid "Chamber temperature" msgstr "Temperatura de cámara" -msgid "Target chamber temperature" -msgstr "Temperatura objetivo de la cámara" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" +msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura de la boquilla después de la primera capa" -msgid "Bed temperature difference" -msgstr "Diferencia de temperatura de la cama" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"No se recomienda que la temperatura de la otra capa sea inferior a la de la " -"primera capa por encima de este umbral. Una temperatura demasiado baja de la " -"otra capa puede hacer que el modelo se desprenda de la bandeja de impresión" - msgid "Detect thin wall" msgstr "Detección de perímetros delgados" @@ -10530,6 +10844,12 @@ msgstr "Cargar los filamentos por defecto" msgid "Load first filament as default for those not loaded" msgstr "Carga el primer filamento por defecto para los no cargados" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "mtcpp" @@ -10586,14 +10906,39 @@ msgstr "Cantidad de repeticiones" msgid "Repetions count of the whole model" msgstr "Cantidad de repeticiones del modelo completo" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "Convertir Unidad" msgid "Convert the units of model" msgstr "Convertir las unidades del modelo" -msgid "Orient the model" -msgstr "Orientar el modelo" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "Escala el modelo por un factor de flotación" @@ -10656,6 +11001,12 @@ msgstr "" "Ajusta el nivel de registro de depuración. 0:fatal, 1:error, 2:advertencia, " "3:información, 4:depuración, 5:rastreo\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "Error en el archivo zip" @@ -10855,6 +11206,15 @@ msgstr "Por favor, introduzca el nombre que quiera asignar a la impresora." msgid "The name cannot exceed 40 characters." msgstr "El nombre no puede exceder de 40 caracteres." +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "El nombre no puede estar vacío." @@ -10886,6 +11246,9 @@ msgstr "La impresora no está conectada todavía." msgid "Please select filament to calibrate." msgstr "Por favor, seleccione el filamento para calibrar." +msgid "The input value size must be 3." +msgstr "El valor de tamaño de entrada debe ser 3." + msgid "Connecting to printer..." msgstr "Conectando a la impresora." @@ -10908,9 +11271,6 @@ msgstr "" "El resultado de la calibración del ratio de caudal se ha guardado en los " "ajustes" -msgid "The input value size must be 3." -msgstr "El valor de tamaño de entrada debe ser 3." - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" "El resultado de la calibración de velocidad volumétrica máxima se ha salvado " @@ -10965,12 +11325,12 @@ msgstr "" "wiki.\n" "\n" "Normalmente la calibración es innecesaria. Cuando se inicia una impresión de " -"un solo color/material, con la opción \"Calibración de la dinámica de " -"caudal\" marcada en el menú de inicio de impresión, la impresora seguirá el " -"método antiguo, calibrar el filamento antes de la impresión; Cuando se " -"inicia una impresión de varios colores/materiales, la impresora utilizará el " -"parámetro de compensación por defecto para el filamento durante cada cambio " -"de filamento que tendrá un buen resultado en la mayoría de los casos.\n" +"un solo color/material, con la opción \"Calibración de la dinámica de caudal" +"\" marcada en el menú de inicio de impresión, la impresora seguirá el método " +"antiguo, calibrar el filamento antes de la impresión; Cuando se inicia una " +"impresión de varios colores/materiales, la impresora utilizará el parámetro " +"de compensación por defecto para el filamento durante cada cambio de " +"filamento que tendrá un buen resultado en la mayoría de los casos.\n" "\n" "Tenga en cuenta que hay algunos casos en los que el resultado de la " "calibración no es fiable: el uso de una placa de textura para hacer la " @@ -11126,6 +11486,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "Por favor encuentre la mejor línea en su bandeja" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "Valor de entrada" @@ -11237,6 +11600,12 @@ msgstr "Error en la descripción" msgid "Extra info" msgstr "Información extra" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "Método" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s no es compatible con %s" @@ -11249,6 +11618,21 @@ msgstr "" msgid "Connecting to printer" msgstr "Conectando a la impresora" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" "El diámetro de la boquilla has sido sincronizado desde los ajustes de " @@ -11370,6 +11754,9 @@ msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" "El nombre de archivo que va a cargar no acaba en \"%s\". ¿Desea continuar?" +msgid "Upload" +msgstr "Cargar" + msgid "Print host upload queue" msgstr "Imprimir cola de carga del host" @@ -11431,9 +11818,6 @@ msgstr "Línea PA" msgid "PA Pattern" msgstr "Modelo PA" -msgid "Method" -msgstr "Método" - msgid "Start PA: " msgstr "Iniciar PA: " @@ -11515,12 +11899,10 @@ msgstr "paso: " msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"Por favor, introduzca valores válidos:\n" -"inicio>paso 0 >= 0\n" -"fin > inicio + paso)" msgid "VFA test" msgstr "Test VFA" @@ -11533,12 +11915,10 @@ msgstr "Velocidad final: " msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"Por favor, introduzca valores válidos:\n" -"inicio > paso 10 >= 0\n" -"final > inicio + paso)" msgid "Start retraction length: " msgstr "Iniciar anchura de retracción: " @@ -11601,6 +11981,17 @@ msgstr "" "Ha fallado la conexión a impresoras conectadas a través del host de " "impresión." +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -11871,6 +12262,155 @@ msgstr "" "¿Sabías que puedes utilizar más bucles de perímetro y mayor densidad de " "relleno de baja densidad para mejorar la resistencia del modelo?" +#~ msgid "Cali" +#~ msgstr "Cali" + +#~ msgid "Calibration of extrusion" +#~ msgstr "Calibración de extrusión" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Push new filament into the extruder" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "La temperatura del lecho de la otra capa es inferior a la temperatura del " +#~ "lecho de la primera capa durante más de %d grados centígrados.\n" +#~ "Esto puede hacer que el modelo se desprenda de la bandeja durante la " +#~ "impresión" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "La temperatura de capa es superior que la temperatura de vitrificación de " +#~ "este filamento. \n" +#~ " Esto podría causar que la boquilla se bloquee y produzca un fallo de " +#~ "impresión. Por favor, mantenga la impresora abierta durante el proceso " +#~ "para garantizar la circulación de aire o reducir la temperatura de la " +#~ "cama caliente" + +#~ msgid "Total Time Estimation" +#~ msgstr "Tiempo Total Estimado" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Identificación de frecuencia de resonancia" + +#~ msgid "Immediately score" +#~ msgstr "Immediately score" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "Please give a score for your favorite Bambu Market model." + +#~ msgid "Score" +#~ msgstr "Score" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bandeja de Ingeniería Bambú" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bandeja de Alta Temperatura Bambú" + +#~ msgid "Can't connect to the printer" +#~ msgstr "No se puede conectar a la impresora" + +#~ msgid "Recommended temperature range" +#~ msgstr "Rango de temperatura recomendado" + +#~ msgid "High Temp Plate" +#~ msgstr "Bandeja de Alta Temperatura" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "Esta es la temperatura de la cama cuando la bandeja de alta temperatura " +#~ "está instalada. Un valor de 0 significa que el filamento no admite la " +#~ "impresión en la bandeja de alta temperatura" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Altura carcasa de refuerzo interior en puentes" + +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges.These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "Si está activado, los bucles de soporte generarán debajo de los contornos " +#~ "de puentes internos. Estos bucles de soporte pueden prevenir extruir " +#~ "puentes en el aire y mejorar la calidad de la superficie superior, " +#~ "especialmente cuando la densidad de relleno es baja. Este valor determina " +#~ "el grosor de los bucles de soporte. 0 significa deshabilitar esta " +#~ "característica" + +#, c-format, boost-format +#~ msgid "" +#~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#~ msgstr "" +#~ "El max_accel_to_decel de Klipper se ajustará a este % o de aceleración" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "Estilo y forma del soporte. Para el soporte normal, proyectar los " +#~ "soportes en una cuadrícula regular creará soportes más estables (por " +#~ "defecto), mientras que las torres de soporte ajustadas ahorrarán material " +#~ "y reducirán las cicatrices del objeto.\n" +#~ "Para el soporte arbóreo, el estilo esbelto fusionará las ramas de forma " +#~ "más agresiva y ahorrará mucho material (por defecto), mientras que el " +#~ "estilo híbrido creará una estructura similar a la del soporte normal bajo " +#~ "grandes voladizos planos." + +#~ msgid "Target chamber temperature" +#~ msgstr "Temperatura objetivo de la cámara" + +#~ msgid "Bed temperature difference" +#~ msgstr "Diferencia de temperatura de la cama" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "No se recomienda que la temperatura de la otra capa sea inferior a la de " +#~ "la primera capa por encima de este umbral. Una temperatura demasiado baja " +#~ "de la otra capa puede hacer que el modelo se desprenda de la bandeja de " +#~ "impresión" + +#~ msgid "Orient the model" +#~ msgstr "Orientar el modelo" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 0 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Por favor, introduzca valores válidos:\n" +#~ "inicio>paso 0 >= 0\n" +#~ "fin > inicio + paso)" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 10 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Por favor, introduzca valores válidos:\n" +#~ "inicio > paso 10 >= 0\n" +#~ "final > inicio + paso)" + #~ msgid "Send to print" #~ msgstr "Mandar a imprimir" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 78a9e8717c..3499a05b9d 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: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril\n" @@ -670,6 +670,9 @@ msgstr "Chargement d'un mode de vue" msgid "Choose one file (3mf):" msgstr "Choisissez un fichier (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Choisissez un ou plusieurs fichiers (3mf/step/stl/svg/obj/amf) :" @@ -1529,6 +1532,9 @@ msgstr "Connexion…" msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "Vide" @@ -1541,12 +1547,6 @@ msgstr "" msgid "AMS not connected" msgstr "AMS non connecté" -msgid "Cali" -msgstr "Calibration" - -msgid "Calibration of extrusion" -msgstr "Calibration de l'extrusion" - msgid "Load Filament" msgstr "Charger" @@ -1579,6 +1579,9 @@ msgstr "Calibrer à nouveau" msgid "Cancel calibration" msgstr "Annuler la calibration" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "Chauffe de la buse" @@ -1594,8 +1597,14 @@ msgstr "Insertion du nouveau filament dans l'extrudeur" msgid "Purge old filament" msgstr "Purge de l’ancien filament" -msgid "Push new filament into the extruder" -msgstr "Poussez le nouveau filament dans l'extrudeur" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "Saisir un nouveau filament" @@ -2455,29 +2464,6 @@ msgstr "" "La température de buse recommandée pour ce type de filament est de [%d, %d] " "degrés centigrades" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"La température du plateau des autres couches est inférieure à la température " -"du plateau de la couche initiale de plus de %d degrés.\n" -"Cela peut entraîner le décollement du modèle sur le plateau pendant " -"l'impression" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"La température du plateau est supérieure à la température de vitrification " -"de ce filament.\n" -"Cela peut entraîner le bouchage de la buse et l'échec de l'impression.\n" -"Veuillez garder l'imprimante ouverte pendant le processus d'impression pour " -"assurer la circulation de l'air ou réduire la température du plateau" - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2485,6 +2471,13 @@ msgstr "" "Vitesse volumétrique maximale trop petite.\n" "Réinitialiser à 0.5" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2547,6 +2540,9 @@ msgstr "" "le nombre de couches supérieures à 0, la densité de remplissage à 0% et le " "type de timelapse sur Traditionnel." +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2681,6 +2677,36 @@ msgid "Paused due to heat bed temperature malfunction" msgstr "" "Mise en pause en raison d'un dysfonctionnement de la température du plateau" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "MC" @@ -2717,6 +2743,24 @@ msgstr "Échec de la vérification." msgid "Update failed." msgstr "Mise à jour a échoué." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "Échec du démarrage de la tâche d'impression" @@ -2845,12 +2889,15 @@ msgstr "Purgé" msgid "Total" msgstr "Total" -msgid "Total Time Estimation" +msgid "Total Estimation" msgstr "Estimation totale" msgid "Total time" msgstr "Durée totale" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "jusqu'à" @@ -2938,9 +2985,6 @@ msgstr "Imprimante" msgid "Print settings" msgstr "Paramètres d'impression" -msgid "Total Estimation" -msgstr "Estimation totale" - msgid "Time Estimation" msgstr "Durée estimée" @@ -3049,6 +3093,9 @@ msgstr "Autoriser plusieurs matériaux sur le même plateau" msgid "Avoid extrusion calibration region" msgstr "Éviter la zone de calibration de l'extrusion" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "Ajouter" @@ -3145,8 +3192,11 @@ msgstr "Calibration du Micro Lidar" msgid "Bed leveling" msgstr "Nivellement du plateau" -msgid "Resonance frequency identification" -msgstr "Identification de la fréquence de résonance" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "Programme de calibration" @@ -3166,6 +3216,9 @@ msgstr "Calibration du débit" msgid "Start Calibration" msgstr "Démarrer" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "Terminé" @@ -3243,9 +3296,6 @@ msgstr "Non" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "sera fermé avant de créer un nouveau modèle. Voulez-vous continuer ?" -msgid "Upload" -msgstr "" - msgid "Slice plate" msgstr "Découper le plateau" @@ -3920,12 +3970,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "Couche: N/A" -msgid "Immediately score" -msgstr "Noter immédiatement" - msgid "Clear" msgstr "Effacer" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "Caméra" @@ -3991,12 +4049,6 @@ msgstr "Dans la file d’attente Cloud Slicing, il reste %s tâches à venir." msgid "Layer: %s" msgstr "Couche: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Veuillez attribuer une note à votre modèle Bambu Market préféré." - -msgid "Score" -msgstr "Note" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Couche: %d/%d" @@ -4041,6 +4093,97 @@ msgstr "Extrême" msgid "Can't start this without SD card." msgstr "Impossible de démarrer sans carte SD." +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "info" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "Statut" @@ -4167,6 +4310,9 @@ msgstr "Avertissement:" msgid "Export successfully." msgstr "Exporté avec succès." +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "" @@ -4252,6 +4398,9 @@ msgstr "Inspection de la première couche" msgid "Auto-recovery from step loss" msgstr "Récupération automatique en cas de perte de pas" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "Global" @@ -4410,6 +4559,11 @@ msgstr "" "la buse par défaut de l'imprimante. Veuillez remplacer la buse ou le " "filament, sinon la buse sera usée ou endommagée." +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, c-format, boost-format msgid "Loading file: %s" msgstr "Chargement du fichier : %s" @@ -4637,6 +4791,11 @@ msgstr "téléchargement du projet…" msgid "Project downloaded %d%%" msgstr "Projet téléchargé %d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "Le fichier sélectionné" @@ -5036,9 +5195,6 @@ msgstr "erreur" msgid "warning" msgstr "attention" -msgid "info" -msgstr "info" - msgid "debug" msgstr "déboguer" @@ -5295,11 +5451,17 @@ msgstr "Bambu Cool Plate" msgid "PLA Plate" msgstr "Plaque PLA" -msgid "Bamabu Engineering Plate" -msgstr "Bambu Engineering Plate" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "Bambu High Temperature Plate" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "Envoi de la tâche d'impression" @@ -5313,8 +5475,8 @@ msgstr "Nivellement" msgid "Flow Dynamics Calibration" msgstr "" -msgid "Can't connect to the printer" -msgstr "Impossible de se connecter à l'imprimante" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "envoi terminé" @@ -5435,6 +5597,16 @@ msgid "This printer does not support printing all plates" msgstr "" "Cette imprimante ne prend pas en charge l’impression de toutes les plateaux" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "Erreurs" @@ -5788,6 +5960,9 @@ msgstr "Radeau" msgid "Support filament" msgstr "Filament pour supports" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "Tour de purge" @@ -5844,9 +6019,6 @@ msgstr "" "Plage de température de buse recommandée pour ce filament. Une valeur à 0 " "signifie non définie" -msgid "Recommended temperature range" -msgstr "Plage de température recommandée" - msgid "Print temperature" msgstr "Température d'impression" @@ -5878,16 +6050,14 @@ msgstr "" "installé. Une valeur à 0 signifie que le filament ne prend pas en charge " "l'impression sur le plateau Bambu Engineering Plate" -msgid "High Temp Plate" -msgstr "Bambu High Temperature Plate" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"Température du plateau lorsque le plateau Bambu High Temperature Plate est " -"installé. Une valeur à 0 signifie que le filament ne prend pas en charge " -"l'impression sur le plateau Bambu High Temperature Plate" msgid "Textured PEI Plate" msgstr "Bambu Dual-Sided Textured PEI Plate" @@ -5940,6 +6110,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "Ventilateur de refroidissement auxiliaire" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "G-code de démarrage du filament" @@ -5991,6 +6170,9 @@ msgstr "G-code avant le changement de couche" msgid "Layer change G-code" msgstr "G-code de changement de couche" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "G-code de changement de filament" @@ -6878,6 +7060,11 @@ msgstr "" "Échec du calcul de la largeur de ligne de %1%. Impossible d'obtenir la " "valeur de \"%2%\" " +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "erreur indéfinie" @@ -7041,6 +7228,24 @@ msgid "" msgstr "" "Le mode vase ne fonctionne pas lorsqu'un objet contient plusieurs matériaux." +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "" "La tour de purge n'est pas prise en charge avec la séquence d’impression " @@ -7580,6 +7785,14 @@ msgstr "Ralentir lors des surplombs" msgid "Enable this option to slow printing down for different overhang degree" msgstr "Permet de ralentir l'impression pour différents degrés de surplomb" +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "mm/s ou %" @@ -7716,6 +7929,23 @@ msgid "Default process profile when switch to this machine profile" msgstr "" "Profil de processus par défaut lors du passage à ce profil d’imprimante" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "Vitesse du ventilateur" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "Pas de ventilation pour la/les première(s)" @@ -7785,17 +8015,6 @@ msgstr "" "Ajouter un remplissage solide près des surfaces en pente pour garantir " "l'épaisseur verticale de la coque (couches solides supérieures + inférieures)" -msgid "Internal bridge support thickness" -msgstr "Épaisseur des supports de ponts internes" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" - msgid "Top surface pattern" msgstr "Motif des surfaces supérieures" @@ -8424,11 +8643,14 @@ msgstr "Le paramètre max_accel_to_decel de Klipper sera ajusté automatiquement msgid "accel_to_decel" msgstr "Ajuster l’accélération à la décélération" -#, fuzzy, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#, c-format, boost-format +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" msgstr "" -"Le paramètre max_accel_to_decel de Klipper sera ajusté à ce pourcentage " -"d’accélération" msgid "Jerk of outer walls" msgstr "Jerk des parois extérieures" @@ -8652,6 +8874,30 @@ msgstr "" msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "" "Activer cette option si l’imprimante est équipée d'un ventilateur de " @@ -8703,6 +8949,28 @@ msgstr "" "démarrer le ventilateur plus rapidement.\n" "Mettre à 0 pour désactiver." +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "Version de G-code" @@ -8970,9 +9238,6 @@ msgstr "Accélération maximale de déplacement" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -msgid "Fan speed" -msgstr "Vitesse du ventilateur" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8992,6 +9257,55 @@ msgstr "" "limiter la hauteur de couche maximale lorsque la hauteur de couche " "adaptative est activée" +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "Vitesse minimale du ventilateur de refroidissement" @@ -9290,6 +9604,22 @@ msgstr "" "buse de toucher l'impression lors du déplacement. L'utilisation d'une ligne " "en spirale pour soulever l’axe Z peut empêcher le stringing" +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "Type de décalage en Z" @@ -9811,21 +10141,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"Style et forme des supports.\n" -"Supports Normaux : Grille régulière avec des supports plus stables (par " -"défaut).\n" -"Support Ajustés : Economisent de la matière et réduisent les traces sur le " -"modèle.\n" -"Supports Arborescents Fins : Fusionnent les branches de manière plus " -"agressive et économisent beaucoup de filament (par défaut).\n" -"Supports Arborescents Solides : Fusionnent les branches de manière moins " -"agressive et économisent moins de filament.\n" -"Supports Arborescents Hybrides : Structure similaire aux supports normaux " -"avec de grands surplombs plats." msgid "Snug" msgstr "Ajustés" @@ -9988,24 +10308,19 @@ msgstr "" msgid "Chamber temperature" msgstr "Température de la chambre" -msgid "Target chamber temperature" -msgstr "Température cible de la chambre" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" +msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "Température de la buse pour les couches après la première" -msgid "Bed temperature difference" -msgstr "Différence de température du plateau" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"Il n'est pas recommandé que la température du plateau des autres couches " -"soit inférieure à celle de la couche initiale pendant plus de ce seuil. Une " -"température de plateau trop basse peut entraîner le décollement du modèle" - msgid "Detect thin wall" msgstr "Détecter les parois fines" @@ -10440,6 +10755,12 @@ msgstr "" msgid "Load first filament as default for those not loaded" msgstr "" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "mtcpp" @@ -10496,14 +10817,39 @@ msgstr "" msgid "Repetions count of the whole model" msgstr "" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "Convertir l'unité" msgid "Convert the units of model" msgstr "Convertir les unités du modèle" -msgid "Orient the model" -msgstr "Orienter le modèle" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "Mettre à l'échelle le modèle par un facteur flottant" @@ -10564,6 +10910,12 @@ msgstr "" "Définit le niveau de journalisation du déboggage. 0:fatal, 1:erreur, 2:" "avertissement, 3:info, 4:déboggage, 5:tracer\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "Erreur dans l'archive zip" @@ -10764,6 +11116,15 @@ msgstr "" msgid "The name cannot exceed 40 characters." msgstr "" +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "" @@ -10793,6 +11154,9 @@ msgstr "" msgid "Please select filament to calibrate." msgstr "" +msgid "The input value size must be 3." +msgstr "" + msgid "Connecting to printer..." msgstr "" @@ -10811,9 +11175,6 @@ msgstr "" msgid "Flow rate calibration result has been saved to preset" msgstr "" -msgid "The input value size must be 3." -msgstr "" - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" @@ -10949,6 +11310,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "" @@ -11051,6 +11415,12 @@ msgstr "" msgid "Extra info" msgstr "" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "Méthode" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "" @@ -11061,6 +11431,21 @@ msgstr "" msgid "Connecting to printer" msgstr "" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" @@ -11173,6 +11558,9 @@ msgstr "" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" +msgid "Upload" +msgstr "" + msgid "Print host upload queue" msgstr "" @@ -11234,9 +11622,6 @@ msgstr "Ligne PA" msgid "PA Pattern" msgstr "" -msgid "Method" -msgstr "Méthode" - msgid "Start PA: " msgstr "Début: " @@ -11314,12 +11699,10 @@ msgstr "Intervalle: " msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"Veuillez saisir des valeurs valides :\n" -"Début > 0 intervalle >= 0\n" -"Fin > Début + Intervalle)" msgid "VFA test" msgstr "Test VFA" @@ -11332,12 +11715,10 @@ msgstr "Vitesse de fin: " msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"Veuillez saisir des valeurs valides :\n" -"Début > 10 intervalles >= 0\n" -"Fin > Début + Intervalle)" msgid "Start retraction length: " msgstr "Longueur de rétraction de début: " @@ -11399,6 +11780,17 @@ msgid "Connection to printers connected via the print host failed." msgstr "" "La connexion aux imprimantes connectées via l’hôte d’impression a échoué." +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -11670,3 +12062,141 @@ msgstr "" "Améliorer la résistance\n" "Saviez-vous que vous pouvez utiliser plus de parois et une densité de " "remplissage plus élevée pour améliorer la résistance du modèle ?" + +#~ msgid "Cali" +#~ msgstr "Calibration" + +#~ msgid "Calibration of extrusion" +#~ msgstr "Calibration de l'extrusion" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Poussez le nouveau filament dans l'extrudeur" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "La température du plateau des autres couches est inférieure à la " +#~ "température du plateau de la couche initiale de plus de %d degrés.\n" +#~ "Cela peut entraîner le décollement du modèle sur le plateau pendant " +#~ "l'impression" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "La température du plateau est supérieure à la température de " +#~ "vitrification de ce filament.\n" +#~ "Cela peut entraîner le bouchage de la buse et l'échec de l'impression.\n" +#~ "Veuillez garder l'imprimante ouverte pendant le processus d'impression " +#~ "pour assurer la circulation de l'air ou réduire la température du plateau" + +#~ msgid "Total Time Estimation" +#~ msgstr "Estimation totale" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Identification de la fréquence de résonance" + +#~ msgid "Immediately score" +#~ msgstr "Noter immédiatement" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "Veuillez attribuer une note à votre modèle Bambu Market préféré." + +#~ msgid "Score" +#~ msgstr "Note" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bambu Engineering Plate" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bambu High Temperature Plate" + +#~ msgid "Can't connect to the printer" +#~ msgstr "Impossible de se connecter à l'imprimante" + +#~ msgid "Recommended temperature range" +#~ msgstr "Plage de température recommandée" + +#~ msgid "High Temp Plate" +#~ msgstr "Bambu High Temperature Plate" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "Température du plateau lorsque le plateau Bambu High Temperature Plate " +#~ "est installé. Une valeur à 0 signifie que le filament ne prend pas en " +#~ "charge l'impression sur le plateau Bambu High Temperature Plate" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Épaisseur des supports de ponts internes" + +#, fuzzy, c-format, boost-format +#~ msgid "" +#~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#~ msgstr "" +#~ "Le paramètre max_accel_to_decel de Klipper sera ajusté à ce pourcentage " +#~ "d’accélération" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "Style et forme des supports.\n" +#~ "Supports Normaux : Grille régulière avec des supports plus stables (par " +#~ "défaut).\n" +#~ "Support Ajustés : Economisent de la matière et réduisent les traces sur " +#~ "le modèle.\n" +#~ "Supports Arborescents Fins : Fusionnent les branches de manière plus " +#~ "agressive et économisent beaucoup de filament (par défaut).\n" +#~ "Supports Arborescents Solides : Fusionnent les branches de manière moins " +#~ "agressive et économisent moins de filament.\n" +#~ "Supports Arborescents Hybrides : Structure similaire aux supports normaux " +#~ "avec de grands surplombs plats." + +#~ msgid "Target chamber temperature" +#~ msgstr "Température cible de la chambre" + +#~ msgid "Bed temperature difference" +#~ msgstr "Différence de température du plateau" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "Il n'est pas recommandé que la température du plateau des autres couches " +#~ "soit inférieure à celle de la couche initiale pendant plus de ce seuil. " +#~ "Une température de plateau trop basse peut entraîner le décollement du " +#~ "modèle" + +#~ msgid "Orient the model" +#~ msgstr "Orienter le modèle" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 0 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Veuillez saisir des valeurs valides :\n" +#~ "Début > 0 intervalle >= 0\n" +#~ "Fin > Début + Intervalle)" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 10 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Veuillez saisir des valeurs valides :\n" +#~ "Début > 10 intervalles >= 0\n" +#~ "Fin > Début + Intervalle)" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index abfaa7bcc2..a4a8abe4c2 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -651,6 +651,9 @@ msgstr "Mód nézet betöltése" msgid "Choose one file (3mf):" msgstr "Válassz ki egy fájlt (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Válassz ki egy vagy több fájlt (3mf/step/stl/svg/obj/amf):" @@ -1506,6 +1509,9 @@ msgstr "Csatlakozás..." msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "Üres" @@ -1518,12 +1524,6 @@ msgstr "" msgid "AMS not connected" msgstr "Az AMS nincs csatlakoztatva" -msgid "Cali" -msgstr "Kali" - -msgid "Calibration of extrusion" -msgstr "Extrudálás kalibrálása" - msgid "Load Filament" msgstr "Filament betöltés" @@ -1556,6 +1556,9 @@ msgstr "Kalibrálja újra" msgid "Cancel calibration" msgstr "Kalibrálás megszakítása" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "Fűtsd fel a fúvókát" @@ -1571,8 +1574,14 @@ msgstr "Új filament betöltése az extruderbe" msgid "Purge old filament" msgstr "Régi filament kiöblítése" -msgid "Push new filament into the extruder" -msgstr "Push new filament into the extruder" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "Grab new filament" @@ -2409,27 +2418,6 @@ msgid "" msgstr "" "Az ajánlott fúvóka hőmérséklet ehhez a filament típushoz [%d, %d] Celsius-fok" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"A többi réteg asztalhőmérséklete több mint %d Celsius-fokkal alacsonyabb, " -"mint a kezdőréteg hőmérséklete.\n" -"Ez azt okozhatja, hogy a modell a nyomtatás során leválik a tárgyasztalról" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"Az asztalhőmérséklet magasabb, mint a filament üvegesedési hőmérséklete.\n" -"Ez a fúvóka eltömődését és nyomtatási hibákat okozhat.\n" -"Kérjük, hogy a nyomtatás során tartsd nyitva a nyomtatót, vagy csökkentsd az " -"asztalhőmérsékletet." - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2437,6 +2425,13 @@ msgstr "" "Túl alacsony max. volumetrikus sebesség.\n" "Az értéke 0,5-re állt vissza" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2495,6 +2490,9 @@ msgstr "" "Spiral mode only works when wall loops is 1, support is disabled, top shell " "layers is 0, sparse infill density is 0 and timelapse type is traditional." +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2624,6 +2622,36 @@ msgstr "Szüneteltetve a fúvóka hőmérsékletének rendellenessége miatt" msgid "Paused due to heat bed temperature malfunction" msgstr "Szüneteltetve a tárgyasztal hőmérsékletének rendellenessége miatt" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "MC" @@ -2660,6 +2688,24 @@ msgstr "Sikertelen ellenőrzés." msgid "Update failed." msgstr "A frissítés sikertelen." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "Nem sikerült elindítani a nyomtatási feladatot" @@ -2788,12 +2834,15 @@ msgstr "Öblített" msgid "Total" msgstr "Összesen" -msgid "Total Time Estimation" -msgstr "Total Time Estimation" +msgid "Total Estimation" +msgstr "Összesített becslés" msgid "Total time" msgstr "Teljes idő" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "legfeljebb" @@ -2881,9 +2930,6 @@ msgstr "Nyomtató" msgid "Print settings" msgstr "Nyomtatási beállítások" -msgid "Total Estimation" -msgstr "Összesített becslés" - msgid "Time Estimation" msgstr "Időbecslés" @@ -2992,6 +3038,9 @@ msgstr "Többféle anyag használata egy tálcán" msgid "Avoid extrusion calibration region" msgstr "Extrudáláskalibráció környékének elkerülése" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "Hozzáadás" @@ -3086,8 +3135,11 @@ msgstr "Micro Lidar kalibrálás" msgid "Bed leveling" msgstr "Asztalszintezés" -msgid "Resonance frequency identification" -msgstr "Rezonanciafrekvencia meghatározása" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "Kalibrációs program" @@ -3107,6 +3159,9 @@ msgstr "Kalibrációs anyagáramlás" msgid "Start Calibration" msgstr "Kalibrálás" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "Befejezve" @@ -3183,9 +3238,6 @@ msgstr "Nem" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "will be closed before creating a new model. Do you want to continue?" -msgid "Upload" -msgstr "" - msgid "Slice plate" msgstr "Tálca szeletelése" @@ -3849,12 +3901,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "Layer: N/A" -msgid "Immediately score" -msgstr "Immediately score" - msgid "Clear" msgstr "Törlés" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "Kamera" @@ -3920,12 +3980,6 @@ msgstr "In Cloud Slicing Queue, there are %s tasks ahead of you." msgid "Layer: %s" msgstr "Layer: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Please give a score for your favorite Bambu Market model." - -msgid "Score" -msgstr "Score" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Layer: %d/%d" @@ -3967,6 +4021,97 @@ msgstr "Őrült" msgid "Can't start this without SD card." msgstr "MicroSD kártya nélkül nem indítható." +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "infó" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "Állapot" @@ -4093,6 +4238,9 @@ msgstr "Figyelem:" msgid "Export successfully." msgstr "Sikeresen exportálva" +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "" @@ -4181,6 +4329,9 @@ msgstr "Kezdőréteg ellenőrzése" msgid "Auto-recovery from step loss" msgstr "Automatikus helyreállítás lépésvesztésből" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "Globális" @@ -4334,6 +4485,11 @@ msgstr "" "fúvókát vagy válassz másik filamentet, különben előfordulhat, hogy a fúvóka " "idő előtt elhasználódik vagy megsérül." +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, c-format, boost-format msgid "Loading file: %s" msgstr "Fájl betöltése: %s" @@ -4549,6 +4705,11 @@ msgstr "projekt letöltése ..." msgid "Project downloaded %d%%" msgstr "Projekt letöltve %d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "A kiválasztott fájl" @@ -4940,9 +5101,6 @@ msgstr "hiba" msgid "warning" msgstr "figyelmeztetés" -msgid "info" -msgstr "infó" - msgid "debug" msgstr "debug" @@ -5192,11 +5350,17 @@ msgstr "Bambu Cool Plate" msgid "PLA Plate" msgstr "PLA Plate" -msgid "Bamabu Engineering Plate" -msgstr "Bambu Engineering Plate" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "Bambu High Temperature Plate" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "Nyomtatási feladat küldése" @@ -5210,8 +5374,8 @@ msgstr "Asztalszintezés" msgid "Flow Dynamics Calibration" msgstr "" -msgid "Can't connect to the printer" -msgstr "Nem lehet csatlakozni a nyomtatóhoz" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "küldés befejezve" @@ -5325,6 +5489,16 @@ msgstr "Nem küldhetsz nyomtatási feladatot egy üres tálcával." msgid "This printer does not support printing all plates" msgstr "Ez a nyomtató nem támogatja az összes tálcára való nyomtatást" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "Hibák" @@ -5651,6 +5825,9 @@ msgstr "Tutaj" msgid "Support filament" msgstr "Filament a támaszhoz" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "Törlő torony" @@ -5707,9 +5884,6 @@ msgstr "" "Az ajánlott fúvóka hőmérséklet-tartomány ehhez a filamenthez. A 0 azt " "jelenti, hogy nincs beállítva" -msgid "Recommended temperature range" -msgstr "Ajánlott hőmérséklet-tartomány" - msgid "Print temperature" msgstr "Nyomtatási hőmérséklet" @@ -5739,16 +5913,14 @@ msgstr "" "Asztalhőmérséklet a mérnöki tálca használatával. A 0 érték azt jelenti, hogy " "a filament nem támogatja az Engineering Plate-re történő nyomtatást" -msgid "High Temp Plate" -msgstr "High Temp Plate" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"Asztalhőmérséklet a magas hőmérsékletű tálca használatával. A 0 érték azt " -"jelenti, hogy a filament nem támogatja a High Temp Plate-re történő " -"nyomtatást" msgid "Textured PEI Plate" msgstr "Textured PEI Plate" @@ -5801,6 +5973,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "Kiegészítő tárgyhűtő ventilátor" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "Filament kezdő G-kód" @@ -5852,6 +6033,9 @@ msgstr "Rétegváltás előtti G-kód" msgid "Layer change G-code" msgstr "Rétegváltás G-kód" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "Filament csere G-kód" @@ -6719,6 +6903,11 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" "Nem sikerült kiszámítani %1% vonalszélességét. “%2%” értéke nem érhető el " +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "meghatározatlan hiba" @@ -6883,6 +7072,24 @@ msgstr "" "A spirál (váza) mód nem működik, ha egy objektum egynél több anyagot " "tartalmaz." +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "A prime tower is not supported in “By object” print." @@ -7396,6 +7603,14 @@ msgstr "" "Engedélyezd ezt az opciót a nyomtatási sebesség lassításához különböző " "túlnyúlási szögeknél" +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "" @@ -7530,6 +7745,23 @@ msgstr "Alapértelmezett folyamat profil" msgid "Default process profile when switch to this machine profile" msgstr "Alapértelmezett folyamat profil, ha erre a gép profilra váltasz" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "Ventilátor fordulatszám" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "Nincs hűtés az első" @@ -7598,17 +7830,6 @@ msgstr "" "A függőleges héjvastagság biztosítása érdekében szilárd kitöltést alkalmaz a " "lejtős felületek közelében." -msgid "Internal bridge support thickness" -msgstr "Belső áthidalások támaszának vastagsága" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" - msgid "Top surface pattern" msgstr "Felső felület mintázata" @@ -8186,7 +8407,12 @@ msgid "accel_to_decel" msgstr "" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" msgstr "" msgid "Jerk of outer walls" @@ -8391,6 +8617,30 @@ msgstr "" msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "" "Engedélyezd ezt az opciót, ha a gép rendelkezik kiegészítő tárgyhűtő " @@ -8425,6 +8675,28 @@ msgid "" "Set to 0 to deactivate." msgstr "" +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "G-kód változat" @@ -8678,9 +8950,6 @@ msgstr "Maximális gyorsulás a mozgáshoz" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -msgid "Fan speed" -msgstr "Ventilátor fordulatszám" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8699,6 +8968,55 @@ msgstr "" "rétegmagasság korlátozására szolgál, ha az adaptív rétegmagasság " "engedélyezve van." +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "Tárgyhűtő ventilátor minimum fordulatszáma" @@ -8986,6 +9304,22 @@ msgstr "" "nagyobb mozgás közben a tárgynak ütközzön. A Z tengely emelésekor használt " "körkörös mozgás megelőzheti a szálazást." +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "" @@ -9486,16 +9820,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"A támaszok típusa és formája. Normál támasz esetén a rácsmintázat stabilabb " -"alátámasztást eredményez, míg a szorosan illeszkedő tornyok anyagot " -"takarítanak meg és csökkentik az objektumon keletkező felületi hibákat.\n" -"A fa támaszok esetén a karcsú változat agresszívebben egyesíti az ágakat és " -"több anyagot takarít meg (alapértelmezett), míg a hibrid változat a normál " -"támaszokhoz hasonló szerkezetet hoz létre a nagy lapos túlnyúlások alatt." msgid "Snug" msgstr "Szoros" @@ -9653,25 +9982,19 @@ msgstr "" msgid "Chamber temperature" msgstr "" -msgid "Target chamber temperature" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "Fúvóka hőmérséklete az első réteg után" -msgid "Bed temperature difference" -msgstr "Asztalhőmérséklet különbség" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"Nem ajánlott, hogy a kezdőréteget követő többi réteg asztalhőmérséklete " -"alacsonyabb legyen ennél a küszöbértéknél. Ha a többi rétegnél túl alacsony " -"asztalhőmérsékletet használsz, előfordulhat, hogy a tárgy leválik az " -"asztalról nyomtatás közben" - msgid "Detect thin wall" msgstr "Vékony fal felismerése" @@ -10089,6 +10412,12 @@ msgstr "" msgid "Load first filament as default for those not loaded" msgstr "" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "mtcpp" @@ -10143,14 +10472,39 @@ msgstr "" msgid "Repetions count of the whole model" msgstr "" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "Mértékegység átváltása" msgid "Convert the units of model" msgstr "Modell mértékegységének átváltása" -msgid "Orient the model" -msgstr "Modell orientációja" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "A modell méretezése egy lebegő tényezővel" @@ -10206,6 +10560,12 @@ msgstr "" "A hibakeresési naplózási szint beállítása. 0:fatal, 1:error, 2:warning, 3:" "info, 4:debug, 5:trace\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "Hiba a zip fájlban" @@ -10402,6 +10762,15 @@ msgstr "" msgid "The name cannot exceed 40 characters." msgstr "" +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "" @@ -10431,6 +10800,9 @@ msgstr "" msgid "Please select filament to calibrate." msgstr "" +msgid "The input value size must be 3." +msgstr "" + msgid "Connecting to printer..." msgstr "" @@ -10449,9 +10821,6 @@ msgstr "" msgid "Flow rate calibration result has been saved to preset" msgstr "" -msgid "The input value size must be 3." -msgstr "" - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" @@ -10587,6 +10956,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "" @@ -10689,6 +11061,12 @@ msgstr "" msgid "Extra info" msgstr "" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "" @@ -10699,6 +11077,21 @@ msgstr "" msgid "Connecting to printer" msgstr "" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" @@ -10811,6 +11204,9 @@ msgstr "" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" +msgid "Upload" +msgstr "" + msgid "Print host upload queue" msgstr "" @@ -10872,9 +11268,6 @@ msgstr "" msgid "PA Pattern" msgstr "" -msgid "Method" -msgstr "" - msgid "Start PA: " msgstr "" @@ -10948,7 +11341,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10963,7 +11357,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -11019,6 +11414,17 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "" +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -11276,3 +11682,108 @@ msgstr "" "Szilárdság javítása\n" "Tudtad, hogy több fal vagy nagyobb kitöltés használatával javíthatod a " "modell szilárdságát?" + +#~ msgid "Cali" +#~ msgstr "Kali" + +#~ msgid "Calibration of extrusion" +#~ msgstr "Extrudálás kalibrálása" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Push new filament into the extruder" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "A többi réteg asztalhőmérséklete több mint %d Celsius-fokkal alacsonyabb, " +#~ "mint a kezdőréteg hőmérséklete.\n" +#~ "Ez azt okozhatja, hogy a modell a nyomtatás során leválik a tárgyasztalról" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "Az asztalhőmérséklet magasabb, mint a filament üvegesedési hőmérséklete.\n" +#~ "Ez a fúvóka eltömődését és nyomtatási hibákat okozhat.\n" +#~ "Kérjük, hogy a nyomtatás során tartsd nyitva a nyomtatót, vagy csökkentsd " +#~ "az asztalhőmérsékletet." + +#~ msgid "Total Time Estimation" +#~ msgstr "Total Time Estimation" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Rezonanciafrekvencia meghatározása" + +#~ msgid "Immediately score" +#~ msgstr "Immediately score" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "Please give a score for your favorite Bambu Market model." + +#~ msgid "Score" +#~ msgstr "Score" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bambu Engineering Plate" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bambu High Temperature Plate" + +#~ msgid "Can't connect to the printer" +#~ msgstr "Nem lehet csatlakozni a nyomtatóhoz" + +#~ msgid "Recommended temperature range" +#~ msgstr "Ajánlott hőmérséklet-tartomány" + +#~ msgid "High Temp Plate" +#~ msgstr "High Temp Plate" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "Asztalhőmérséklet a magas hőmérsékletű tálca használatával. A 0 érték azt " +#~ "jelenti, hogy a filament nem támogatja a High Temp Plate-re történő " +#~ "nyomtatást" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Belső áthidalások támaszának vastagsága" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "A támaszok típusa és formája. Normál támasz esetén a rácsmintázat " +#~ "stabilabb alátámasztást eredményez, míg a szorosan illeszkedő tornyok " +#~ "anyagot takarítanak meg és csökkentik az objektumon keletkező felületi " +#~ "hibákat.\n" +#~ "A fa támaszok esetén a karcsú változat agresszívebben egyesíti az ágakat " +#~ "és több anyagot takarít meg (alapértelmezett), míg a hibrid változat a " +#~ "normál támaszokhoz hasonló szerkezetet hoz létre a nagy lapos túlnyúlások " +#~ "alatt." + +#~ msgid "Bed temperature difference" +#~ msgstr "Asztalhőmérséklet különbség" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "Nem ajánlott, hogy a kezdőréteget követő többi réteg asztalhőmérséklete " +#~ "alacsonyabb legyen ennél a küszöbértéknél. Ha a többi rétegnél túl " +#~ "alacsony asztalhőmérsékletet használsz, előfordulhat, hogy a tárgy " +#~ "leválik az asztalról nyomtatás közben" + +#~ msgid "Orient the model" +#~ msgstr "Modell orientációja" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 877b973b95..c37e2cb08f 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -648,6 +648,9 @@ msgstr "Loading a mode view" msgid "Choose one file (3mf):" msgstr "Choose one file (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Scegli uno o più file (3mf/step/stl/svg/obj/amf):" @@ -1492,6 +1495,9 @@ msgstr "Connecting..." msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "Empty" @@ -1504,12 +1510,6 @@ msgstr "" msgid "AMS not connected" msgstr "AMS non collegato" -msgid "Cali" -msgstr "Calib." - -msgid "Calibration of extrusion" -msgstr "Calibrazione estrusione" - msgid "Load Filament" msgstr "Load" @@ -1540,6 +1540,9 @@ msgstr "Calibrate again" msgid "Cancel calibration" msgstr "Cancel calibration" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "Riscaldo nozzle" @@ -1555,8 +1558,14 @@ msgstr "Inserisco il nuovo filamento nell'estrusore" msgid "Purge old filament" msgstr "Purge old filament" -msgid "Push new filament into the extruder" -msgstr "Inserisco il nuovo filamento nell'estrusore" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "Prendo un nuovo filamento" @@ -2405,28 +2414,6 @@ msgstr "" "The recommended nozzle temperature for this filament type is [%d, %d] " "degrees centigrade" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"The bed temperature of other layers is lower than the bed temperature of the " -"first layer by more than %d degrees centigrade.\n" -"This may cause models to break free from the build plate during printing." - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"La temperatura del piano è superiore alla temperatura di vetrificazione di " -"questo filamento.\n" -"Ciò può causare il blocco del nozzle e il fallimento della stampa.\n" -"Si prega di tenere la stampante aperta durante il processo di stampa per " -"garantire la circolazione dell'aria o ridurre la temperatura del piano." - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2434,6 +2421,13 @@ msgstr "" "Velocità volumetrica massima troppo bassa.\n" "Il valore è stato ripristinato a 0,5" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2492,6 +2486,9 @@ msgstr "" "disabilitato, i layers superiori del guscio sono 0, la densità riempimento è " "0 e il tipo di timelapse è tradizionale" +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2619,6 +2616,36 @@ msgstr "Paused due to nozzle temperature malfunction" msgid "Paused due to heat bed temperature malfunction" msgstr "Paused due to heat bed temperature malfunction" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "MC" @@ -2655,6 +2682,24 @@ msgstr "Verification failed." msgid "Update failed." msgstr "Update failed." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "Impossibile avviare il processo di stampa" @@ -2783,12 +2828,15 @@ msgstr "Spurgo" msgid "Total" msgstr "Totale" -msgid "Total Time Estimation" -msgstr "Stima del tempo totale" +msgid "Total Estimation" +msgstr "Total estimation" msgid "Total time" msgstr "Tempo totale" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "fino a" @@ -2876,9 +2924,6 @@ msgstr "Stampante" msgid "Print settings" msgstr "Impostazioni di stampa" -msgid "Total Estimation" -msgstr "Total estimation" - msgid "Time Estimation" msgstr "Tempo stimato" @@ -2987,6 +3032,9 @@ msgstr "Allow multiple materials on same plate" msgid "Avoid extrusion calibration region" msgstr "Avoid extrusion calibration region" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "Aggiungi" @@ -3081,8 +3129,11 @@ msgstr "Calibrazione micro lidar" msgid "Bed leveling" msgstr "Livellamento del piano" -msgid "Resonance frequency identification" -msgstr "Identificazione frequenza di risonanza" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "Calibration program" @@ -3102,6 +3153,9 @@ msgstr "Calibration Flow" msgid "Start Calibration" msgstr "Start Calibration" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "Completato" @@ -3178,9 +3232,6 @@ msgstr "No" msgid "will be closed before creating a new model. Do you want to continue?" msgstr " verrà chiuso prima di creare un nuovo modello. Vuoi continuare?" -msgid "Upload" -msgstr "" - msgid "Slice plate" msgstr "Slice plate" @@ -3844,12 +3895,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "Layer: N/A" -msgid "Immediately score" -msgstr "Punteggio immediato" - msgid "Clear" msgstr "Cancella" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "Camera" @@ -3915,12 +3974,6 @@ msgstr "Ci sono %s attività davanti nella coda di slicing del cloud." msgid "Layer: %s" msgstr "Layer: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Assegna un punteggio per il tuo modello Bambu Market preferito." - -msgid "Score" -msgstr "Punteggio" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Layer: %d/%d" @@ -3964,6 +4017,97 @@ msgstr "Ludicrous" msgid "Can't start this without SD card." msgstr "Impossibile iniziare senza scheda MicroSD." +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "info" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "Stato" @@ -4090,6 +4234,9 @@ msgstr "Warning:" msgid "Export successfully." msgstr "Esportato correttamente" +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "" @@ -4177,6 +4324,9 @@ msgstr "Ispezione del primo layer" msgid "Auto-recovery from step loss" msgstr "Recupero automatico perdita passi" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "Global" @@ -4332,6 +4482,11 @@ msgstr "" "nozzle predefinito della stampante. Si prega di sostituire il nozzle o il " "filamento indurito, altrimenti il nozzle sarà usurato o danneggiato." +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, c-format, boost-format msgid "Loading file: %s" msgstr "Loading file: %s" @@ -4545,6 +4700,11 @@ msgstr "Download progetto..." msgid "Project downloaded %d%%" msgstr "Progetto scaricato %d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "Il file selezionato" @@ -4933,9 +5093,6 @@ msgstr "error" msgid "warning" msgstr "warning" -msgid "info" -msgstr "info" - msgid "debug" msgstr "debug" @@ -5186,11 +5343,17 @@ msgstr "Bambu Cool Plate" msgid "PLA Plate" msgstr "PLA Plate" -msgid "Bamabu Engineering Plate" -msgstr "Bambu Engineering Plate" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "Bambu High Temperature Plate" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "Send print job to" @@ -5204,8 +5367,8 @@ msgstr "Bed leveling" msgid "Flow Dynamics Calibration" msgstr "" -msgid "Can't connect to the printer" -msgstr "Impossibile connettersi alla stampante" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "Send complete" @@ -5317,6 +5480,16 @@ msgstr "Impossibile inviare un lavoro di stampa per una piatto vuoto." msgid "This printer does not support printing all plates" msgstr "Questa stampante non supporta la stampa di piatti multipla" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "Errori" @@ -5647,6 +5820,9 @@ msgstr "Raft" msgid "Support filament" msgstr "Filament for Supports" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "Prime tower" @@ -5701,9 +5877,6 @@ msgstr "Recommended nozzle temperature" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "Recommended nozzle temperature range of this filament. 0 means not set" -msgid "Recommended temperature range" -msgstr "Recommended temperature range" - msgid "Print temperature" msgstr "Print temperature" @@ -5733,16 +5906,14 @@ msgstr "" "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." -msgid "High Temp Plate" -msgstr "High Temp Plate" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"This is the bed temperature when the high temperature plate is installed. A " -"value of 0 means the filament does not support printing on the High Temp " -"Plate." msgid "Textured PEI Plate" msgstr "Textured PEI Plate" @@ -5793,6 +5964,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "Auxiliary part cooling fan" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "Filament start G-code" @@ -5844,6 +6024,9 @@ msgstr "G-code prima del cambio layer" msgid "Layer change G-code" msgstr "Layer change G-code" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "Change filament G-code" @@ -6702,6 +6885,11 @@ msgstr "Multiple" msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "Failed to calculate line width of %1%. Cannot get value of “%2%” " +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "errore non definito" @@ -6862,6 +7050,24 @@ msgstr "" "Spiral (vase) mode does not work when an object contains more than one " "material." +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "A prime tower is not supported in “By object” print." @@ -7374,6 +7580,14 @@ msgstr "" "Enable this option to slow down when printing overhangs. The speeds for " "different overhang percentages are set below." +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "" @@ -7510,6 +7724,23 @@ msgstr "Default process profile" msgid "Default process profile when switch to this machine profile" msgstr "Default process profile when switching to this machine profile" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "Velocità ventola" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "No cooling for the first" @@ -7578,17 +7809,6 @@ msgstr "" "garantire lo spessore verticale del guscio (layers solidi superiori e " "inferiori)." -msgid "Internal bridge support thickness" -msgstr "Spessore supporto interno del ponte" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" - msgid "Top surface pattern" msgstr "Top surface pattern" @@ -8165,7 +8385,12 @@ msgid "accel_to_decel" msgstr "" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" msgstr "" msgid "Jerk of outer walls" @@ -8372,6 +8597,30 @@ msgstr "" msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "Enable this option if the machine has an auxiliary part cooling fan" @@ -8404,6 +8653,28 @@ msgid "" "Set to 0 to deactivate." msgstr "" +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "Formato G-code" @@ -8655,9 +8926,6 @@ msgstr "Maximum acceleration for travel" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -msgid "Fan speed" -msgstr "Velocità ventola" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8675,6 +8943,55 @@ msgstr "" "The highest printable layer height for the extruder: this is used to limit " "the maximum layer height when adaptive layer height is enabled." +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "Minimum speed for part cooling fan" @@ -8960,6 +9277,22 @@ msgstr "" "hitting the print when traveling more. Using spiral lines to lift z can " "prevent stringing." +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "" @@ -9455,18 +9788,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"Stile e forma del supporto. Per supporti normali, la proiezione dei supporti " -"in una griglia regolare creerà supporti più stabili (impostazione " -"predefinita), mentre le torri di supporto aderenti faranno risparmiare " -"materiale e ridurranno le giunzioni oggetto.\n" -"Per i supporti ad albero, lo stile slim unirà i rami in modo più aggressivo " -"e risparmierà molto materiale (impostazione predefinita), mentre lo stile " -"ibrido creerà una struttura simile a quella dei sostegni normali sotto " -"grandi sporgenze piatte." msgid "Snug" msgstr "Aderenti" @@ -9624,25 +9950,19 @@ msgstr "" msgid "Chamber temperature" msgstr "" -msgid "Target chamber temperature" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "Nozzle temperature after the first layer" -msgid "Bed temperature difference" -msgstr "Bed temperature difference" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"Non è consigliabile che la temperatura del piano degli altri layer sia " -"inferiore a quella del primo layer di oltre questa soglia. Una temperatura " -"del piano troppo bassa degli altri layer può causare il distacco " -"dell'oggetto dal piatto." - msgid "Detect thin wall" msgstr "Detect thin walls" @@ -10065,6 +10385,12 @@ msgstr "" msgid "Load first filament as default for those not loaded" msgstr "" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "mtcpp" @@ -10121,14 +10447,39 @@ msgstr "" msgid "Repetions count of the whole model" msgstr "" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "Convert Unit" msgid "Convert the units of model" msgstr "Convert the units of model" -msgid "Orient the model" -msgstr "Orient the model" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "Scale the model by a float factor" @@ -10184,6 +10535,12 @@ msgstr "" "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "Error in zip archive" @@ -10383,6 +10740,15 @@ msgstr "" msgid "The name cannot exceed 40 characters." msgstr "" +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "" @@ -10412,6 +10778,9 @@ msgstr "" msgid "Please select filament to calibrate." msgstr "" +msgid "The input value size must be 3." +msgstr "" + msgid "Connecting to printer..." msgstr "" @@ -10430,9 +10799,6 @@ msgstr "" msgid "Flow rate calibration result has been saved to preset" msgstr "" -msgid "The input value size must be 3." -msgstr "" - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" @@ -10568,6 +10934,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "" @@ -10670,6 +11039,12 @@ msgstr "" msgid "Extra info" msgstr "" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "" @@ -10680,6 +11055,21 @@ msgstr "" msgid "Connecting to printer" msgstr "" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" @@ -10792,6 +11182,9 @@ msgstr "" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" +msgid "Upload" +msgstr "" + msgid "Print host upload queue" msgstr "" @@ -10853,9 +11246,6 @@ msgstr "" msgid "PA Pattern" msgstr "" -msgid "Method" -msgstr "" - msgid "Start PA: " msgstr "" @@ -10929,7 +11319,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10944,7 +11335,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -11000,6 +11392,17 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "" +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -11258,3 +11661,109 @@ msgstr "" "Migliorare la resistenza\n" "Sapevate che è possibile utilizzare un maggior numero di anelli a parete e " "una maggiore densità riempimento per migliorare la resistenza del modello?" + +#~ msgid "Cali" +#~ msgstr "Calib." + +#~ msgid "Calibration of extrusion" +#~ msgstr "Calibrazione estrusione" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Inserisco il nuovo filamento nell'estrusore" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "The bed temperature of other layers is lower than the bed temperature of " +#~ "the first layer by more than %d degrees centigrade.\n" +#~ "This may cause models to break free from the build plate during printing." + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "La temperatura del piano è superiore alla temperatura di vetrificazione " +#~ "di questo filamento.\n" +#~ "Ciò può causare il blocco del nozzle e il fallimento della stampa.\n" +#~ "Si prega di tenere la stampante aperta durante il processo di stampa per " +#~ "garantire la circolazione dell'aria o ridurre la temperatura del piano." + +#~ msgid "Total Time Estimation" +#~ msgstr "Stima del tempo totale" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Identificazione frequenza di risonanza" + +#~ msgid "Immediately score" +#~ msgstr "Punteggio immediato" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "Assegna un punteggio per il tuo modello Bambu Market preferito." + +#~ msgid "Score" +#~ msgstr "Punteggio" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bambu Engineering Plate" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bambu High Temperature Plate" + +#~ msgid "Can't connect to the printer" +#~ msgstr "Impossibile connettersi alla stampante" + +#~ msgid "Recommended temperature range" +#~ msgstr "Recommended temperature range" + +#~ msgid "High Temp Plate" +#~ msgstr "High Temp Plate" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "This is the bed temperature when the high temperature plate is installed. " +#~ "A value of 0 means the filament does not support printing on the High " +#~ "Temp Plate." + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Spessore supporto interno del ponte" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "Stile e forma del supporto. Per supporti normali, la proiezione dei " +#~ "supporti in una griglia regolare creerà supporti più stabili " +#~ "(impostazione predefinita), mentre le torri di supporto aderenti faranno " +#~ "risparmiare materiale e ridurranno le giunzioni oggetto.\n" +#~ "Per i supporti ad albero, lo stile slim unirà i rami in modo più " +#~ "aggressivo e risparmierà molto materiale (impostazione predefinita), " +#~ "mentre lo stile ibrido creerà una struttura simile a quella dei sostegni " +#~ "normali sotto grandi sporgenze piatte." + +#~ msgid "Bed temperature difference" +#~ msgstr "Bed temperature difference" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "Non è consigliabile che la temperatura del piano degli altri layer sia " +#~ "inferiore a quella del primo layer di oltre questa soglia. Una " +#~ "temperatura del piano troppo bassa degli altri layer può causare il " +#~ "distacco dell'oggetto dal piatto." + +#~ msgid "Orient the model" +#~ msgstr "Orient the model" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index cb245d43ac..6268745dfe 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -646,6 +646,9 @@ msgstr "モードビューをロード" msgid "Choose one file (3mf):" msgstr "ファイルを選択 (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "ファイルを選択 (3mf/step/stl/svg/obj/amf)" @@ -1480,6 +1483,9 @@ msgstr "接続中…" msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "空" @@ -1492,12 +1498,6 @@ msgstr "" msgid "AMS not connected" msgstr "AMS が接続されていません" -msgid "Cali" -msgstr "標定" - -msgid "Calibration of extrusion" -msgstr "押出のキャリブレーション" - msgid "Load Filament" msgstr "ロード" @@ -1530,6 +1530,9 @@ msgstr "再度キャリブレーションを行う" msgid "Cancel calibration" msgstr "キャリブレーションを取消し" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "ノズルを加熱" @@ -1545,8 +1548,14 @@ msgstr "フィラメントを押出機に押入れる" msgid "Purge old filament" msgstr "古いフィラメントを排出" -msgid "Push new filament into the extruder" -msgstr "Push new filament into the extruder" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "Grab new filament" @@ -2341,30 +2350,18 @@ msgid "" "centigrade" msgstr "このフィラメントで推奨ノズル温度は %d ~ %d ℃です。" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"ベッド温度が1層目温度より %d ℃以上低いです。造形中プレートより離脱する可能性" -"があります" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"ベッド温度がフィラメントの軟化温度より高いです。ノズル詰りや造形失敗する可能" -"性があります。\n" -"ドアを開いて換気を良くするか、ベッド温度を下げてください。" - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" msgstr "値が小さすぎます、0.5に戻します" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2414,6 +2411,9 @@ msgstr "" "Spiral mode only works when wall loops is 1, support is disabled, top shell " "layers is 0, sparse infill density is 0 and timelapse type is traditional." +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2541,6 +2541,36 @@ msgstr "ノズル温度異常により一時停止" msgid "Paused due to heat bed temperature malfunction" msgstr "ベッド温度異常により一時停止" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "MC" @@ -2577,6 +2607,24 @@ msgstr "認証失敗" msgid "Update failed." msgstr "更新が失敗しました。" +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "造形タスクを開始できませんでした" @@ -2704,12 +2752,15 @@ msgstr "フラッシュ" msgid "Total" msgstr "合計" -msgid "Total Time Estimation" -msgstr "Total Time Estimation" +msgid "Total Estimation" +msgstr "予測合計" msgid "Total time" msgstr "総時間" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "最大" @@ -2797,9 +2848,6 @@ msgstr "プリンター" msgid "Print settings" msgstr "造形設定" -msgid "Total Estimation" -msgstr "予測合計" - msgid "Time Estimation" msgstr "予測時間" @@ -2908,6 +2956,9 @@ msgstr "一つのプレートに複数の材料を使用可能" msgid "Avoid extrusion calibration region" msgstr "押出しキャリブレーション領域を避ける" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "追加" @@ -3000,8 +3051,11 @@ msgstr "ライダー キャリブレーション" msgid "Bed leveling" msgstr "ベッドレベリング" -msgid "Resonance frequency identification" -msgstr "共振特性測定" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "キャリブレーション項目" @@ -3020,6 +3074,9 @@ msgstr "キャリブレーション項目" msgid "Start Calibration" msgstr "キャリブレーションを開始" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "完了" @@ -3095,9 +3152,6 @@ msgstr "いいえ" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "will be closed before creating a new model. Do you want to continue?" -msgid "Upload" -msgstr "" - msgid "Slice plate" msgstr "スライス" @@ -3752,12 +3806,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "Layer: N/A" -msgid "Immediately score" -msgstr "Immediately score" - msgid "Clear" msgstr "クリア" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "カメラ" @@ -3823,12 +3885,6 @@ msgstr "In Cloud Slicing Queue, there are %s tasks ahead of you." msgid "Layer: %s" msgstr "Layer: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Please give a score for your favorite Bambu Market model." - -msgid "Score" -msgstr "Score" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Layer: %d/%d" @@ -3870,6 +3926,97 @@ msgstr "超高速" msgid "Can't start this without SD card." msgstr "起動するのにSDカードが必要です。" +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "情報" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "デバイス状態" @@ -3993,6 +4140,9 @@ msgstr "警告" msgid "Export successfully." msgstr "エクスポートが成功しました。" +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "" @@ -4077,6 +4227,9 @@ msgstr "1層目検査" msgid "Auto-recovery from step loss" msgstr "自動回復" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "全般" @@ -4225,6 +4378,11 @@ msgstr "" "ノズル硬度はフィラメントの要求硬度より低いです。高硬度ノズルに交換してくださ" "い。" +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, c-format, boost-format msgid "Loading file: %s" msgstr "ファイルを読込む: %s" @@ -4438,6 +4596,11 @@ msgstr "プロジェクトをダウンロード中" msgid "Project downloaded %d%%" msgstr "プロジェクトをダウンロード %d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "選択したファイル" @@ -4820,9 +4983,6 @@ msgstr "エラー" msgid "warning" msgstr "警告" -msgid "info" -msgstr "情報" - msgid "debug" msgstr "デバッグ" @@ -5072,11 +5232,17 @@ msgstr "Bambu 常温プレート" msgid "PLA Plate" msgstr "PLA Plate" -msgid "Bamabu Engineering Plate" -msgstr "Bambu エンジニアリングプレート" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "Bambu 高温プレート" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "造形タスクを送信" @@ -5090,8 +5256,8 @@ msgstr "ベッドレベリング" msgid "Flow Dynamics Calibration" msgstr "" -msgid "Can't connect to the printer" -msgstr "プリンターに接続できない" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "送信完了" @@ -5185,6 +5351,16 @@ msgstr "空プレートがある為、送信できません" msgid "This printer does not support printing all plates" msgstr "プリンターが全てのプレートを造形することができません" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "エラー" @@ -5500,6 +5676,9 @@ msgstr "ラフト" msgid "Support filament" msgstr "サポート用フィラメント" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "プライムタワー" @@ -5549,9 +5728,6 @@ msgstr "推奨ノズル温度" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "フィラメントの推奨ノズル温度、0は未設定との意味です" -msgid "Recommended temperature range" -msgstr "推奨温度範囲" - msgid "Print temperature" msgstr "造形温度" @@ -5581,15 +5757,14 @@ msgstr "" "エンジニアリングプレートが装着時のベッド温度です。値が0の場合、フィラメントが" "エンジニアリングプレートに使用できない意味です。" -msgid "High Temp Plate" -msgstr "高温プレート" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"高温プレートが装着時のベッド温度です。値が0の場合、フィラメントが高温プレート" -"に使用できない意味です。" msgid "Textured PEI Plate" msgstr "PEIプレート" @@ -5638,6 +5813,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "パーツ補助冷却ファン" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "フィラメント開始G-code" @@ -5689,6 +5873,9 @@ msgstr "積層変更前のG-code" msgid "Layer change G-code" msgstr "積層変更時のG-code" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "フィラメント変更G-code" @@ -6522,6 +6709,11 @@ msgstr "複数" msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "線幅 %1% を算出できませんでした。%2%の値を取得できません。" +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "未定義エラー" @@ -6670,6 +6862,24 @@ msgid "" "materials." msgstr "複数の素材の場合、スパイラルモードを使用できません" +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "オブジェクト順で造形する場合、プライムタワーを利用できません" @@ -7151,6 +7361,14 @@ msgstr "" "オーバーハングを造形時に速度を下げます。各角度のオーバーハングに対して、下記" "の減速パラメータを設定してください。" +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "" @@ -7280,6 +7498,23 @@ msgstr "デフォルト プロセスプロファイル" msgid "Default process profile when switch to this machine profile" msgstr "デバイスを切替える時のデフォルト プロセス プロファイル" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "回転速度" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "冷却しない最初層数" @@ -7342,17 +7577,6 @@ msgid "" "thickness (top+bottom solid layers)" msgstr "傾斜面にソリッドインフィルを追加" -msgid "Internal bridge support thickness" -msgstr "内部ブリッジサポート厚さ" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" - msgid "Top surface pattern" msgstr "トップ面パターン" @@ -7907,7 +8131,12 @@ msgid "accel_to_decel" msgstr "" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" msgstr "" msgid "Jerk of outer walls" @@ -8099,6 +8328,30 @@ msgstr "ノズル硬度です、値が0になる場合、ノズル硬度を考 msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "パーツ補助冷却ファンがある場合有効にしてください" @@ -8131,6 +8384,28 @@ msgid "" "Set to 0 to deactivate." msgstr "" +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "G-codeスタイル" @@ -8376,9 +8651,6 @@ msgstr "移動最大加速度" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -msgid "Fan speed" -msgstr "回転速度" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8394,6 +8666,55 @@ msgstr "" "最大積層ピッチ:この値は「アダプティブ積層ピッチ」が有効時に積層ピッチの最大" "値です" +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "パーツ冷却ファンの最低回転数" @@ -8665,6 +8986,22 @@ msgstr "" "リトラクション時に、ノズルを少し上げてから移動します。この動作でモデルとの衝" "突を回避できます。" +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "" @@ -9137,13 +9474,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"サポートのスタイルと形状。通常サポートでは、グリッドでサポートを生成します。" -"ツリーサポートでは、サポート材を節約できます。ハイブリッドでは、ツリーより大" -"きなサポート面を生成できます。" msgid "Snug" msgstr "Snug" @@ -9295,23 +9630,19 @@ msgstr "" msgid "Chamber temperature" msgstr "" -msgid "Target chamber temperature" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "1層目後のノズル温度" -msgid "Bed temperature difference" -msgstr "ベッド温度差" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"他の層のベッド温度を1層目よりこの値以上高く設定してください。温度が低くなる" -"と、造形失敗する可能性があります。" - msgid "Detect thin wall" msgstr "薄い壁を検出" @@ -9702,6 +10033,12 @@ msgstr "" msgid "Load first filament as default for those not loaded" msgstr "" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "mtcpp" @@ -9756,14 +10093,39 @@ msgstr "" msgid "Repetions count of the whole model" msgstr "" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "単位変換" msgid "Convert the units of model" msgstr "モデルの単位を変換" -msgid "Orient the model" -msgstr "モデルの向きを調整" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "指定した比率で伸縮する" @@ -9819,6 +10181,12 @@ msgstr "" "デバッグロギングレベルを設定します。0:fatal、1:error、2:warning、3:info、4:" "debug、5:trace。\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "ファイル圧縮にエラー発生" @@ -10015,6 +10383,15 @@ msgstr "" msgid "The name cannot exceed 40 characters." msgstr "" +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "" @@ -10044,6 +10421,9 @@ msgstr "" msgid "Please select filament to calibrate." msgstr "" +msgid "The input value size must be 3." +msgstr "" + msgid "Connecting to printer..." msgstr "" @@ -10062,9 +10442,6 @@ msgstr "" msgid "Flow rate calibration result has been saved to preset" msgstr "" -msgid "The input value size must be 3." -msgstr "" - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" @@ -10200,6 +10577,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "" @@ -10302,6 +10682,12 @@ msgstr "" msgid "Extra info" msgstr "" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "" @@ -10312,6 +10698,21 @@ msgstr "" msgid "Connecting to printer" msgstr "" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" @@ -10424,6 +10825,9 @@ msgstr "" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" +msgid "Upload" +msgstr "" + msgid "Print host upload queue" msgstr "" @@ -10485,9 +10889,6 @@ msgstr "" msgid "PA Pattern" msgstr "" -msgid "Method" -msgstr "" - msgid "Start PA: " msgstr "" @@ -10561,7 +10962,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10576,7 +10978,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10632,6 +11035,17 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "" +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -10865,3 +11279,98 @@ msgid "" msgstr "" "強度の向上\n" "壁面層数やインフィルの充填密度を増やして造形強度を向上できます。" + +#~ msgid "Cali" +#~ msgstr "標定" + +#~ msgid "Calibration of extrusion" +#~ msgstr "押出のキャリブレーション" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Push new filament into the extruder" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "ベッド温度が1層目温度より %d ℃以上低いです。造形中プレートより離脱する可能" +#~ "性があります" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "ベッド温度がフィラメントの軟化温度より高いです。ノズル詰りや造形失敗する可" +#~ "能性があります。\n" +#~ "ドアを開いて換気を良くするか、ベッド温度を下げてください。" + +#~ msgid "Total Time Estimation" +#~ msgstr "Total Time Estimation" + +#~ msgid "Resonance frequency identification" +#~ msgstr "共振特性測定" + +#~ msgid "Immediately score" +#~ msgstr "Immediately score" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "Please give a score for your favorite Bambu Market model." + +#~ msgid "Score" +#~ msgstr "Score" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bambu エンジニアリングプレート" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bambu 高温プレート" + +#~ msgid "Can't connect to the printer" +#~ msgstr "プリンターに接続できない" + +#~ msgid "Recommended temperature range" +#~ msgstr "推奨温度範囲" + +#~ msgid "High Temp Plate" +#~ msgstr "高温プレート" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "高温プレートが装着時のベッド温度です。値が0の場合、フィラメントが高温プ" +#~ "レートに使用できない意味です。" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "内部ブリッジサポート厚さ" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "サポートのスタイルと形状。通常サポートでは、グリッドでサポートを生成しま" +#~ "す。ツリーサポートでは、サポート材を節約できます。ハイブリッドでは、ツリー" +#~ "より大きなサポート面を生成できます。" + +#~ msgid "Bed temperature difference" +#~ msgstr "ベッド温度差" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "他の層のベッド温度を1層目よりこの値以上高く設定してください。温度が低くな" +#~ "ると、造形失敗する可能性があります。" + +#~ msgid "Orient the model" +#~ msgstr "モデルの向きを調整" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index b9f885bfaf..b3891ab99a 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: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "PO-Revision-Date: 2023-09-21 09:52+0900\n" "Last-Translator: Hotsolidinfill\n" "Language-Team: \n" @@ -661,6 +661,9 @@ msgstr "모드 보기 로드 중" msgid "Choose one file (3mf):" msgstr "하나의 파일을 선택 (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "하나 이상의 파일 선택(3mf/step/stl/svg/obj/amf):" @@ -1498,6 +1501,9 @@ msgstr "연결 중..." msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "비어 있음" @@ -1510,12 +1516,6 @@ msgstr "자동 리필" msgid "AMS not connected" msgstr "AMS가 연결되지 않음" -msgid "Cali" -msgstr "교정" - -msgid "Calibration of extrusion" -msgstr "압출 교정" - msgid "Load Filament" msgstr "필라멘트 넣기" @@ -1546,6 +1546,9 @@ msgstr "다시 교정" msgid "Cancel calibration" msgstr "교정 취소" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "노즐 가열" @@ -1561,8 +1564,14 @@ msgstr "새로운 필라멘트를 압출기에 밀어 넣습니다" msgid "Purge old filament" msgstr "오래된 필라멘트 제거" -msgid "Push new filament into the extruder" -msgstr "새 필라멘트를 압출기에 밀어 넣으세요" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "새 필라멘트 가져오기" @@ -2377,26 +2386,6 @@ msgid "" "centigrade" msgstr "이 필라멘트 유형의 권장 노즐 온도는 [%d, %d]°C입니다" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"다른 레이어의 베드 온도가 초기 레이어의 베드 온도보다 %d°C 이상 낮습니다.\n" -"이로 인해 출력 중에 모델이 빌드 플레이트에서 탈출할 수 있습니다" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"침대 온도가 이 필라멘트의 유리화 온도보다 높습니다.\n" -"노즐이 막히고 출력 오류가 발생할 수 있습니다\n" -"출력 과정 중에는 프린터를 열어두어 공기가 순환되도록 하거나 핫 베드의 온도를 " -"낮추십시오" - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2404,6 +2393,13 @@ msgstr "" "최대 체적 속도가 너무 작습니다.\n" "0.5로 재설정" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2461,6 +2457,9 @@ msgstr "" "나선 모드는 벽 루프 1, 지지대 비활성화, 상단 셸 레이어 0, 드문 채우기 밀도 " "0, 시간 경과 유형 기존인 경우에만 작동합니다." +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2588,6 +2587,36 @@ msgstr "노즐 온도 오작동으로 일시 정지됨" msgid "Paused due to heat bed temperature malfunction" msgstr "히트 베드 온도 오작동으로 일시 정지됨" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "MC" @@ -2624,6 +2653,24 @@ msgstr "확인에 실패했습니다." msgid "Update failed." msgstr "업데이트에 실패했습니다." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "출력 작업을 시작하지 못했습니다" @@ -2756,12 +2803,15 @@ msgstr "쏟기(플러쉬)" msgid "Total" msgstr "합계" -msgid "Total Time Estimation" -msgstr "추정 시간 합계" +msgid "Total Estimation" +msgstr "추정치 합계" msgid "Total time" msgstr "시간 합계" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "까지" @@ -2849,9 +2899,6 @@ msgstr "프린터" msgid "Print settings" msgstr "프린터 설정" -msgid "Total Estimation" -msgstr "추정치 합계" - msgid "Time Estimation" msgstr "추정 시간" @@ -2960,6 +3007,9 @@ msgstr "동일한 플레이트에 여러 재료 허용" msgid "Avoid extrusion calibration region" msgstr "압출 교정 영역을 피하십시오" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "추가" @@ -3055,8 +3105,11 @@ msgstr "마이크로 레이더 교정" msgid "Bed leveling" msgstr "베드 레벨링" -msgid "Resonance frequency identification" -msgstr "공진 주파수 식별" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "교정 프로그램" @@ -3075,6 +3128,9 @@ msgstr "교정 흐름" msgid "Start Calibration" msgstr "교정 시작" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "완료" @@ -3151,9 +3207,6 @@ msgstr "아니오" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "새 모델을 생성하기 전에 닫힙니다. 계속하시겠습니까?" -msgid "Upload" -msgstr "업로드" - msgid "Slice plate" msgstr "슬라이스 플레이트" @@ -3814,12 +3867,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "레이어: N/A" -msgid "Immediately score" -msgstr "즉시 점수 매기기" - msgid "Clear" msgstr "지우기" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "카메라" @@ -3885,12 +3946,6 @@ msgstr "클라우드 슬라이싱 대기열에는 %s개의 작업이 앞에 있 msgid "Layer: %s" msgstr "레이어: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "좋아하는 Bambu Market 모델에 점수를 매겨주세요." - -msgid "Score" -msgstr "점수" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "레이어: %d/%d" @@ -3932,6 +3987,97 @@ msgstr "루더크러스" msgid "Can't start this without SD card." msgstr "SD 카드가 없으면 시작할 수 없습니다." +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "정보" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "상태" @@ -4055,6 +4201,9 @@ msgstr "경고:" msgid "Export successfully." msgstr "내보내기 성공." +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "심각한 경고:" @@ -4142,6 +4291,9 @@ msgstr "첫 레이어 검사" msgid "Auto-recovery from step loss" msgstr "손실 단계부터 자동 복구" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "전역" @@ -4297,6 +4449,11 @@ msgstr "" "\"Hardened\" 노즐을 사용하거나 필라멘트를 교체하십시오. 그렇지 않으면 노즐이 " "마모되거나 손상됩니다." +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, c-format, boost-format msgid "Loading file: %s" msgstr "파일 로드 중: %s" @@ -4507,6 +4664,11 @@ msgstr "프로젝트 다운로드 중 ..." msgid "Project downloaded %d%%" msgstr "프로젝트 다운로드 %d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "선택한 파일" @@ -4888,9 +5050,6 @@ msgstr "오류" msgid "warning" msgstr "경고" -msgid "info" -msgstr "정보" - msgid "debug" msgstr "디버그" @@ -5140,11 +5299,17 @@ msgstr "Bambu Cool Plate" msgid "PLA Plate" msgstr "PLA 플레이트" -msgid "Bamabu Engineering Plate" -msgstr "Bamabu Engineering Plate" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "Bamabu High Temperature Plate" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "출력 작업 보내기" @@ -5158,8 +5323,8 @@ msgstr "베드 레벨링" msgid "Flow Dynamics Calibration" msgstr "동적 유량 교정" -msgid "Can't connect to the printer" -msgstr "프린터에 연결할 수 없습니다" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "전송 완료" @@ -5264,6 +5429,16 @@ msgstr "빈 플레이트에 대한 출력 작업을 보낼 수 없습니다" msgid "This printer does not support printing all plates" msgstr "이 프린터는 모든 플레이트 출력을 지원하지 않습니다" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "오류" @@ -5514,8 +5689,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "툴헤드 없이 시간 경과를 기록할 경우 \"시간 경과 제거 타워\"를 추가하는 것이 " "좋습니다\n" @@ -5579,6 +5754,9 @@ msgstr "라프트" msgid "Support filament" msgstr "지지대 필라멘트" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "프라임 타워" @@ -5629,9 +5807,6 @@ msgstr "권장 노즐 온도" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "이 필라멘트의 권장 노즐 온도 범위. 0은 설정하지 않음을 의미합니다" -msgid "Recommended temperature range" -msgstr "권장 온도 범위" - msgid "Print temperature" msgstr "출력 온도" @@ -5661,15 +5836,14 @@ msgstr "" "엔지니어링 플레이트가 설치 시 베드 온도. 값 0은 필라멘트가 엔지니어링 플레이" "트에 출력하는 것을 지원하지 않음을 의미합니다" -msgid "High Temp Plate" -msgstr "고온 플레이트" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"고온 플레이트 설치 시 베드 온도. 값 0은 필라멘트가 고온 플레이트에 출력하는 " -"것을 지원하지 않음을 의미합니다" msgid "Textured PEI Plate" msgstr "텍스처 PEI 플레이트" @@ -5718,6 +5892,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "보조 출력물 냉각 팬" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "Filament start G-code" @@ -5769,6 +5952,9 @@ msgstr "Before layer change G-code" msgid "Layer change G-code" msgstr "Layer change G-code" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "Change filament G-code" @@ -6631,6 +6817,11 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" "%1%의 선 너비를 계산하지 못했습니다. \"%2%\"의 값을 가져올 수 없습니다 " +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "정의되지 않은 오류" @@ -6786,6 +6977,24 @@ msgid "" msgstr "" "개체에 둘 이상의 재료가 포함된 경우 나선 꽃병 모드가 작동하지 않습니다." +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "프라임 타워는 \"개체별\" 출력에서 지원되지 않습니다." @@ -7298,6 +7507,14 @@ msgstr "돌출부에서 감속" msgid "Enable this option to slow printing down for different overhang degree" msgstr "돌출부 정도에 따라 출력 속도를 낮추려면 이 옵션을 활성화합니다" +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "mm/s or %" @@ -7436,6 +7653,23 @@ msgstr "기본 프로세스 프로필" msgid "Default process profile when switch to this machine profile" msgstr "이 장비 프로필로 전환할 때의 기본 프로세스 프로필" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "팬 속도" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "냉각 중지: 첫레이어~" @@ -7501,21 +7735,6 @@ msgstr "" "경사진 표면 근처에 꽉찬 채우기를 추가하여 수직 쉘 두께를 보장합니다(상단+하" "단 꽉찬 레이어)" -msgid "Internal bridge support thickness" -msgstr "내부 다리 지지대 두께" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" -"활성화된 경우 내부 다리의 윤곽선 아래에 지지대 루프를 생성합니다. 이러한 지지" -"대 루프는 내부 다리를 공중에서 압출하는 것을 방지하고, 특히 드문 채우기 밀도" -"가 낮을 때 상단 표면 품질을 향상시킬 수 있습니다. 이 값은 지지대 루프의 두께" -"를 결정하며 0은 이 기능을 사용하지 않음을 의미합니다" - msgid "Top surface pattern" msgstr "상단 표면 패턴" @@ -8127,8 +8346,13 @@ msgid "accel_to_decel" msgstr "가속/감속" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" -msgstr "Klipper의 max_accel_to_decel이 이 가속도 % o로 조정됩니다" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" +msgstr "" msgid "Jerk of outer walls" msgstr "외벽 저크" @@ -8199,10 +8423,10 @@ 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." +"\"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\" 의 0에서 \"full_fan_speed_layer\" " "의 최고 속도까지 선형적으로 증가합니다. \"full_fan_speed_layer\"가 " @@ -8340,6 +8564,30 @@ msgstr "" msgid "HRC" msgstr "록웰 경도(HRC)" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "기계에 보조 출력물 냉각 팬이 있는 경우 이 옵션 사용" @@ -8384,6 +8632,28 @@ msgstr "" "를 빠르게 향상시키기에 부족할 수 있는 팬에게 유용합니다.\n" "비활성화하려면 0으로 설정합니다." +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "G코드 호환(Flavor)" @@ -8641,9 +8911,6 @@ msgstr "이동 최대 가속도" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "이동 시 최대 가속도(M204 T)는 Marlin 2에만 적용됩니다" -msgid "Fan speed" -msgstr "팬 속도" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8661,6 +8928,55 @@ msgstr "" "압출기의 출력 가능한 최대 레이어 높이입니다. 사용된 값은 적응형 레이어 높이" "를 활성화할 때 최대 레이어 높이를 제한합니다" +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "출력물 냉각 팬의 최소 속도" @@ -8958,6 +9274,22 @@ msgstr "" "니다. 이동(트레블) 시 노즐이 출력물에 부딪히는 것을 방지합니다. 나선 라인" "(Spiral line)을 사용하여 Z를 올리면 실 발생을 방지할 수 있습니다" +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "Z 올리기 유형" @@ -9467,15 +9799,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"지지대의 모양. 일반 지지대의 경우, 격자는 보다 안정적인 지지대(기본값)가 생성" -"되는 반면 맞춤 지지대는 재료를 절약하고 개체 자국을 줄입니다.\n" -"나무 지지대의 경우 얇은 모양은 가지를 더 적극적으로 병합하고 많은 재료를 절약" -"합니다(기본값). 반면 혼합 스타일은 크고 평평한 오버행 아래에 일반 지지대와 유" -"사한 구조를 만듭니다." msgid "Snug" msgstr "맞춤" @@ -9642,24 +9970,19 @@ msgstr "" msgid "Chamber temperature" msgstr "챔버 온도" -msgid "Target chamber temperature" -msgstr "설정할 챔버 온도" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" +msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "초기 레이어 이후의 노즐 온도" -msgid "Bed temperature difference" -msgstr "베드 온도차" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"이 임계값 이상으로 다른 레이어의 베드 온도를 초기 레이어보다 낮추는 것을 권장" -"하지 않습니다. 다른 레이어의 베드 온도가 너무 낮으면 빌드 플레이트에서 모델" -"이 깨질 수 있습니다" - msgid "Detect thin wall" msgstr "얇은 벽 감지" @@ -10073,6 +10396,12 @@ msgstr "기본 필라멘트 로드" msgid "Load first filament as default for those not loaded" msgstr "로드되지 않은 경우 기본값으로 첫 번째 필라멘트 로드" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "mtcpp" @@ -10127,14 +10456,39 @@ msgstr "반복 횟수" msgid "Repetions count of the whole model" msgstr "전체 모델의 반복 횟수" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "단위 변환" msgid "Convert the units of model" msgstr "모델의 단위를 변환" -msgid "Orient the model" -msgstr "모델 방향 설정" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "부동 소수점 계수로 모델 크기 조정" @@ -10193,6 +10547,12 @@ msgstr "" "디버그 로깅 수준을 설정합니다. 0:치명적, 1:오류, 2:경고, 3:정보, 4:디버그, 5:" "추적\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "Zip 아카이브 오류" @@ -10391,6 +10751,15 @@ msgstr "프린터에 저장할 이름을 입력하세요." msgid "The name cannot exceed 40 characters." msgstr "이름은 40자를 초과할 수 없습니다." +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "이름은 비워둘 수 없습니다." @@ -10420,6 +10789,9 @@ msgstr "프린터가 아직 연결되지 않았습니다." msgid "Please select filament to calibrate." msgstr "교정할 필라멘트를 선택하세요." +msgid "The input value size must be 3." +msgstr "입력 값 크기는 3이어야 합니다." + msgid "Connecting to printer..." msgstr "프린터에 연결하는 중..." @@ -10438,9 +10810,6 @@ msgstr "교정을 위해 하나 이상의 필라멘트를 선택하십시오" msgid "Flow rate calibration result has been saved to preset" msgstr "유량 교정 결과가 사전 설정에 저장되었습니다" -msgid "The input value size must be 3." -msgstr "입력 값 크기는 3이어야 합니다." - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "최대 체적 속도 교정 결과가 사전 설정에 저장되었습니다" @@ -10634,6 +11003,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "당신의 플레이트에서 가장 좋은 선을 찾아보세요" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "입력값" @@ -10741,6 +11113,12 @@ msgstr "오류 설명" msgid "Extra info" msgstr "추가 정보" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "방법" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s은(는) %s과(와) 호환되지 않습니다" @@ -10751,6 +11129,21 @@ msgstr "TPU는 동적 유량 자동 교정에서 지원되지 않습니다." msgid "Connecting to printer" msgstr "프린터에 연결 중" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "노즐 직경이 프린터 설정에서 동기화되었습니다" @@ -10865,6 +11258,9 @@ msgstr "저장소에 업로드" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "업로드 파일 이름이 \"%s\"로 끝나지 않습니다. 계속하시겠습니까?" +msgid "Upload" +msgstr "업로드" + msgid "Print host upload queue" msgstr "출력 호스트 업로드 대기열" @@ -10926,9 +11322,6 @@ msgstr "PA Line" msgid "PA Pattern" msgstr "PA Pattern" -msgid "Method" -msgstr "방법" - msgid "Start PA: " msgstr "시작 PA: " @@ -11010,12 +11403,10 @@ msgstr "단계: " msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"유효한 값을 입력하십시오:\n" -"시작 > 0 단계 >= 0\n" -"끝 > 시작 + 단계)" msgid "VFA test" msgstr "VFA 테스트(VFA test)" @@ -11028,12 +11419,10 @@ msgstr "종료 속도: " msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"유효한 값을 입력하십시오:\n" -"시작 > 10 단계 >= 0\n" -"끝 > 시작 + 단계)" msgid "Start retraction length: " msgstr "퇴출 시작 길이: " @@ -11092,6 +11481,17 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "출력 호스트를 통해 연결된 프린터에 연결하지 못했습니다." +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -11355,3 +11755,141 @@ msgstr "" "강도 향상\n" "모델의 강도를 개선하기 위해 더 많은 벽 루프와 더 높은 드문 채우기 밀도를 사용" "할 수 있다는 것을 알고 있습니까?" + +#~ msgid "Cali" +#~ msgstr "교정" + +#~ msgid "Calibration of extrusion" +#~ msgstr "압출 교정" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "새 필라멘트를 압출기에 밀어 넣으세요" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "다른 레이어의 베드 온도가 초기 레이어의 베드 온도보다 %d°C 이상 낮습니" +#~ "다.\n" +#~ "이로 인해 출력 중에 모델이 빌드 플레이트에서 탈출할 수 있습니다" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "침대 온도가 이 필라멘트의 유리화 온도보다 높습니다.\n" +#~ "노즐이 막히고 출력 오류가 발생할 수 있습니다\n" +#~ "출력 과정 중에는 프린터를 열어두어 공기가 순환되도록 하거나 핫 베드의 온도" +#~ "를 낮추십시오" + +#~ msgid "Total Time Estimation" +#~ msgstr "추정 시간 합계" + +#~ msgid "Resonance frequency identification" +#~ msgstr "공진 주파수 식별" + +#~ msgid "Immediately score" +#~ msgstr "즉시 점수 매기기" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "좋아하는 Bambu Market 모델에 점수를 매겨주세요." + +#~ msgid "Score" +#~ msgstr "점수" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bamabu Engineering Plate" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bamabu High Temperature Plate" + +#~ msgid "Can't connect to the printer" +#~ msgstr "프린터에 연결할 수 없습니다" + +#~ msgid "Recommended temperature range" +#~ msgstr "권장 온도 범위" + +#~ msgid "High Temp Plate" +#~ msgstr "고온 플레이트" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "고온 플레이트 설치 시 베드 온도. 값 0은 필라멘트가 고온 플레이트에 출력하" +#~ "는 것을 지원하지 않음을 의미합니다" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "내부 다리 지지대 두께" + +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges.These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "활성화된 경우 내부 다리의 윤곽선 아래에 지지대 루프를 생성합니다. 이러한 " +#~ "지지대 루프는 내부 다리를 공중에서 압출하는 것을 방지하고, 특히 드문 채우" +#~ "기 밀도가 낮을 때 상단 표면 품질을 향상시킬 수 있습니다. 이 값은 지지대 루" +#~ "프의 두께를 결정하며 0은 이 기능을 사용하지 않음을 의미합니다" + +#, c-format, boost-format +#~ msgid "" +#~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#~ msgstr "Klipper의 max_accel_to_decel이 이 가속도 % o로 조정됩니다" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "지지대의 모양. 일반 지지대의 경우, 격자는 보다 안정적인 지지대(기본값)가 " +#~ "생성되는 반면 맞춤 지지대는 재료를 절약하고 개체 자국을 줄입니다.\n" +#~ "나무 지지대의 경우 얇은 모양은 가지를 더 적극적으로 병합하고 많은 재료를 " +#~ "절약합니다(기본값). 반면 혼합 스타일은 크고 평평한 오버행 아래에 일반 지지" +#~ "대와 유사한 구조를 만듭니다." + +#~ msgid "Target chamber temperature" +#~ msgstr "설정할 챔버 온도" + +#~ msgid "Bed temperature difference" +#~ msgstr "베드 온도차" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "이 임계값 이상으로 다른 레이어의 베드 온도를 초기 레이어보다 낮추는 것을 " +#~ "권장하지 않습니다. 다른 레이어의 베드 온도가 너무 낮으면 빌드 플레이트에" +#~ "서 모델이 깨질 수 있습니다" + +#~ msgid "Orient the model" +#~ msgstr "모델 방향 설정" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 0 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "유효한 값을 입력하십시오:\n" +#~ "시작 > 0 단계 >= 0\n" +#~ "끝 > 시작 + 단계)" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 10 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "유효한 값을 입력하십시오:\n" +#~ "시작 > 10 단계 >= 0\n" +#~ "끝 > 시작 + 단계)" diff --git a/localization/i18n/list.txt b/localization/i18n/list.txt index fef73aa60a..93ac1c1b5d 100644 --- a/localization/i18n/list.txt +++ b/localization/i18n/list.txt @@ -144,4 +144,5 @@ src/slic3r/GUI/BonjourDialog.cpp src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp src/slic3r/GUI/PrintHostDialogs.cpp src/slic3r/GUI/calib_dlg.cpp -src/slic3r/GUI/PhysicalPrinterDialog.cpp \ No newline at end of file +src/slic3r/GUI/PhysicalPrinterDialog.cpp +src/slic3r/Utils/CalibUtils.cpp \ No newline at end of file diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 6eb9c35f68..7b552634a3 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -651,6 +651,9 @@ msgstr "Een modusweergave laden" msgid "Choose one file (3mf):" msgstr "Kies een bestand (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Kies een of meer bestanden (3mf/step/stl/svg/obj/amf):" @@ -1514,6 +1517,9 @@ msgstr "Verbinden..." msgid "?" msgstr " ?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "Leeg" @@ -1526,12 +1532,6 @@ msgstr "" msgid "AMS not connected" msgstr "AMS niet aangesloten" -msgid "Cali" -msgstr "Cali" - -msgid "Calibration of extrusion" -msgstr "Kalibratie van de extrusie" - msgid "Load Filament" msgstr "Filament laden" @@ -1564,6 +1564,9 @@ msgstr "Opnieuw kalibreren" msgid "Cancel calibration" msgstr "Kalibreren afbreken" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "Verwarm de nozzle" @@ -1579,8 +1582,14 @@ msgstr "Nieuw filament in de extruder laden" msgid "Purge old filament" msgstr "Oud filament verwijderen" -msgid "Push new filament into the extruder" -msgstr "Push new filament into the extruder" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "Grab new filament" @@ -2428,27 +2437,6 @@ msgstr "" "De geadviseerde nozzle temperatuur voor dit type filament is [%d, %d] graden " "Celcius" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"De printbed temperatuur voor de overige lagen is %d graden celcius lager dan " -"de temperatuur voor de eerste laag.\n" -"Hierdoor kan de print loskomen van het printbed gedurende de printtaak" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"De bedtemperatuur is hoger dan de vitrificatietemperatuur van dit filament.\n" -"Dit kan leiden tot verstopping van de nozzle en tot print fouten.\n" -"Houd de printer open tijdens het printproces om te zorgen voor " -"luchtcirculatie, of om de temperatuur van het warmwaterbed te verlagen." - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2456,6 +2444,13 @@ msgstr "" "Te kleine maximale volumetrische snelheid.\n" "De waarde is teruggezet naar 0,5" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2516,6 +2511,9 @@ msgstr "" "Spiral mode only works when wall loops is 1, support is disabled, top shell " "layers is 0, sparse infill density is 0 and timelapse type is traditional." +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2644,6 +2642,36 @@ msgstr "Onderbroken vanwege storing in de nozzle temperatuur" msgid "Paused due to heat bed temperature malfunction" msgstr "Onderbroken vanwege storing in de temperatuur van het printbed" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "MC" @@ -2680,6 +2708,24 @@ msgstr "Verificatie mislukt." msgid "Update failed." msgstr "Updaten mislukt." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "Het starten van de printopdracht is mislukt" @@ -2808,12 +2854,15 @@ msgstr "Flushed" msgid "Total" msgstr "Totaal" -msgid "Total Time Estimation" -msgstr "Total Time Estimation" +msgid "Total Estimation" +msgstr "Schatting totaal" msgid "Total time" msgstr "Totale tijd" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "tot" @@ -2901,9 +2950,6 @@ msgstr "Printer" msgid "Print settings" msgstr "Print instellingen" -msgid "Total Estimation" -msgstr "Schatting totaal" - msgid "Time Estimation" msgstr "Geschatte duur" @@ -3012,6 +3058,9 @@ msgstr "Sta verschillende materiaalsoorten op hetzelfde printbed toe" msgid "Avoid extrusion calibration region" msgstr "Vermijd het extrusie kalibratie gebied" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "Toevoegen" @@ -3106,8 +3155,11 @@ msgstr "Micro Lidar Kalibratie" msgid "Bed leveling" msgstr "Bed leveling" -msgid "Resonance frequency identification" -msgstr "Identificatie van de resonantiefrequentie" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "Kalibratie programma" @@ -3127,6 +3179,9 @@ msgstr "Flow kalibratie" msgid "Start Calibration" msgstr "Start kalibreren" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "Voltooid" @@ -3203,9 +3258,6 @@ msgstr "Nee" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "will be closed before creating a new model. Do you want to continue?" -msgid "Upload" -msgstr "" - msgid "Slice plate" msgstr "Slice printbed" @@ -3868,12 +3920,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "Layer: N/A" -msgid "Immediately score" -msgstr "Immediately score" - msgid "Clear" msgstr "Wissen" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "Camera" @@ -3939,12 +3999,6 @@ msgstr "In Cloud Slicing Queue, there are %s tasks ahead of you." msgid "Layer: %s" msgstr "Layer: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Please give a score for your favorite Bambu Market model." - -msgid "Score" -msgstr "Score" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Layer: %d/%d" @@ -3987,6 +4041,97 @@ msgstr "Ludicrous" msgid "Can't start this without SD card." msgstr "Kan niet starten zonder microSD-kaart." +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "Informatie" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "Status" @@ -4121,6 +4266,9 @@ msgstr "Waarschuwing:" msgid "Export successfully." msgstr "Succesvol geëxporteerd" +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "" @@ -4209,6 +4357,9 @@ msgstr "Inspectie van de eerste laag" msgid "Auto-recovery from step loss" msgstr "Automatisch herstel na stapverlies" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "Globale" @@ -4365,6 +4516,11 @@ msgstr "" "standaard hardheid van de nozzle van de printer. Vervang de geharde nozzle " "of het filament, anders raakt de nozzle versleten of beschadigd." +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, c-format, boost-format msgid "Loading file: %s" msgstr "Bestand laden: %s" @@ -4589,6 +4745,11 @@ msgstr "project downloaden..." msgid "Project downloaded %d%%" msgstr "Project %d%% gedownload" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "Het geselecteerde bestand" @@ -4985,9 +5146,6 @@ msgstr "Fout" msgid "warning" msgstr "waarschuwing" -msgid "info" -msgstr "Informatie" - msgid "debug" msgstr "Debuggen" @@ -5245,11 +5403,17 @@ msgstr "Bambu Cool (koude) Plate" msgid "PLA Plate" msgstr "PLA Plate" -msgid "Bamabu Engineering Plate" -msgstr "Bambu Engineering (technische) plate" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "Bambu High Temperature (hoge temperatuur) Plate" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "Stuur de printtaak naar" @@ -5263,8 +5427,8 @@ msgstr "Bed leveling" msgid "Flow Dynamics Calibration" msgstr "" -msgid "Can't connect to the printer" -msgstr "Kan geen verbinding maken met de printer" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "Versturen gelukt" @@ -5379,6 +5543,16 @@ msgid "This printer does not support printing all plates" msgstr "" "Deze printer biedt geen ondersteuning voor het afdrukken van alle platen" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "Fouten" @@ -5710,6 +5884,9 @@ msgstr "Vlot" msgid "Support filament" msgstr "Support filament" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "Prime toren" @@ -5766,9 +5943,6 @@ msgstr "" "De geadviseerde nozzle temperatuur voor dit filament. 0 betekend dat er geen " "voorgestelde waarde is " -msgid "Recommended temperature range" -msgstr "Geadviseerde temperatuurbereik" - msgid "Print temperature" msgstr "Print temperatuur" @@ -5799,16 +5973,14 @@ msgstr "" "waarde van 0 betekent dat het filament afdrukken op de Engineering Plate " "niet ondersteunt." -msgid "High Temp Plate" -msgstr "High Temp Plate (hoge temperatuur printbed)" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"Dit is de bedtemperatuur wanneer de hogetemperatuurplaat is geïnstalleerd. " -"Een waarde van 0 betekent dat het filament printen op de High Temp Plate " -"niet ondersteunt." msgid "Textured PEI Plate" msgstr "PEI plaat met structuur" @@ -5861,6 +6033,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "Extra koel ventilator" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "Filament start G-code" @@ -5912,6 +6093,9 @@ msgstr "G-Code voor de laag wijziging" msgid "Layer change G-code" msgstr "G-code laag wijzigen" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "Filament G-code aanpassen" @@ -6789,6 +6973,11 @@ msgstr "" "Kan de lijndikte van %1% niet berekenen omdat de waarde van \"%2%\" niet " "opgehaald kan worden" +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "Onbekende fout" @@ -6952,6 +7141,24 @@ msgid "" msgstr "" "Spiraal (vaas) modus werkt niet als een object meer dan 1 filament bevalt." +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "Een prime-toren wordt niet ondersteund bij het \"per object\" printen." @@ -7471,6 +7678,14 @@ msgstr "" "Schakel deze optie in om de snelheid omlaag te brengen voor verschillende " "overhangende hoeken" +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "" @@ -7607,6 +7822,23 @@ msgstr "Standaard proces profiel" msgid "Default process profile when switch to this machine profile" msgstr "Standaard procesprofiel bij het overschakelen naar dit machineprofiel" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "Ventilator snelheid" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "Geen koeling voor de eerste" @@ -7677,17 +7909,6 @@ msgstr "" "Voeg dichte vulling toe in de buurt van hellende oppervlakken om de " "verticale schaaldikte te garanderen (boven+onder vaste lagen)." -msgid "Internal bridge support thickness" -msgstr "Dikte interne brugondersteuning" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" - msgid "Top surface pattern" msgstr "Patroon bovenvlak" @@ -8269,7 +8490,12 @@ msgid "accel_to_decel" msgstr "" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" msgstr "" msgid "Jerk of outer walls" @@ -8480,6 +8706,30 @@ msgstr "" msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "" "Schakel deze optie in als de machine een ventilator voor de enclosure heeft" @@ -8513,6 +8763,28 @@ msgid "" "Set to 0 to deactivate." msgstr "" +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "G-code type" @@ -8768,9 +9040,6 @@ msgstr "Maximale versnelling voor verplaatsen" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -msgid "Fan speed" -msgstr "Ventilator snelheid" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8789,6 +9058,55 @@ msgstr "" "De hoogste printbare laaghoogte voor de extruder: dit wordt gebruikt om de " "maximale laaghoogte te beperken wanneer adaptieve laaghoogte is ingeschakeld." +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "Minimale snelheid voor de printkop ventilator" @@ -9083,6 +9401,22 @@ msgstr "" "de nozzle de print raakt bij veplaatsen. Het gebruik van spiraallijnen om Z " "op te tillen kan stringing voorkomen." +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "" @@ -9585,17 +9919,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"Stijl en vorm van de ondersteuning. Voor normale ondersteuning zal grit " -"stabielere steunen creëren (standaard), terwijl snug materiaal bespaart en " -"littekens op het object zal verminderen.\n" -"Voor tree ondersteuning zal de slanke stijl takken agressiever samenvoegen " -"en veel materiaal besparen (standaard), terwijl de hybride stijl een " -"soortgelijke structuur creëert als de normale ondersteuning onder grote " -"platte overhangen." msgid "Snug" msgstr "Nauwsluitend" @@ -9753,25 +10081,19 @@ msgstr "" msgid "Chamber temperature" msgstr "" -msgid "Target chamber temperature" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "Nozzle temperatuur voor de lagen na de eerstse laag" -msgid "Bed temperature difference" -msgstr "Printbed temperatuurverschil" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"Het wordt niet aanbevolen om de bedtemperatuur van andere lagen meer dan " -"deze drempelwaarde te verlagen dan de eerste laag. Een te lage " -"bedtemperatuur van een andere laag kan ertoe leiden dat het model loskomt " -"van de bouwplaat." - msgid "Detect thin wall" msgstr "Detecteer dunne wanden" @@ -10197,6 +10519,12 @@ msgstr "" msgid "Load first filament as default for those not loaded" msgstr "" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "mtcpp" @@ -10251,14 +10579,39 @@ msgstr "" msgid "Repetions count of the whole model" msgstr "" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "Eenheid converteren" msgid "Convert the units of model" msgstr "Converteer de eenheden van het model" -msgid "Orient the model" -msgstr "Oriënteer het model" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "Schaal het model met een float-factor" @@ -10314,6 +10667,12 @@ msgstr "" "Sets debug logging level. 0:fataal, 1:error, 2:waarschuwing, 3:info, 4:" "debug, 5:trace\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "Fout in het zip archief" @@ -10512,6 +10871,15 @@ msgstr "" msgid "The name cannot exceed 40 characters." msgstr "" +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "" @@ -10541,6 +10909,9 @@ msgstr "" msgid "Please select filament to calibrate." msgstr "" +msgid "The input value size must be 3." +msgstr "" + msgid "Connecting to printer..." msgstr "" @@ -10559,9 +10930,6 @@ msgstr "" msgid "Flow rate calibration result has been saved to preset" msgstr "" -msgid "The input value size must be 3." -msgstr "" - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" @@ -10697,6 +11065,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "" @@ -10799,6 +11170,12 @@ msgstr "" msgid "Extra info" msgstr "" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "" @@ -10809,6 +11186,21 @@ msgstr "" msgid "Connecting to printer" msgstr "" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" @@ -10921,6 +11313,9 @@ msgstr "" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" +msgid "Upload" +msgstr "" + msgid "Print host upload queue" msgstr "" @@ -10982,9 +11377,6 @@ msgstr "" msgid "PA Pattern" msgstr "" -msgid "Method" -msgstr "" - msgid "Start PA: " msgstr "" @@ -11058,7 +11450,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -11073,7 +11466,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -11129,6 +11523,17 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "" +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -11386,3 +11791,108 @@ msgstr "" "Stekte verbeteren\n" "Wist je dat je meer wandlussen en een hogere dunne invuldichtheid kunt " "gebruiken om de sterkte van het model te verbeteren?" + +#~ msgid "Cali" +#~ msgstr "Cali" + +#~ msgid "Calibration of extrusion" +#~ msgstr "Kalibratie van de extrusie" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Push new filament into the extruder" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "De printbed temperatuur voor de overige lagen is %d graden celcius lager " +#~ "dan de temperatuur voor de eerste laag.\n" +#~ "Hierdoor kan de print loskomen van het printbed gedurende de printtaak" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "De bedtemperatuur is hoger dan de vitrificatietemperatuur van dit " +#~ "filament.\n" +#~ "Dit kan leiden tot verstopping van de nozzle en tot print fouten.\n" +#~ "Houd de printer open tijdens het printproces om te zorgen voor " +#~ "luchtcirculatie, of om de temperatuur van het warmwaterbed te verlagen." + +#~ msgid "Total Time Estimation" +#~ msgstr "Total Time Estimation" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Identificatie van de resonantiefrequentie" + +#~ msgid "Immediately score" +#~ msgstr "Immediately score" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "Please give a score for your favorite Bambu Market model." + +#~ msgid "Score" +#~ msgstr "Score" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bambu Engineering (technische) plate" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bambu High Temperature (hoge temperatuur) Plate" + +#~ msgid "Can't connect to the printer" +#~ msgstr "Kan geen verbinding maken met de printer" + +#~ msgid "Recommended temperature range" +#~ msgstr "Geadviseerde temperatuurbereik" + +#~ msgid "High Temp Plate" +#~ msgstr "High Temp Plate (hoge temperatuur printbed)" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "Dit is de bedtemperatuur wanneer de hogetemperatuurplaat is " +#~ "geïnstalleerd. Een waarde van 0 betekent dat het filament printen op de " +#~ "High Temp Plate niet ondersteunt." + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Dikte interne brugondersteuning" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "Stijl en vorm van de ondersteuning. Voor normale ondersteuning zal grit " +#~ "stabielere steunen creëren (standaard), terwijl snug materiaal bespaart " +#~ "en littekens op het object zal verminderen.\n" +#~ "Voor tree ondersteuning zal de slanke stijl takken agressiever " +#~ "samenvoegen en veel materiaal besparen (standaard), terwijl de hybride " +#~ "stijl een soortgelijke structuur creëert als de normale ondersteuning " +#~ "onder grote platte overhangen." + +#~ msgid "Bed temperature difference" +#~ msgstr "Printbed temperatuurverschil" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "Het wordt niet aanbevolen om de bedtemperatuur van andere lagen meer dan " +#~ "deze drempelwaarde te verlagen dan de eerste laag. Een te lage " +#~ "bedtemperatuur van een andere laag kan ertoe leiden dat het model loskomt " +#~ "van de bouwplaat." + +#~ msgid "Orient the model" +#~ msgstr "Oriënteer het model" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 032f328f4c..f5adb7d863 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 V1.7beta\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 19:45+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "PO-Revision-Date: 2023-09-21 14:29+0700\n" "Last-Translator: Andylg \n" "Language-Team: \n" @@ -15,7 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.3.2\n" msgid "Supports Painting" @@ -110,8 +111,13 @@ msgid "Lay on face" msgstr "Поверхностью на стол" #, boost-format -msgid "Filament count exceeds the maximum number that painting tool supports. only the first %1% filaments will be available in painting tool." -msgstr "Количество пластиковых нитей превышает максимальное количество поддерживаемое инструментом рисования. Только первые %1% материала будут доступны в инструменте для рисования." +msgid "" +"Filament count exceeds the maximum number that painting tool supports. only " +"the first %1% filaments will be available in painting tool." +msgstr "" +"Количество пластиковых нитей превышает максимальное количество " +"поддерживаемое инструментом рисования. Только первые %1% материала будут " +"доступны в инструменте для рисования." msgid "Color Painting" msgstr "Покраска" @@ -410,8 +416,12 @@ msgid "Decimate ratio" msgstr "Коэффициент упрощения" #, boost-format -msgid "Processing model '%1%' with more than 1M triangles could be slow. It is highly recommended to simplify the model." -msgstr "Обработка модели '%1%' с более чем 1 млн. треугольников может быть медленной. Настоятельно рекомендуется упростить модель." +msgid "" +"Processing model '%1%' with more than 1M triangles could be slow. It is " +"highly recommended to simplify the model." +msgstr "" +"Обработка модели '%1%' с более чем 1 млн. треугольников может быть " +"медленной. Настоятельно рекомендуется упростить модель." msgid "Simplify model" msgstr "Упростить полигональную сетку" @@ -552,23 +562,35 @@ msgid "Machine" msgstr "Принтер" msgid "Configuration package was loaded, but some values were not recognized." -msgstr "Пакет конфигурации был загружен, но некоторые значения не были распознаны." +msgstr "" +"Пакет конфигурации был загружен, но некоторые значения не были распознаны." #, boost-format -msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." -msgstr "Файл конфигурации \"%1%\" был загружен, но некоторые значения не были распознаны." +msgid "" +"Configuration file \"%1%\" was loaded, but some values were not recognized." +msgstr "" +"Файл конфигурации \"%1%\" был загружен, но некоторые значения не были " +"распознаны." msgid "V" msgstr "V" -msgid "OrcaSlicer will terminate because of running out of memory.It may be a bug. It will be appreciated if you report the issue to our team." -msgstr "OrcaSlicer завершает работу из-за нехватки памяти. Возможно, это баг программы. Будем признательны, если вы сообщите о проблеме нашей команде." +msgid "" +"OrcaSlicer will terminate because of running out of memory.It may be a bug. " +"It will be appreciated if you report the issue to our team." +msgstr "" +"OrcaSlicer завершает работу из-за нехватки памяти. Возможно, это баг " +"программы. Будем признательны, если вы сообщите о проблеме нашей команде." msgid "Fatal error" msgstr "Критическая ошибка" -msgid "OrcaSlicer will terminate because of a localization error. It will be appreciated if you report the specific scenario this issue happened." -msgstr "OrcaSlicer завершит работу из-за ошибки локализации. Будем признательны, если вы сообщите о конкретном сценарии возникновения этой проблемы." +msgid "" +"OrcaSlicer will terminate because of a localization error. It will be " +"appreciated if you report the specific scenario this issue happened." +msgstr "" +"OrcaSlicer завершит работу из-за ошибки локализации. Будем признательны, " +"если вы сообщите о конкретном сценарии возникновения этой проблемы." msgid "Critical error" msgstr "Критическая ошибка" @@ -591,15 +613,22 @@ msgid "Connect %s failed! [SN:%s, code=%s]" msgstr "Сбой подключения к %s! [Серийный №:%s, код=%s]" msgid "" -"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain features.\n" +"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " +"features.\n" "Click Yes to install it now." -msgstr "Для работы некоторых функций Orca Slicer требуется Microsoft WebView2 Runtime.Нажмите Да, чтобы установить." +msgstr "" +"Для работы некоторых функций Orca Slicer требуется Microsoft WebView2 " +"Runtime.Нажмите Да, чтобы установить." msgid "WebView2 Runtime" msgstr "WebView2 Runtime" -msgid "OrcaSlicer configuration file may be corrupted and is not abled to be parsed.Please delete the file and try again." -msgstr "Возможно, файл конфигурации OrcaSlicer повреждён и не может быть обработан. Пожалуйста, удалите файл и повторите попытку." +msgid "" +"OrcaSlicer configuration file may be corrupted and is not abled to be parsed." +"Please delete the file and try again." +msgstr "" +"Возможно, файл конфигурации OrcaSlicer повреждён и не может быть обработан. " +"Пожалуйста, удалите файл и повторите попытку." #, c-format, boost-format msgid "" @@ -617,7 +646,8 @@ msgstr "Загрузка настроек" #, c-format, boost-format msgid "Click to download new version in default browser: %s" -msgstr "Нажмите OK, чтобы загрузить последнюю версию в браузере по умолчанию: %s" +msgstr "" +"Нажмите OK, чтобы загрузить последнюю версию в браузере по умолчанию: %s" msgid "The Orca Slicer needs an upgrade" msgstr "Orca Slice нуждается в обновлении." @@ -640,6 +670,9 @@ msgstr "Загрузка режима отображения" msgid "Choose one file (3mf):" msgstr "Выберите один файл (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Выберите один или несколько файлов (3mf/step/stl/svg/obj/amf):" @@ -649,8 +682,12 @@ msgstr "Выберите один файл (gcode/3mf):" msgid "Some presets are modified." msgstr "В некоторых профилях имеются изменения." -msgid "You can keep the modifield presets to the new project, discard or save changes as new presets." -msgstr "Вы можете сохранить изменённые профили в новом проекте, отменить или сохранить изменения в новые профили." +msgid "" +"You can keep the modifield presets to the new project, discard or save " +"changes as new presets." +msgstr "" +"Вы можете сохранить изменённые профили в новом проекте, отменить или " +"сохранить изменения в новые профили." msgid "User logged out" msgstr "Пользователь вышел из системы" @@ -661,8 +698,12 @@ msgstr "Создание или открытие файла проекта во msgid "Open Project" msgstr "Открыть проект" -msgid "The version of Orca Slicer is too low and needs to be updated to the latest version before it can be used normally" -msgstr "Слишком старая версия Orca Slicer. Для корректной работы обновите программу до последней версии." +msgid "" +"The version of Orca Slicer is too low and needs to be updated to the latest " +"version before it can be used normally" +msgstr "" +"Слишком старая версия Orca Slicer. Для корректной работы обновите программу " +"до последней версии." msgid "Privacy Policy Update" msgstr "Обновление политики конфиденциальности" @@ -928,7 +969,8 @@ msgid "Assemble" msgstr "Объединить в сборку" msgid "Assemble the selected objects to an object with multiple parts" -msgstr "Объединение выбранных объектов в модель, состоящую из несколько частей." +msgstr "" +"Объединение выбранных объектов в модель, состоящую из несколько частей." msgid "Assemble the selected objects to an object with single part" msgstr "Объединение выбранных моделей в единую." @@ -1105,7 +1147,9 @@ msgid "Click the icon to reset all settings of the object" msgstr "Нажмите на значок, чтобы сбросить все настройки модели" msgid "Right button click the icon to drop the object printable property" -msgstr "Нажмите правой кнопкой мыши на значок, чтобы разрешить/запретить печать модели" +msgstr "" +"Нажмите правой кнопкой мыши на значок, чтобы разрешить/запретить печать " +"модели" msgid "Click the icon to toggle printable property of the object" msgstr "Нажмите на значок, чтобы разрешить/запретить печать модели" @@ -1135,33 +1179,45 @@ msgid "Add Modifier" msgstr "Добавление модификатора" msgid "Switch to per-object setting mode to edit modifier settings." -msgstr "Переключение в режим редактирования настроек печати каждой модели для изменения настроек модификатора." +msgstr "" +"Переключение в режим редактирования настроек печати каждой модели для " +"изменения настроек модификатора." -msgid "Switch to per-object setting mode to edit process settings of selected objects." +msgid "" +"Switch to per-object setting mode to edit process settings of selected " +"objects." msgstr "Переключение в режим редактирования настроек печати каждой модели." msgid "Delete connector from object which is a part of cut" msgstr "Удаление соединения из модели, которое является частью разреза" msgid "Delete solid part from object which is a part of cut" -msgstr "Удаление твердотельной части из модели, которая является частью разреза" +msgstr "" +"Удаление твердотельной части из модели, которая является частью разреза" msgid "Delete negative volume from object which is a part of cut" -msgstr "Удаление объёма для вычитания из модели, которая является частью разреза" +msgstr "" +"Удаление объёма для вычитания из модели, которая является частью разреза" -msgid "To save cut correspondence you can delete all connectors from all related objects." -msgstr "Для сохранения информации о разрезе, вы можете удалить все соединения из всех связанных объектов." +msgid "" +"To save cut correspondence you can delete all connectors from all related " +"objects." +msgstr "" +"Для сохранения информации о разрезе, вы можете удалить все соединения из " +"всех связанных объектов." msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate cut infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate " +"cut infornation first." msgstr "" "Это действие приведёт к удалению информации о разрезе.\n" "После этого согласованность модели не может быть гарантирована.\n" "\n" -"Чтобы манипулировать с твердотельными частями или объёмами для вычитания, необходимо сначала удалить информацию о сделанном разрезе." +"Чтобы манипулировать с твердотельными частями или объёмами для вычитания, " +"необходимо сначала удалить информацию о сделанном разрезе." msgid "Delete all connectors" msgstr "Удалить все соединения" @@ -1217,11 +1273,18 @@ msgstr "Слой" msgid "Selection conflicts" msgstr "Конфликты при выборе" -msgid "If first selected item is an object, the second one should also be object." -msgstr "Если первый выбранный элемент является моделью, то второй также должен быть моделью." +msgid "" +"If first selected item is an object, the second one should also be object." +msgstr "" +"Если первый выбранный элемент является моделью, то второй также должен быть " +"моделью." -msgid "If first selected item is a part, the second one should be part in the same object." -msgstr "Если первый выбранный элемент является частью, то второй должен быть частью той же модели." +msgid "" +"If first selected item is a part, the second one should be part in the same " +"object." +msgstr "" +"Если первый выбранный элемент является частью, то второй должен быть частью " +"той же модели." msgid "The type of the last solid object part is not to be changed." msgstr "Вы не можете изменить тип последнего твердотельного элемента модели." @@ -1288,7 +1351,9 @@ msgid "Invalid numeric." msgstr "Неправильное числовое значение." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "Одна ячейка может быть скопирована только в одну или несколько ячеек одного и того же столбца." +msgstr "" +"Одна ячейка может быть скопирована только в одну или несколько ячеек одного " +"и того же столбца." msgid "multiple cells copy is not supported" msgstr "копирование нескольких ячеек не поддерживается" @@ -1314,6 +1379,9 @@ msgstr "Автокайма" msgid "Auto" msgstr "Автоматич." +msgid "Mouse ear" +msgstr "Мышиные ушки" + msgid "Outer brim only" msgstr "Кайма только снаружи" @@ -1444,7 +1512,8 @@ msgid "Failed to connect to cloud service" msgstr "Не удалось подключиться к облачному сервису" msgid "Please click on the hyperlink above to view the cloud service status" -msgstr "Для просмотра состояния статуса сервиса нажмите на вышерасположенную ссылку" +msgstr "" +"Для просмотра состояния статуса сервиса нажмите на вышерасположенную ссылку" msgid "Failed to connect to the printer" msgstr "Не удалось подключиться к принтеру." @@ -1461,27 +1530,21 @@ msgstr "Подключение..." msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "Пусто" msgid "AMS" msgstr "АСПП" -msgid "AMS %s" -msgstr "АСПП №%s" - msgid "Auto Refill" msgstr "Дозаправка" msgid "AMS not connected" msgstr "АСПП не подключена" -msgid "Cali" -msgstr "Калиб." - -msgid "Calibration of extrusion" -msgstr "Калибровка экструзии" - msgid "Load Filament" msgstr "Загрузить" @@ -1504,7 +1567,8 @@ msgid "Calibrating AMS..." msgstr "Калибровка АСПП..." msgid "A problem occured during calibration. Click to view the solution." -msgstr "Во время калибровки возникла проблема. Нажмите, чтобы просмотреть решение." +msgstr "" +"Во время калибровки возникла проблема. Нажмите, чтобы просмотреть решение." msgid "Calibrate again" msgstr "Повторить калибровку" @@ -1512,6 +1576,9 @@ msgstr "Повторить калибровку" msgid "Cancel calibration" msgstr "Отменить калибровку" +msgid "Idling..." +msgstr "" + # При выгрузке/загрузке прутка справа отображается процесс msgid "Heat the nozzle" msgstr "Нагрев сопла" @@ -1528,17 +1595,24 @@ msgstr "Вставка нового прутка в экструдер" msgid "Purge old filament" msgstr "Очистка от старого материала" -msgid "Push new filament into the extruder" -msgstr "Вставка нового прутка в экструдер" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "Загрузка нового прутка" -msgid "Confirm whether the filament has been extruded" -msgstr "Подтвердите, что пластиковая нить была выдавлена" - -msgid "Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or unload filiament." -msgstr "Выберите слот АСПП, затем нажмите кнопку «Загрузить» или «Выгрузить» для автоматической загрузки или выгрузки прутка." +msgid "" +"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " +"load or unload filiament." +msgstr "" +"Выберите слот АСПП, затем нажмите кнопку «Загрузить» или «Выгрузить» для " +"автоматической загрузки или выгрузки прутка." msgid "Edit" msgstr "Правка" @@ -1563,8 +1637,11 @@ msgstr "" msgid "Arranging..." msgstr "Расстановка..." -msgid "Arrange failed. Found some exceptions when processing object geometries." -msgstr "Ошибка расстановки. Обнаружены некоторые исключения при обработке геометрии моделей." +msgid "" +"Arrange failed. Found some exceptions when processing object geometries." +msgstr "" +"Ошибка расстановки. Обнаружены некоторые исключения при обработке геометрии " +"моделей." msgid "Arranging" msgstr "Расстановка" @@ -1572,18 +1649,23 @@ msgstr "Расстановка" msgid "Arranging canceled." msgstr "Расстановка отменена." -msgid "Arranging is done but there are unpacked items. Reduce spacing and try again." -msgstr "Расстановка завершена, но не всё уместилось на столе. Уменьшите интервал расстановки и повторите попытку." +msgid "" +"Arranging is done but there are unpacked items. Reduce spacing and try again." +msgstr "" +"Расстановка завершена, но не всё уместилось на столе. Уменьшите интервал " +"расстановки и повторите попытку." msgid "Arranging done." msgstr "Расстановка выполнена." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single bed:\n" +"Arrangement ignored the following objects which can't fit into a single " +"bed:\n" "%s" msgstr "" -"При расстановке были проигнорированы следующие модели, которые не помещаются на одном столе:\n" +"При расстановке были проигнорированы следующие модели, которые не помещаются " +"на одном столе:\n" "%s" msgid "" @@ -1627,21 +1709,6 @@ msgstr "Авторизация" msgid "Login failed" msgstr "Ошибка авторизации" -msgid "The region parameter is incorrrect" -msgstr "Неправильная региональная настройка" - -msgid "Failure of printer login" -msgstr "Не удалось подключиться к принтеру." - -msgid "Failed to get ticket" -msgstr "Не удалось получить заявку" - -msgid "User authorization timeout" -msgstr "Таймаут авторизации пользователя" - -msgid "Failure of bind" -msgstr "Ошибка привязки" - msgid "Please check the printer network connection." msgstr "Пожалуйста, проверьте сетевое подключение принтера." @@ -1652,49 +1719,55 @@ msgid "Task canceled." msgstr "Задание отменено." msgid "Upload task timed out. Please check the network status and try again." -msgstr "Истекло время ожидания отправки задания. Проверьте сетевое подключение и повторите попытку." +msgstr "" +"Истекло время ожидания отправки задания. Проверьте сетевое подключение и " +"повторите попытку." msgid "Cloud service connection failed. Please try again." -msgstr "Не удалось подключиться к облачному сервису. Пожалуйста, попробуйте ещё раз." +msgstr "" +"Не удалось подключиться к облачному сервису. Пожалуйста, попробуйте ещё раз." msgid "Print file not found. please slice again." msgstr "Файл для печати не найден, нарежьте ещё раз." -msgid "Print file not found, please slice again" -msgstr "Файл для печати не найден, нарежьте ещё раз." - -msgid "The print file exceeds the maximum allowable size (1GB). Please simplify the model and slice again." -msgstr "Файл для печати превышает максимально допустимый размер (1 ГБ). Пожалуйста, упростите модель и нарежьте ещё раз." - -msgid "Failed uploading print file" -msgstr "Не удалось передать файл на печать." - -msgid "Wrong Access code" -msgstr "Неправильный код доступа" +msgid "" +"The print file exceeds the maximum allowable size (1GB). Please simplify the " +"model and slice again." +msgstr "" +"Файл для печати превышает максимально допустимый размер (1 ГБ). Пожалуйста, " +"упростите модель и нарежьте ещё раз." msgid "Failed to send the print job. Please try again." -msgstr "Не удалось отправить задание на печать. Пожалуйста, попробуйте ещё раз." - -msgid "Send to Printer failed. Please try again." -msgstr "Ошибка отправки на принтер. Пожалуйста, попробуйте ещё раз." - -msgid "No space left on Printer SD card" -msgstr "На SD-карте принтера недостаточно места" +msgstr "" +"Не удалось отправить задание на печать. Пожалуйста, попробуйте ещё раз." msgid "Failed to upload file to ftp. Please try again." msgstr "Не удалось загрузить файл на FTP. Пожалуйста, попробуйте ещё раз." -msgid "Check the current status of the bambu server by clicking on the link above." -msgstr "Проверить текущий статус сервера Bambu можно перейдя по указанной выше ссылке." +msgid "" +"Check the current status of the bambu server by clicking on the link above." +msgstr "" +"Проверить текущий статус сервера Bambu можно перейдя по указанной выше " +"ссылке." -msgid "The size of the print file is too large. Please adjust the file size and try again." -msgstr "Размер файла для печати слишком велик. Пожалуйста, уменьшите размер файла и повторите попытку." +msgid "" +"The size of the print file is too large. Please adjust the file size and try " +"again." +msgstr "" +"Размер файла для печати слишком велик. Пожалуйста, уменьшите размер файла и " +"повторите попытку." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "Файл печати не найден. Пожалуйста, нарежьте его ещё раз и отправьте на печать." +msgstr "" +"Файл печати не найден. Пожалуйста, нарежьте его ещё раз и отправьте на " +"печать." -msgid "Failed to upload print file to FTP. Please check the network status and try again." -msgstr "Не удалось загрузить файл печати на FTP. Проверьте состояние сети и повторите попытку." +msgid "" +"Failed to upload print file to FTP. Please check the network status and try " +"again." +msgstr "" +"Не удалось загрузить файл печати на FTP. Проверьте состояние сети и " +"повторите попытку." msgid "Sending print job over LAN" msgstr "Отправка задания на печать по локальной сети" @@ -1713,11 +1786,13 @@ msgstr "Отправка конфигурации печати" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the device page in %ss" -msgstr "Успешно отправлено. Автоматический переход на страницу устройства через %s с." +msgstr "" +"Успешно отправлено. Автоматический переход на страницу устройства через %s с." #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the next page in %ss" -msgstr "Успешно отправлено. Автоматический переход на следующую страницу через %s с." +msgstr "" +"Успешно отправлено. Автоматический переход на следующую страницу через %s с." msgid "An SD card needs to be inserted before printing via LAN." msgstr "Перед печатью через локальную сеть необходимо вставить SD-карту." @@ -1725,9 +1800,6 @@ msgstr "Перед печатью через локальную сеть нео msgid "Sending gcode file over LAN" msgstr "Отправка файла G-кода по локальной сети" -msgid "Sending gcode file through cloud service" -msgstr "Отправка файла G-кода через облачный сервис" - msgid "Sending gcode file to sdcard" msgstr "Отправка файла G-кода на SD-карту" @@ -1738,9 +1810,6 @@ msgstr "Успешно отправлено. Закрытие текущей с msgid "An SD card needs to be inserted before sending to printer." msgstr "Перед отправкой на принтер необходимо вставить SD-карту." -msgid "Please log out and login to the printer again." -msgstr "Пожалуйста, выйдите и снова войдите в принтер." - msgid "Choose SLA archive:" msgstr "Выберите SLA архив:" @@ -1768,8 +1837,12 @@ msgstr "Скорость" msgid "Importing SLA archive" msgstr "Импорт SLA архива" -msgid "The SLA archive doesn't contain any presets. Please activate some SLA printer preset first before importing that SLA archive." -msgstr "Архив SLA не содержит никаких профилей. Пожалуйста, сначала активируйте какой-нибудь профиль SLA принтера, прежде чем импортировать этот SLA архив." +msgid "" +"The SLA archive doesn't contain any presets. Please activate some SLA " +"printer preset first before importing that SLA archive." +msgstr "" +"Архив SLA не содержит никаких профилей. Пожалуйста, сначала активируйте " +"какой-нибудь профиль SLA принтера, прежде чем импортировать этот SLA архив." msgid "Importing canceled." msgstr "Импорт отменен." @@ -1777,8 +1850,12 @@ msgstr "Импорт отменен." msgid "Importing done." msgstr "Импорт завершён." -msgid "The imported SLA archive did not contain any presets. The current SLA presets were used as fallback." -msgstr "Импортированный SLA архив не содержит никаких профилей. Текущие SLA профили использовались в качестве резервных." +msgid "" +"The imported SLA archive did not contain any presets. The current SLA " +"presets were used as fallback." +msgstr "" +"Импортированный SLA архив не содержит никаких профилей. Текущие SLA профили " +"использовались в качестве резервных." msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "Вы не можете загрузить SLA проект с составной моделью на столе" @@ -1822,14 +1899,25 @@ msgstr "Orca Slicer распространяется под лицензией " msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public третьей версии" -msgid "Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and the RepRap community" -msgstr "Orca Slicer основан на BambuStudio от компании Bambulab, которая взяла за основу PrusaSlicer от компании Prusa Research. PrusaSlicer же основан на Slic3r от Alessandro Ranellucci и разработках сообщества RepRap." +msgid "" +"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " +"by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and " +"the RepRap community" +msgstr "" +"Orca Slicer основан на BambuStudio от компании Bambulab, которая взяла за " +"основу PrusaSlicer от компании Prusa Research. PrusaSlicer же основан на " +"Slic3r от Alessandro Ranellucci и разработках сообщества RepRap." msgid "Libraries" msgstr "Библиотеки" -msgid "This software uses open source components whose copyright and other proprietary rights belong to their respective owners" -msgstr "В данном программном обеспечении используются компоненты с открытым исходным кодом, авторские и иные права на которые принадлежат их соответствующим владельцам." +msgid "" +"This software uses open source components whose copyright and other " +"proprietary rights belong to their respective owners" +msgstr "" +"В данном программном обеспечении используются компоненты с открытым исходным " +"кодом, авторские и иные права на которые принадлежат их соответствующим " +"владельцам." #, c-format, boost-format msgid "About %s" @@ -1842,13 +1930,18 @@ msgid "OrcaSlicer is based on BambuStudio, PrusaSlicer, and SuperSlicer." msgstr "OrcaSlicer основан на проектах BambuStudio, PrusaSlicer и SuperSlicer." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." -msgstr "BambuStudio изначально основан на PrusaSlicer от компании PrusaResearch." +msgstr "" +"BambuStudio изначально основан на PrusaSlicer от компании PrusaResearch." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "PrusaSlicer основан на проекте Slic3r от Alessandro Ranellucci." -msgid "Slic3r was created by Alessandro Ranellucci with the help of many other contributors." -msgstr "Slic3r был создан Alessandro Ranellucci совместно с многими другими участниками сообщества." +msgid "" +"Slic3r was created by Alessandro Ranellucci with the help of many other " +"contributors." +msgstr "" +"Slic3r был создан Alessandro Ranellucci совместно с многими другими " +"участниками сообщества." msgid "Version" msgstr "Версия" @@ -1888,9 +1981,6 @@ msgstr "Серийный №" msgid "Setting AMS slot information while printing is not supported" msgstr "Изменение информации о слотах АСПП во время печати не поддерживается" -msgid "Factors of dynamic flow cali" -msgstr "Коэф. калиб. динам. потока" - msgid "Factors of Flow Dynamics Calibration" msgstr "Коэф. калиб. динам. потока" @@ -1904,7 +1994,8 @@ msgid "Factor N" msgstr "Коэф. N" msgid "Setting Virtual slot information while printing is not supported" -msgstr "Настройка информации виртуального слота во время печати не поддерживается" +msgstr "" +"Настройка информации виртуального слота во время печати не поддерживается" msgid "Are you sure you want to clear the filament information?" msgstr "Вы уверены, что хотите удалить информацию о пластиковой нити?" @@ -1916,7 +2007,9 @@ msgid "Please input a valid value (K in 0~0.5)" msgstr "Пожалуйста, введите допустимое значение (K в диапазоне 0~0,5)" msgid "Please input a valid value (K in 0~0.5, N in 0.6~2.0)" -msgstr "Пожалуйста, введите допустимое значение (K в диапазоне 0~0,5, N в диапазоне 0,6~2,0)" +msgstr "" +"Пожалуйста, введите допустимое значение (K в диапазоне 0~0,5, N в диапазоне " +"0,6~2,0)" msgid "Other Color" msgstr "Другой цвет" @@ -1927,8 +2020,15 @@ msgstr "Пользовательский цвет" msgid "Dynamic flow calibration" msgstr "Калибровка динамики потока" -msgid "The nozzle temp and max volumetric speed will affect the calibration results. Please fill in the same values as the actual printing. They can be auto-filled by selecting a filament preset." -msgstr "Температура сопла и максимальная объёмная скорость влияют на результаты калибровки. Введите те же значения, которые вы используете при фактической печати. Их можно заполнить автоматически, выбрав существующий профиль пластиковой нити." +msgid "" +"The nozzle temp and max volumetric speed will affect the calibration " +"results. Please fill in the same values as the actual printing. They can be " +"auto-filled by selecting a filament preset." +msgstr "" +"Температура сопла и максимальная объёмная скорость влияют на результаты " +"калибровки. Введите те же значения, которые вы используете при фактической " +"печати. Их можно заполнить автоматически, выбрав существующий профиль " +"пластиковой нити." msgid "Nozzle Diameter" msgstr "Диаметр сопла" @@ -1960,8 +2060,14 @@ msgstr "Запустить калибровку" msgid "Next" msgstr "Далее" -msgid "Calibration completed. Please find the most uniform extrusion line on your hot bed like the picture below, and fill the value on its left side into the factor K input box." -msgstr "Калибровка завершена. Теперь найдите на столе наиболее равномерно экструдированную линию, как показано на рисунке ниже, и введите это значение в поле ввода коэффициента K." +msgid "" +"Calibration completed. Please find the most uniform extrusion line on your " +"hot bed like the picture below, and fill the value on its left side into the " +"factor K input box." +msgstr "" +"Калибровка завершена. Теперь найдите на столе наиболее равномерно " +"экструдированную линию, как показано на рисунке ниже, и введите это значение " +"в поле ввода коэффициента K." msgid "Save" msgstr "Сохранить" @@ -1992,8 +2098,11 @@ msgstr "Шаг" msgid "AMS Slots" msgstr "Слоты АСПП" -msgid "Note: Only the AMS slots loaded with the same material type can be selected." -msgstr "Примечание: можно выбрать только слоты АСПП, загруженные одним и тем же типом материала." +msgid "" +"Note: Only the AMS slots loaded with the same material type can be selected." +msgstr "" +"Примечание: можно выбрать только слоты АСПП, загруженные одним и тем же " +"типом материала." msgid "Enable AMS" msgstr "Включить АСПП" @@ -2010,20 +2119,40 @@ msgstr "Печать материалом, установленным на за msgid "Cabin humidity" msgstr "Влажность внутри" -msgid "Green means that AMS humidity is normal, orange represent humidity is high, red represent humidity is too high.(Hygrometer: lower the better.)" -msgstr "Зелёный цвет означает, что влажность в системе АСПП нормальная, оранжевый - высокая, красный - слишком высокая. Чем ниже значение гигрометра, тем лучше." +msgid "" +"Green means that AMS humidity is normal, orange represent humidity is high, " +"red represent humidity is too high.(Hygrometer: lower the better.)" +msgstr "" +"Зелёный цвет означает, что влажность в системе АСПП нормальная, оранжевый - " +"высокая, красный - слишком высокая. Чем ниже значение гигрометра, тем лучше." msgid "Desiccant status" msgstr "Состояние влагопоглотителя" -msgid "A desiccant status lower than two bars indicates that desiccant may be inactive. Please change the desiccant.(The bars: higher the better.)" -msgstr "Состояние влагопоглотителя (силикагеля) ниже двух делений указывает на то, что он может уже не выполнять свою функцию. Пожалуйста, замените его. Чем больше делений на индикаторе, тем лучше." +msgid "" +"A desiccant status lower than two bars indicates that desiccant may be " +"inactive. Please change the desiccant.(The bars: higher the better.)" +msgstr "" +"Состояние влагопоглотителя (силикагеля) ниже двух делений указывает на то, " +"что он может уже не выполнять свою функцию. Пожалуйста, замените его. Чем " +"больше делений на индикаторе, тем лучше." -msgid "Note: When the lid is open or the desiccant pack is changed, it can take hours or a night to absorb the moisture. Low temperatures also slow down the process. During this time, the indicator may not represent the chamber accurately." -msgstr "Примечание: при открытой крышке или заменённом влагопоглотителе, может потребоваться несколько часов или ночь для поглощения влаги. Кроме того, процесс может замедлиться из-за низкой температуры окружающей среды. В течение этого времени значения индикатора могут быть неточными." +msgid "" +"Note: When the lid is open or the desiccant pack is changed, it can take " +"hours or a night to absorb the moisture. Low temperatures also slow down the " +"process. During this time, the indicator may not represent the chamber " +"accurately." +msgstr "" +"Примечание: при открытой крышке или заменённом влагопоглотителе, может " +"потребоваться несколько часов или ночь для поглощения влаги. Кроме того, " +"процесс может замедлиться из-за низкой температуры окружающей среды. В " +"течение этого времени значения индикатора могут быть неточными." -msgid "Config which AMS slot should be used for a filament used in the print job" -msgstr "Задайте слот АСПП, который должен использоваться для прутка, используемого в текущем задании." +msgid "" +"Config which AMS slot should be used for a filament used in the print job" +msgstr "" +"Задайте слот АСПП, который должен использоваться для прутка, используемого в " +"текущем задании." msgid "Filament used in this print job" msgstr "Пруток используемый в этом задании" @@ -2038,7 +2167,8 @@ msgid "Do not Enable AMS" msgstr "Не включать АСПП" msgid "Print using materials mounted on the back of the case" -msgstr "Печать с использованием материала, установленного на задней части корпуса" +msgstr "" +"Печать с использованием материала, установленного на задней части корпуса" msgid "Print with filaments in ams" msgstr "" @@ -2048,18 +2178,26 @@ msgstr "" msgid "Print with filaments mounted on the back of the chassis" msgstr "Печать материалами, установленными на задней части корпуса." -msgid "When the current material run out, the printer will continue to print in the following order." -msgstr "Когда текущий материал закончится, принтер продолжит печать в указанном порядке." +msgid "" +"When the current material run out, the printer will continue to print in the " +"following order." +msgstr "" +"Когда текущий материал закончится, принтер продолжит печать в указанном " +"порядке." msgid "Group" msgstr "Группа" msgid "" -"There are currently no identical spare consumables available, and automatic replenishment is currently not possible. \n" -"(Currently supporting automatic supply of consumables with the same brand, material type, and color)" +"There are currently no identical spare consumables available, and automatic " +"replenishment is currently not possible. \n" +"(Currently supporting automatic supply of consumables with the same brand, " +"material type, and color)" msgstr "" -"В настоящее время идентичные резервные материалы отсутствуют, и автоматическое пополнение их в настоящее время невозможно. \n" -"(В настоящее время поддерживается автоматическая поставка расходных материалов того же производителя, типа материала и цвета)." +"В настоящее время идентичные резервные материалы отсутствуют, и " +"автоматическое пополнение их в настоящее время невозможно. \n" +"(В настоящее время поддерживается автоматическая поставка расходных " +"материалов того же производителя, типа материала и цвета)." msgid "AMS Settings" msgstr "Настройки АСПП" @@ -2067,35 +2205,70 @@ msgstr "Настройки АСПП" msgid "Insertion update" msgstr "Обновление при вставке материала" -msgid "The AMS will automatically read the filament information when inserting a new Bambu Lab filament. This takes about 20 seconds." -msgstr "АСПП автоматически считывает информацию о материале при установке новой катушки Bambu. Это занимает около 20 секунд." +msgid "" +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament. This takes about 20 seconds." +msgstr "" +"АСПП автоматически считывает информацию о материале при установке новой " +"катушки Bambu. Это занимает около 20 секунд." -msgid "Note: if new filament is inserted during printing, the AMS will not automatically read any information until printing is completed." -msgstr "Примечание: если во время печати вставляется новая пластиковая нить, АСПП автоматически считает информацию о ней только по завершению печати." +msgid "" +"Note: if new filament is inserted during printing, the AMS will not " +"automatically read any information until printing is completed." +msgstr "" +"Примечание: если во время печати вставляется новая пластиковая нить, АСПП " +"автоматически считает информацию о ней только по завершению печати." -msgid "When inserting a new filament, the AMS will not automatically read its information, leaving it blank for you to enter manually." -msgstr "При вставке новой пластиковой нити, АСПП не будет автоматически считывать информацию о ней, оставляя поле пустым, чтобы пользователь мог ввести данные о ней вручную." +msgid "" +"When inserting a new filament, the AMS will not automatically read its " +"information, leaving it blank for you to enter manually." +msgstr "" +"При вставке новой пластиковой нити, АСПП не будет автоматически считывать " +"информацию о ней, оставляя поле пустым, чтобы пользователь мог ввести данные " +"о ней вручную." msgid "Power on update" msgstr "Обновление при включении принтера" -msgid "The AMS will automatically read the information of inserted filament on start-up. It will take about 1 minute.The reading process will roll filament spools." -msgstr "При каждом включении принтера АСПП будет автоматически считывать информация о вставленных материалах. Это занимает приблизительно одну минуту. В процессе считывания информации о материале катушка вращается." +msgid "" +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will roll filament " +"spools." +msgstr "" +"При каждом включении принтера АСПП будет автоматически считывать информация " +"о вставленных материалах. Это занимает приблизительно одну минуту. В " +"процессе считывания информации о материале катушка вращается." -msgid "The AMS will not automatically read information from inserted filament during startup and will continue to use the information recorded before the last shutdown." -msgstr "При каждом включении принтера, считывание информации о вставленных материалах АСПП будет отключено. Будет использоваться информация, полученная перед последним выключением." +msgid "" +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." +msgstr "" +"При каждом включении принтера, считывание информации о вставленных " +"материалах АСПП будет отключено. Будет использоваться информация, полученная " +"перед последним выключением." msgid "Update remaining capacity" msgstr "Обновлять оставшуюся ёмкость катушки" -msgid "The AMS will estimate Bambu filament's remaining capacity after the filament info is updated. During printing, remaining capacity will be updated automatically." -msgstr "АСПП считывает информацию о расходуемом материале Bambu и рассчитывает его остаточную ёмкость на катушке. Остаточная ёмкость обновляется автоматически в процессе печати." +msgid "" +"The AMS will estimate Bambu filament's remaining capacity after the filament " +"info is updated. During printing, remaining capacity will be updated " +"automatically." +msgstr "" +"АСПП считывает информацию о расходуемом материале Bambu и рассчитывает его " +"остаточную ёмкость на катушке. Остаточная ёмкость обновляется автоматически " +"в процессе печати." msgid "AMS filament backup" msgstr "Резервирование материала АСПП" -msgid "AMS will continue to another spool with the same properties of filament automatically when current filament runs out" -msgstr "АСПП автоматически переключится на другую катушку с тем же типом материала, когда текущий закончится." +msgid "" +"AMS will continue to another spool with the same properties of filament " +"automatically when current filament runs out" +msgstr "" +"АСПП автоматически переключится на другую катушку с тем же типом материала, " +"когда текущий закончится." msgid "File" msgstr "Файл" @@ -2103,11 +2276,19 @@ msgstr "Файл" msgid "Calibration" msgstr "Калибровка" -msgid "Failed to download the plug-in. Please check your firewall settings and vpn software, check and retry." -msgstr "Не удалось загрузить плагин. Пожалуйста, проверьте настройки брандмауэра и vpn, и повторите попытку." +msgid "" +"Failed to download the plug-in. Please check your firewall settings and vpn " +"software, check and retry." +msgstr "" +"Не удалось загрузить плагин. Пожалуйста, проверьте настройки брандмауэра и " +"vpn, и повторите попытку." -msgid "Failed to install the plug-in. Please check whether it is blocked or deleted by anti-virus software." -msgstr "Не удалось установить плагин. Пожалуйста, проверьте, не заблокирован ли он или не удалён антивирусом." +msgid "" +"Failed to install the plug-in. Please check whether it is blocked or deleted " +"by anti-virus software." +msgstr "" +"Не удалось установить плагин. Пожалуйста, проверьте, не заблокирован ли он " +"или не удалён антивирусом." msgid "click here to see more info" msgstr "нажмите здесь, чтобы увидеть больше информации" @@ -2115,14 +2296,22 @@ msgstr "нажмите здесь, чтобы увидеть больше инф msgid "Please home all axes (click " msgstr "Пожалуйста, припаркуйте все оси в начало координат (нажав " -msgid ") to locate the toolhead's position. This prevents device moving beyond the printable boundary and causing equipment wear." -msgstr ") для определения положения печатной головы. Это предотвращает перемещение за пределы области печати и износ оборудования." +msgid "" +") to locate the toolhead's position. This prevents device moving beyond the " +"printable boundary and causing equipment wear." +msgstr "" +") для определения положения печатной головы. Это предотвращает перемещение " +"за пределы области печати и износ оборудования." msgid "Go Home" msgstr "На главную" -msgid "A error occurred. Maybe memory of system is not enough or it's a bug of the program" -msgstr "Произошла ошибка. Возможно, недостаточно системной памяти или это баг программы." +msgid "" +"A error occurred. Maybe memory of system is not enough or it's a bug of the " +"program" +msgstr "" +"Произошла ошибка. Возможно, недостаточно системной памяти или это баг " +"программы." msgid "Please save project and restart the program. " msgstr "Пожалуйста, сохраните проект и перезапустите программу. " @@ -2175,11 +2364,15 @@ msgid "Running post-processing scripts" msgstr "Запуск скриптов постобработки" msgid "Copying of the temporary G-code to the output G-code failed" -msgstr "Не удалось скопировать временный G-код в местонахождение выходного файла G-кода" +msgstr "" +"Не удалось скопировать временный G-код в местонахождение выходного файла G-" +"кода" #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" -msgstr "Планирование загрузки на `%1%`. Смотрите Окна -> Очередь загрузки на хост печати" +msgstr "" +"Планирование загрузки на `%1%`. Смотрите Окна -> Очередь загрузки на хост " +"печати" msgid "Origin" msgstr "Начало координат" @@ -2190,11 +2383,18 @@ msgstr "Диаметр" msgid "Size in X and Y of the rectangular plate." msgstr "Размеры прямоугольного стола в XY координатах." -msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." -msgstr "Расстояние до точки начало координат. Отсчёт от левого переднего угла прямоугольного стола." +msgid "" +"Distance of the 0,0 G-code coordinate from the front left corner of the " +"rectangle." +msgstr "" +"Расстояние до точки начало координат. Отсчёт от левого переднего угла " +"прямоугольного стола." -msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." -msgstr "Диаметр стола. Предполагается, что начало координат (0,0) находится в центре." +msgid "" +"Diameter of the print bed. It is assumed that origin (0,0) is located in the " +"center." +msgstr "" +"Диаметр стола. Предполагается, что начало координат (0,0) находится в центре." msgid "Rectangular" msgstr "Прямоугольная" @@ -2235,8 +2435,11 @@ msgstr "Ошибка! Недопустимая модель" msgid "The selected file contains no geometry." msgstr "Выбранный файл не содержит геометрии." -msgid "The selected file contains several disjoint areas. This is not supported." -msgstr "Выбранный файл содержит несколько не пересекающихся областей. Такие файлы не поддерживаются." +msgid "" +"The selected file contains several disjoint areas. This is not supported." +msgstr "" +"Выбранный файл содержит несколько не пересекающихся областей. Такие файлы не " +"поддерживаются." msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Выберите файл для импорта текстуры стола из PNG/SVG:" @@ -2256,26 +2459,13 @@ msgstr "" "Пожалуйста, убедитесь, что вы задали нужную температуру для печати.\n" "\n" -#, c-format, boost-format -msgid "Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" -msgstr "Рекомендуемая температура сопла для данного типа пластиковой нити составляет [%d, %d] градусов Цельсия." - #, c-format, boost-format msgid "" -"Bed temperature of other layer is lower than bed temperature of initial layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" +"Recommended nozzle temperature of this filament type is [%d, %d] degree " +"centigrade" msgstr "" -"Температура стола для последующих слоёв слишком низкая по сравнению с температурой первого слоя, более чем на %d градусов Цельсия.\n" -"Это может привести к отрыву модели от стола во время печати." - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air circulation or reduce the temperature of the hot bed" -msgstr "" -"Температура стола выше температуры стеклования этой пластиковой нити.\n" -"Это может привести к засорению сопла и сбою печати.\n" -"Пожалуйста, держите принтер открытым во время печати, чтобы обеспечить циркуляцию воздуха или снизить температуру стола." +"Рекомендуемая температура сопла для данного типа пластиковой нити составляет " +"[%d, %d] градусов Цельсия." msgid "" "Too small max volumetric speed.\n" @@ -2284,6 +2474,13 @@ msgstr "" "Слишком маленькая максимальная объёмная скорость.\n" "Сбросьте до 0,5." +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2308,15 +2505,19 @@ msgstr "" "Высота первого слоя будет сброшена до 0,2." msgid "" -"This setting is only used for model size tunning with small value in some cases.\n" +"This setting is only used for model size tunning with small value in some " +"cases.\n" "For example, when model size has small error and hard to be assembled.\n" "For large size tuning, please use model scale function.\n" "\n" "The value will be reset to 0." msgstr "" -"Этот параметр используется только для точной корректировки размера модели в определенных случаях.\n" -"Например, когда есть небольшая погрешность в размерах модели и её трудно собрать.\n" -"Для более значительной корректировки размеров используйте функцию масштабирования модели.\n" +"Этот параметр используется только для точной корректировки размера модели в " +"определенных случаях.\n" +"Например, когда есть небольшая погрешность в размерах модели и её трудно " +"собрать.\n" +"Для более значительной корректировки размеров используйте функцию " +"масштабирования модели.\n" "\n" "Это значение будет сброшено на 0." @@ -2328,14 +2529,18 @@ msgid "" "The value will be reset to 0." msgstr "" "Слишком большая компенсация слоновьей ноги нецелесообразна.\n" -"Если имеется серьёзный эффект слоновьей ноги, проверьте другие настройки печати.\n" +"Если имеется серьёзный эффект слоновьей ноги, проверьте другие настройки " +"печати.\n" "Например, не слишком ли высокая температура стола.\n" "\n" "Значение будет сброшено на 0." -msgid "Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." +msgid "" +"Spiral mode only works when wall loops is 1, support is disabled, top shell " +"layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" -"Для режима печати «Спиральная ваза» необходимо чтобы соблюдались следующие условия:\n" +"Для режима печати «Спиральная ваза» необходимо чтобы соблюдались следующие " +"условия:\n" "- одностеночный периметр\n" "- отсутствие поддержки\n" "- отсутствие верхних сплошных слоёв\n" @@ -2343,6 +2548,9 @@ msgstr "" "- отключено «Обнаружение тонких стенок»\n" "- Режим записи таймлапсов - обычный режим" +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2353,12 +2561,14 @@ msgstr "" "Нет - Отказаться от использования режима «Спиральная ваза»" msgid "" -"Prime tower does not work when Adaptive Layer Height or Independent Support Layer Height is on.\n" +"Prime tower does not work when Adaptive Layer Height or Independent Support " +"Layer Height is on.\n" "Which do you want to keep?\n" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" msgstr "" -"Черновая башня не работает, когда включена функция «Переменная высота слоёв» или «Независимая высота слоя поддержки»\n" +"Черновая башня не работает, когда включена функция «Переменная высота слоёв» " +"или «Независимая высота слоя поддержки»\n" "Что вы хотите сохранить?\n" "ДА - Сохранить черновую башню\n" "НЕТ - Сохранить переменную высоту слоя и независимую высоту слоя поддержки" @@ -2369,7 +2579,8 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height" msgstr "" -"Черновая башня не работает, когда включена функция «Переменная высота слоёв».\n" +"Черновая башня не работает, когда включена функция «Переменная высота " +"слоёв».\n" "Что вы хотите сохранить?\n" "Да - Сохранить черновую башню\n" "Нет - Сохранить переменную высоту слоёв" @@ -2380,7 +2591,8 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"Черновая башня не работает, если включена функция «Независимая высота слоя поддержки»\n" +"Черновая башня не работает, если включена функция «Независимая высота слоя " +"поддержки»\n" "Что вы хотите сохранить?\n" "ДА - Сохранить черновую башню\n" "НЕТ - Сохранить независимую высоту слоя поддержки" @@ -2396,7 +2608,8 @@ msgid "" msgstr "" "Переключиться на прямолинейный (rectilinear) шаблон?\n" "Да - переключиться на прямолинейный шаблон\n" -"Нет - сбросить плотность заполнения до значения по умолчанию (отличного от 100%)" +"Нет - сбросить плотность заполнения до значения по умолчанию (отличного от " +"100%)" msgid "" "While printing by Object, the extruder may collide skirt.\n" @@ -2468,6 +2681,36 @@ msgstr "Пауза при неисправности температуры со msgid "Paused due to heat bed temperature malfunction" msgstr "Пауза при неисправности температуры стола" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "Плата управления" @@ -2504,6 +2747,24 @@ msgstr "Ошибка идентификации." msgid "Update failed." msgstr "Сбой обновления." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "Не удалось запустить задание на печать." @@ -2519,11 +2780,19 @@ msgstr "Печать TPU с помощью АСПП не поддерживае msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Печать Bambu PET-CF/PA6-CF с помощью АСПП не поддерживается." -msgid "Damp PVA will become flexible and get stuck inside AMS,please take care to dry it before use." -msgstr "Влажный PVA становится гибким и застревает внутри АСПП, поэтому перед использованием его необходимо просушить." +msgid "" +"Damp PVA will become flexible and get stuck inside AMS,please take care to " +"dry it before use." +msgstr "" +"Влажный PVA становится гибким и застревает внутри АСПП, поэтому перед " +"использованием его необходимо просушить." -msgid "CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, please use with caution." -msgstr "CF/GF пластиковые нити твердые и хрупкие, легко ломаются или застревают в АСПП, поэтому используйте их с осторожностью." +msgid "" +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " +"AMS, please use with caution." +msgstr "" +"CF/GF пластиковые нити твердые и хрупкие, легко ломаются или застревают в " +"АСПП, поэтому используйте их с осторожностью." msgid "default" msgstr "По умолчанию" @@ -2601,9 +2870,6 @@ msgstr "Поток: " msgid "Layer Time: " msgstr "Время печати слоя: " -msgid "Fan Speed: " -msgstr "Скорость вентилятора: " - msgid "Fan: " msgstr "Скорость вентилятора: " @@ -2631,12 +2897,15 @@ msgstr "Очищено" msgid "Total" msgstr "Общее" -msgid "Total Time Estimation" -msgstr "Оценка общего времени" +msgid "Total Estimation" +msgstr "Общая оценка" msgid "Total time" msgstr "Общее время печати" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "до" @@ -2724,9 +2993,6 @@ msgstr "Профиль принтера" msgid "Print settings" msgstr "Настройки печати" -msgid "Total Estimation" -msgstr "Общая оценка" - msgid "Time Estimation" msgstr "Оценка времени" @@ -2835,6 +3101,9 @@ msgstr "Разрешить использование нескольких ма msgid "Avoid extrusion calibration region" msgstr "Избегать зону калибровки экструзии" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "Добавить" @@ -2893,8 +3162,12 @@ msgid "Size:" msgstr "Размер:" #, c-format, boost-format -msgid "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please separate the conflicted objects farther (%s <-> %s)." -msgstr "В G-коде на %d слое (z = %.2lf мм) обнаружен конфликт путей. Пожалуйста, разместите конфликтующие модели дальше друг от друга (%s <-> %s)." +msgid "" +"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " +"separate the conflicted objects farther (%s <-> %s)." +msgstr "" +"В G-коде на %d слое (z = %.2lf мм) обнаружен конфликт путей. Пожалуйста, " +"разместите конфликтующие модели дальше друг от друга (%s <-> %s)." msgid "An object is layed over the boundary of plate." msgstr "Модель выходить за границы печатного стола." @@ -2910,10 +3183,13 @@ msgstr "При редактировании, те модели с которым msgid "" "An object is laid over the boundary of plate or exceeds the height limit.\n" -"Please solve the problem by moving it totally on or off the plate, and confirming that the height is within the build volume." +"Please solve the problem by moving it totally on or off the plate, and " +"confirming that the height is within the build volume." msgstr "" "Модель выходит за границы стола или превышает высоту печати.\n" -"Пожалуйста, устраните проблему, уместив всю модель в границы стола (или за пределы стола) и убедитесь, что высота модели находится в пределах область построения." +"Пожалуйста, устраните проблему, уместив всю модель в границы стола (или за " +"пределы стола) и убедитесь, что высота модели находится в пределах область " +"построения." msgid "Calibration step selection" msgstr "Выбор шага калибровки" @@ -2924,17 +3200,22 @@ msgstr "Калибровка микролидаром" msgid "Bed leveling" msgstr "Выравнивание стола" -msgid "Resonance frequency identification" -msgstr "Идентификация резонансной частоты" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "Программа калибровки" msgid "" -"The calibration program detects the status of your device automatically to minimize deviation.\n" +"The calibration program detects the status of your device automatically to " +"minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"Программа калибровки автоматически определяет состояние вашего принтера, чтобы свести к минимуму ошибки оборудования.\n" +"Программа калибровки автоматически определяет состояние вашего принтера, " +"чтобы свести к минимуму ошибки оборудования.\n" "Это обеспечивает оптимальную работу устройства." msgid "Calibration Flow" @@ -2943,6 +3224,9 @@ msgstr "Калибровка потока" msgid "Start Calibration" msgstr "Запустить калибровку" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "Завершено" @@ -2976,7 +3260,9 @@ msgstr "Пожалуйста, введите код доступа к принт msgid "" "You can find it in \"Settings > Network > Connection code\"\n" "on the printer, as shown in the figure:" -msgstr "Вы можете найти его на принтере в разделе Настройки > Сеть > Код подключения, как показано на рисунке:" +msgstr "" +"Вы можете найти его на принтере в разделе Настройки > Сеть > Код " +"подключения, как показано на рисунке:" msgid "Invalid input." msgstr "Неверный ввод." @@ -3017,9 +3303,6 @@ msgstr "Нет" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "будет закрыт перед созданием новой модели. Хотите продолжить?" -msgid "Upload" -msgstr "Загрузить" - msgid "Slice plate" msgstr "Нарезать стол" @@ -3395,7 +3678,8 @@ msgstr "Выберите профиль для загрузки:" #, c-format, boost-format msgid "There is %d config imported. (Only non-system and compatible configs)" -msgid_plural "There are %d configs imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" msgstr[0] "Импортирована %d конфигурация (только не системная и совместимая)." msgstr[1] "Импортировано %d конфигурации (только не системные и совместимые)." msgstr[2] "Импортировано %d конфигураций (только не системные и совместимые)." @@ -3443,9 +3727,6 @@ msgstr "Принтер занят загрузкой. Дождитесь зав msgid "Loading..." msgstr "Загрузка..." -msgid "Initialize failed (Not supported with LAN-only mode)!" -msgstr "Ошибка инициализации (не поддерживается в режиме «Только LAN»)!" - msgid "Initialize failed (Not supported on the current printer version)!" msgstr "Ошибка инициализации (не поддерживается в текущей версии принтера)!" @@ -3455,9 +3736,6 @@ msgstr "Ошибка инициализации (Недоступно в реж msgid "Initialize failed (Missing LAN ip of printer)!" msgstr "Ошибка инициализации (отсутствует IP-адрес принтера в локальной сети)!" -msgid "Initialize failed (Not supported by printer)!" -msgstr "Ошибка инициализации (не поддерживается принтером)!" - msgid "Initializing..." msgstr "Инициализация..." @@ -3476,7 +3754,9 @@ msgid "Stopped." msgstr "Остановлено." msgid "LAN Connection Failed (Failed to start liveview)" -msgstr "Сбой подключения к локальной сети (не удалось запустить просмотр в реальном времени)" +msgstr "" +"Сбой подключения к локальной сети (не удалось запустить просмотр в реальном " +"времени)" msgid "" "Virtual Camera Tools is required for this task!\n" @@ -3562,9 +3842,6 @@ msgstr "Пакетное управление файлами." msgid "No printers." msgstr "Принтеры отсутствуют." -msgid "Not supported by this model of printer!" -msgstr "Не поддерживается этой моделью принтера!" - #, c-format, boost-format msgid "Connect failed [%d]!" msgstr "Ошибка подключения [%d]!" @@ -3572,19 +3849,6 @@ msgstr "Ошибка подключения [%d]!" msgid "Loading file list..." msgstr "Загрузка списка файлов..." -msgid "No files" -msgstr "Файлы отсутствуют" - -msgid "Not accessible in LAN-only mode!" -msgstr "Недоступно в режиме «Только LAN»!" - -msgid "Missing LAN ip of printer!" -msgstr "Отсутствует сетевой адрес принтера!" - -#, c-format, boost-format -msgid "You are going to delete %u files. Are you sure to continue?" -msgstr "Вы собираетесь удалить файлы: %u шт. Вы уверены, что хотите это сделать?" - #, c-format, boost-format msgid "No files [%d]" msgstr "Файлы отсутствуют [%d]" @@ -3595,10 +3859,17 @@ msgstr "Ошибка загрузки [%d]" #, c-format, boost-format msgid "You are going to delete %u file from printer. Are you sure to continue?" -msgid_plural "You are going to delete %u files from printer. Are you sure to continue?" -msgstr[0] "Вы собираетесь удалить %u файл с принтера. Вы уверены, что хотите это сделать?" -msgstr[1] "Вы собираетесь удалить %u файла с принтера. Вы уверены, что хотите это сделать?" -msgstr[2] "Вы собираетесь удалить %u файлов с принтера. Вы уверены, что хотите это сделать?" +msgid_plural "" +"You are going to delete %u files from printer. Are you sure to continue?" +msgstr[0] "" +"Вы собираетесь удалить %u файл с принтера. Вы уверены, что хотите это " +"сделать?" +msgstr[1] "" +"Вы собираетесь удалить %u файла с принтера. Вы уверены, что хотите это " +"сделать?" +msgstr[2] "" +"Вы собираетесь удалить %u файлов с принтера. Вы уверены, что хотите это " +"сделать?" msgid "Delete files" msgstr "Удалить файлы" @@ -3619,8 +3890,12 @@ msgstr "Не удалось получить информацию о модел msgid "Failed to parse model infomations." msgstr "Не удалось проанализировать информацию о модели." -msgid "The .gcode.3mf file contains no G-code data.Please slice it whthBambu Studio and export a new .gcode.3mf file." -msgstr "Файл .gcode.3mf не содержит G-кода. Пожалуйста, нарежьте его в программе Bambu Studio и экспортируйте новый файл .gcode.3mf." +msgid "" +"The .gcode.3mf file contains no G-code data.Please slice it whthBambu Studio " +"and export a new .gcode.3mf file." +msgstr "" +"Файл .gcode.3mf не содержит G-кода. Пожалуйста, нарежьте его в программе " +"Bambu Studio и экспортируйте новый файл .gcode.3mf." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -3705,12 +3980,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "Слой: Н/Д" -msgid "Immediately score" -msgstr "Оценить сейчас" - msgid "Clear" msgstr "Очистить" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "Камера" @@ -3759,14 +4042,6 @@ msgstr "Отмена печати" msgid "Are you sure you want to cancel this print?" msgstr "Вы уверены, что хотите отменить эту печать?" -#, c-format, boost-format -msgid "Disconnected from printer [%s] due to LAN mode disabled.Please reconnect the printer by logging in with your user account." -msgstr "Соединение с принтером [%s] разорвано из-за отключения режима «Только LAN». Повторно подключитесь к принтеру, войдя в свою учётную запись." - -#, c-format, boost-format -msgid "Disconnected from printer [%s] due to LAN mode enabled.Please reconnect the printer by inputting Access Code which can be gotten from printer screen." -msgstr "Соединение с принтером [%s] разорвано из-за включения режима «Только LAN». Повторно подключитесь к принтеру, введя код доступа, который можно получить на экране принтера." - msgid "Done" msgstr "Готово" @@ -3784,18 +4059,14 @@ msgstr "Количество заданий в очереди на облачн msgid "Layer: %s" msgstr "Слой: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Пожалуйста, поставьте оценку вашей любимой модели в магазине Bambu Market." - -msgid "Score" -msgstr "Рейтинг" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Слой: %d/%d" msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "Пожалуйста, перед загрузкой нити, нагрейте сопло до температуры выше 170 градусов." +msgstr "" +"Пожалуйста, перед загрузкой нити, нагрейте сопло до температуры выше 170 " +"градусов." msgid "Still unload" msgstr "Ещё выгружается" @@ -3806,8 +4077,12 @@ msgstr "Ещё загружается" msgid "Please select an AMS slot before calibration" msgstr "Пожалуйста, выберите слот АСПП перед калибровкой" -msgid "Cannot read filament info: the filament is loaded to the tool head,please unload the filament and try again." -msgstr "Не удаётся считать информацию о пластиковой нити. Пластиковая нить загружена в голову, пожалуйста, выгрузите её и повторите попытку." +msgid "" +"Cannot read filament info: the filament is loaded to the tool head,please " +"unload the filament and try again." +msgstr "" +"Не удаётся считать информацию о пластиковой нити. Пластиковая нить загружена " +"в голову, пожалуйста, выгрузите её и повторите попытку." msgid "This only takes effect during printing" msgstr "Применимо только во время печати" @@ -3827,12 +4102,100 @@ msgstr "Сумасшедший" msgid "Can't start this without SD card." msgstr "Невозможно запустить без SD-карты." +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "Информация" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "Статус" -msgid "Media" -msgstr "Носитель" - msgid "Update" msgstr "Обновление" @@ -3959,6 +4322,9 @@ msgstr "Предупреждение:" msgid "Export successfully." msgstr "Успешно экспортировано." +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "Серьезное предупреждение:" @@ -3992,8 +4358,11 @@ msgstr "Слои" msgid "Range" msgstr "Диапазон" -msgid "The application cannot run normally because OpenGL version is lower than 2.0.\n" -msgstr "Приложение не может работать нормально, так как версия OpenGL ниже 2.0.\n" +msgid "" +"The application cannot run normally because OpenGL version is lower than " +"2.0.\n" +msgstr "" +"Приложение не может работать нормально, так как версия OpenGL ниже 2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Пожалуйста, обновите драйвер вашей видеокарты." @@ -4029,8 +4398,12 @@ msgstr "Чувствительность паузы" msgid "Enable detection of build plate position" msgstr "Включить обнаружение установки печатной пластины на столе" -msgid "The localization tag of build plate is detected, and printing is paused if the tag is not in predefined range." -msgstr "Функция обнаружения метки (QR-кода) печатной пластины. Печать приостанавливается, если метка находится не в том месте." +msgid "" +"The localization tag of build plate is detected, and printing is paused if " +"the tag is not in predefined range." +msgstr "" +"Функция обнаружения метки (QR-кода) печатной пластины. Печать " +"приостанавливается, если метка находится не в том месте." msgid "First Layer Inspection" msgstr "Проверка первого слоя" @@ -4038,6 +4411,9 @@ msgstr "Проверка первого слоя" msgid "Auto-recovery from step loss" msgstr "Автовосстановление после потери шагов" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "Общие" @@ -4114,7 +4490,8 @@ msgstr "Синхронизировать список материалов из msgid "Set filaments to use" msgstr "Выбор пластиковой нити" -msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgid "" +"No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" "АСПП недоступна. Пожалуйста, выберите принтер \n" "на странице «Принтер», чтобы загрузить информацию о АСПП." @@ -4122,11 +4499,19 @@ msgstr "" msgid "Sync filaments with AMS" msgstr "Синхронизация прутка с АСПП" -msgid "Sync filaments with AMS will drop all current selected filament presets and colors. Do you want to continue?" -msgstr "При синхронизации пластиковых нитей с АСПП все текущие выбранные профили прутков и цвета будут сброшены. Продолжить?" +msgid "" +"Sync filaments with AMS will drop all current selected filament presets and " +"colors. Do you want to continue?" +msgstr "" +"При синхронизации пластиковых нитей с АСПП все текущие выбранные профили " +"прутков и цвета будут сброшены. Продолжить?" -msgid "Already did a synchronization, do you want to sync only changes or resync all?" -msgstr "Синхронизация уже выполнена. Хотите синхронизировать только изменения или заново синхронизировать всё?" +msgid "" +"Already did a synchronization, do you want to sync only changes or resync " +"all?" +msgstr "" +"Синхронизация уже выполнена. Хотите синхронизировать только изменения или " +"заново синхронизировать всё?" msgid "Sync" msgstr "Только изменения" @@ -4135,18 +4520,29 @@ msgid "Resync" msgstr "Всё" msgid "There are no compatible filaments, and sync is not performed." -msgstr "Синхронизация не выполнена, ввиду отсутствия совместимых пластиковых нитей." +msgstr "" +"Синхронизация не выполнена, ввиду отсутствия совместимых пластиковых нитей." -msgid "There are some unknown filaments mapped to generic preset. Please update Orca Slicer or restart Orca Slicer to check if there is an update to system presets." -msgstr "Имеются несколько неизвестных материалов, сопоставленных с общим профилем. Обновите или перезапустите Orca Slicer, чтобы проверить наличие обновлений системных профилей." +msgid "" +"There are some unknown filaments mapped to generic preset. Please update " +"Orca Slicer or restart Orca Slicer to check if there is an update to system " +"presets." +msgstr "" +"Имеются несколько неизвестных материалов, сопоставленных с общим профилем. " +"Обновите или перезапустите Orca Slicer, чтобы проверить наличие обновлений " +"системных профилей." #, boost-format msgid "Do you want to save changes to \"%1%\"?" msgstr "Вы хотите сохранить изменения в \"%1%\"?" #, c-format, boost-format -msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." -msgstr "Размонтирование прошло успешно. Теперь устройство %s(%s) может быть безопасно извлечено из компьютера." +msgid "" +"Successfully unmounted. The device %s(%s) can now be safely removed from the " +"computer." +msgstr "" +"Размонтирование прошло успешно. Теперь устройство %s(%s) может быть " +"безопасно извлечено из компьютера." #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." @@ -4158,21 +4554,35 @@ msgstr "Обнаружен предыдущий несохраненный пр msgid "Restore" msgstr "Восстановить" -msgid "The bed temperature exceeds filament's vitrification temperature. Please open the front door of printer before printing to avoid nozzle clog." -msgstr "Температура стола превышает температуру стеклования пластиковой нити. Пожалуйста, откройте переднюю дверцу принтера перед печатью, чтобы избежать засорения сопла." +msgid "" +"The bed temperature exceeds filament's vitrification temperature. Please " +"open the front door of printer before printing to avoid nozzle clog." +msgstr "" +"Температура стола превышает температуру стеклования пластиковой нити. " +"Пожалуйста, откройте переднюю дверцу принтера перед печатью, чтобы избежать " +"засорения сопла." -msgid "The nozzle hardness required by the filament is higher than the default nozzle hardness of the printer. Please replace the hardened nozzle or filament, otherwise, the nozzle will be attrited or damaged." -msgstr "Твердость сопла, установленного по умолчанию, не достаточна для печати данной пластиковой нитью. Замените сопло на закаленное или смените пластиковую нить. В противном случае сопло будет изношено или повреждено." +msgid "" +"The nozzle hardness required by the filament is higher than the default " +"nozzle hardness of the printer. Please replace the hardened nozzle or " +"filament, otherwise, the nozzle will be attrited or damaged." +msgstr "" +"Твердость сопла, установленного по умолчанию, не достаточна для печати " +"данной пластиковой нитью. Замените сопло на закаленное или смените " +"пластиковую нить. В противном случае сопло будет изношено или повреждено." + +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" #, c-format, boost-format msgid "Loading file: %s" msgstr "Загрузка файла: %s" msgid "The 3mf is not supported by OrcaSlicer, load geometry data only." -msgstr "Этот 3mf создан не в OrcaSlicer, поэтому загрузятся только данные геометрии." - -msgid "The 3mf is not from Bambu Lab, load geometry data only." -msgstr "Этот 3mf создан не в Bambu Lab, поэтому загрузятся только данные геометрии." +msgstr "" +"Этот 3mf создан не в OrcaSlicer, поэтому загрузятся только данные геометрии." msgid "Load 3mf" msgstr "Загрузка 3mf" @@ -4181,13 +4591,17 @@ msgid "The Config can not be loaded." msgstr "Конфигурация не может быть загружена." msgid "The 3mf is generated by old Orca Slicer, load geometry data only." -msgstr "Этот 3mf создан в старой версии Orca Slicer, поэтому загрузятся только данные геометрии." +msgstr "" +"Этот 3mf создан в старой версии Orca Slicer, поэтому загрузятся только " +"данные геометрии." #, c-format, boost-format -msgid "The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:" +msgid "" +"The 3mf's version %s is newer than %s's version %s, Found following keys " +"unrecognized:" msgstr "" "Версия этого формата 3mf (%s) новее текущей версии %s (%s). \n" -"Обнаружены следующие нераспознанные ключи:\n" +"Обнаружены следующие нераспознанные ключи:" msgid "You'd better upgrade your software.\n" msgstr "Рекомендуем вам обновить программу.\n" @@ -4196,7 +4610,9 @@ msgid "Newer 3mf version" msgstr "Новая версия 3mf" #, c-format, boost-format -msgid "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software." +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software." msgstr "" "Версия этого формата 3mf (%s) новее текущей версии %s (%s). \n" "Рекомендуется обновить программу." @@ -4221,7 +4637,8 @@ msgstr "В названии могут присутствовать ненужн #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." -msgstr "Не удалось загрузить файл \"%1%\". Обнаружена недопустимая конфигурация." +msgstr "" +"Не удалось загрузить файл \"%1%\". Обнаружена недопустимая конфигурация." msgid "Objects with zero volume removed" msgstr "Модели с нулевым объёмом удалены" @@ -4254,7 +4671,8 @@ msgid "Multi-part object detected" msgstr "Обнаружена модель, состоящая из нескольких частей" msgid "Load these files as a single object with multiple parts?\n" -msgstr "Загрузить эти файлы как единую модель состоящую из нескольких частей?\n" +msgstr "" +"Загрузить эти файлы как единую модель состоящую из нескольких частей?\n" msgid "Object with multiple parts was detected" msgstr "Обнаружена модель, состоящая из нескольких частей" @@ -4262,7 +4680,9 @@ msgstr "Обнаружена модель, состоящая из нескол msgid "The file does not contain any geometry data." msgstr "Файл не содержит никаких геометрических данных." -msgid "Your object appears to be too large, Do you want to scale it down to fit the heat bed automatically?" +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" msgstr "" "Похоже, ваша модель слишком большая. \n" "Хотите автоматически уменьшить её масштаб, \n" @@ -4329,7 +4749,8 @@ msgstr "Нарезка стола %d" msgid "Please resolve the slicing errors and publish again." msgstr "Пожалуйста, устраните ошибки нарезки и попробуйте опубликовать снова." -msgid "Network Plug-in is not detected. Network related features are unavailable." +msgid "" +"Network Plug-in is not detected. Network related features are unavailable." msgstr "Сетевой плагин не обнаружен. Функции, связанные с сетью, недоступны." msgid "" @@ -4337,7 +4758,8 @@ msgid "" "The loaded file contains gcode only, Can not enter the Prepare page" msgstr "" "Режим только предпросмотра:\n" -"Загруженный файл содержит только G-код, поэтому переход на страницу «Подготовка» невозможен." +"Загруженный файл содержит только G-код, поэтому переход на страницу " +"«Подготовка» невозможен." msgid "You can keep the modified presets to the new project or discard them" msgstr "Изменённые профили можно сохранить в новом проекте или отказаться." @@ -4350,10 +4772,12 @@ msgstr "Загрузить проект" msgid "" "Failed to save the project.\n" -"Please check whether the folder exists online or if other programs open the project file." +"Please check whether the folder exists online or if other programs open the " +"project file." msgstr "" "Не удалось сохранить проект.\n" -"Убедитесь, что папка существует и что файл проекта не открыт в другой программе." +"Убедитесь, что папка существует и что файл проекта не открыт в другой " +"программе." msgid "Save project" msgstr "Сохранение проекта" @@ -4371,6 +4795,11 @@ msgstr "скачивание проекта..." msgid "Project downloaded %d%%" msgstr "Проект загружен %d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "В выбранном файле" @@ -4431,21 +4860,31 @@ msgid "Save Sliced file as:" msgstr "Сохранить нарезанный файл как:" #, c-format, boost-format -msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." +msgid "" +"The file %s has been sent to the printer's storage space and can be viewed " +"on the printer." msgstr "Файл %s отправлен в память принтера и может быть просмотрен на нём." -msgid "Unable to perform boolean operation on model meshes. Only positive parts will be exported." -msgstr "Невозможно выполнить булевы операции над сетками модели. Будут экспортированы только положительные части." +msgid "" +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be exported." +msgstr "" +"Невозможно выполнить булевы операции над сетками модели. Будут " +"экспортированы только положительные части." msgid "Is the printer ready? Is the print sheet in place, empty and clean?" msgstr "Готов ли 3D-принтер? Печатная пластина на месте, пустая и чистая?" +msgid "Upload and Print" +msgstr "Загрузить и напечатать" + msgid "" "Print By Object: \n" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Печать по очереди: \n" -"Рекомендуется использовать автоматическую расстановку, чтобы избежать столкновений при печати." +"Рекомендуется использовать автоматическую расстановку, чтобы избежать " +"столкновений при печати." msgid "Send G-code" msgstr "Отправить G-код" @@ -4503,12 +4942,23 @@ msgstr "Треугольников: %1%\n" msgid "Tips:" msgstr "Подсказки:" -msgid "\"Fix Model\" feature is currently only on Windows. Please repair the model on Orca Slicer(windows) or CAD softwares." -msgstr "Функция «Починить модель» в настоящее время доступна только в Windows. Пожалуйста, почините модель с помощью Bambu Studio (Windows) или другой CAD программой." +msgid "" +"\"Fix Model\" feature is currently only on Windows. Please repair the model " +"on Orca Slicer(windows) or CAD softwares." +msgstr "" +"Функция «Починить модель» в настоящее время доступна только в Windows. " +"Пожалуйста, почините модель с помощью Bambu Studio (Windows) или другой CAD " +"программой." #, c-format, boost-format -msgid "Plate% d: %s is not suggested to be used to print filament %s(%s). If you still want to do this printing, please set this filament's bed temperature to non zero." -msgstr "Не рекомендуется использовать печатную пластину% d (%s) для печати прутком %s (%s). Если вы всё же хотите сделать это, то установите температуру стола для этого прутка на ненулевое значение." +msgid "" +"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " +"still want to do this printing, please set this filament's bed temperature " +"to non zero." +msgstr "" +"Не рекомендуется использовать печатную пластину% d (%s) для печати прутком " +"%s (%s). Если вы всё же хотите сделать это, то установите температуру стола " +"для этого прутка на ненулевое значение." msgid "Switching the language requires application restart.\n" msgstr "Для смены языка требуется перезапуск приложения.\n" @@ -4578,14 +5028,20 @@ msgstr "" msgid "Zoom to mouse position" msgstr "Приближать к положению курсор" -msgid "Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center." -msgstr "Увеличивать масштаб по направлению к курсору в 3D-виде, а не к центру 2D-окна." +msgid "" +"Zoom in towards the mouse pointer's position in the 3D view, rather than the " +"2D window center." +msgstr "" +"Увеличивать масштаб по направлению к курсору в 3D-виде, а не к центру 2D-" +"окна." msgid "Show \"Tip of the day\" notification after start" msgstr "Показывать уведомление с полезным советом при запуске приложения" msgid "If enabled, useful hints are displayed at startup." -msgstr "Если включено, будут показываться уведомления с полезном советом при запуске приложения." +msgstr "" +"Если включено, будут показываться уведомления с полезном советом при запуске " +"приложения." msgid "Show g-code window" msgstr "Показать окно G-кода" @@ -4618,19 +5074,25 @@ msgid "Associate .3mf files to OrcaSlicer" msgstr "Ассоциировать файлы .3mf с OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" -msgstr "Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для открытия .3mf файлов." +msgstr "" +"Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для " +"открытия .3mf файлов." msgid "Associate .stl files to OrcaSlicer" msgstr "Ассоциировать файлы .stl с OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" -msgstr "Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для открытия .stl файлов." +msgstr "" +"Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для " +"открытия .stl файлов." msgid "Associate .step/.stp files to OrcaSlicer" msgstr "Ассоциировать файлы .step/.stp с OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" -msgstr "Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для открытия .step файлов." +msgstr "" +"Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для " +"открытия .step файлов." msgid "Online Models" msgstr "Онлайн-модели" @@ -4642,7 +5104,8 @@ msgid "Maximum recent projects" msgstr "Максимальное количество недавних проектов" msgid "Maximum count of recent projects" -msgstr "Максимальное количество проектов отображаемое в списке недавних проектов." +msgstr "" +"Максимальное количество проектов отображаемое в списке недавних проектов." msgid "Clear my choice on the unsaved projects." msgstr "Очистить мой выбор от несохранённых проектов." @@ -4650,8 +5113,11 @@ msgstr "Очистить мой выбор от несохранённых пр msgid "Auto-Backup" msgstr "Автосоздание резервной копии" -msgid "Backup your project periodically for restoring from the occasional crash." -msgstr "Периодическое создание резервной копии проекта для восстановления после непредвиденного сбоя программы." +msgid "" +"Backup your project periodically for restoring from the occasional crash." +msgstr "" +"Периодическое создание резервной копии проекта для восстановления после " +"непредвиденного сбоя программы." msgid "every" msgstr "каждые" @@ -4710,9 +5176,6 @@ msgstr "Прочее" msgid "Mouse wheel reverses when zooming" msgstr "Менять направление масштабирования с помощью колеса мыши" -msgid "Dump video" -msgstr "Выгрузить видео" - msgid "Enable SSL(MQTT)" msgstr "Включить SSL(MQTT)" @@ -4734,9 +5197,6 @@ msgstr "ошибка" msgid "warning" msgstr "предупреждение" -msgid "info" -msgstr "Информация" - msgid "debug" msgstr "отладка" @@ -4846,7 +5306,9 @@ msgid "Log Out" msgstr "Выход" msgid "Slice all plate to obtain time and filament estimation" -msgstr "Нарезка всех столов для получения примерного времени печати и расчёта необходимого количества материала." +msgstr "" +"Нарезка всех столов для получения примерного времени печати и расчёта " +"необходимого количества материала." msgid "Packing project data into 3mf file" msgstr "Упаковка данных проекта в файл формата 3mf" @@ -4858,7 +5320,9 @@ msgid "Jump to model publish web page" msgstr "Перейти на веб-страницу публикации модели" msgid "Note: The preparation may takes several minutes. Please be patiant." -msgstr "Примечание: подготовка может занять несколько минут. Пожалуйста, наберитесь терпения." +msgstr "" +"Примечание: подготовка может занять несколько минут. Пожалуйста, наберитесь " +"терпения." msgid "Publish" msgstr "Опубликовать" @@ -4909,7 +5373,8 @@ msgid "Preset \"%1%\" already exists and is incompatible with current printer." msgstr "Профиль \"%1%\" уже существует и несовместим с текущим принтером." msgid "Please note that saving action will replace this preset" -msgstr "Обратите внимание, что при сохранении произойдёт замена текущего профиля." +msgstr "" +"Обратите внимание, что при сохранении произойдёт замена текущего профиля." msgid "The name is not allowed to be empty." msgstr "Имя не может быть пустым." @@ -4953,9 +5418,6 @@ msgstr "Просто переключиться на \"%1%\"" msgid "Task canceled" msgstr "Задание отменено" -msgid "Upload task timed out. Please check the network problem and try again" -msgstr "Истекло время ожидания отправки задания. Проверьте сетевое подключение и повторите попытку." - msgid "(LAN)" msgstr "(LAN)" @@ -4989,11 +5451,17 @@ msgstr "Не нагреваемая пластина Bamabu" msgid "PLA Plate" msgstr "PLA пластина" -msgid "Bamabu Engineering Plate" -msgstr "Инженерная пластина Bamabu" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "Высокотемпературная пластина Bamabu" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "Отправка задания на печать" @@ -5011,8 +5479,8 @@ msgstr "" "Калибровка\n" "динамики потока" -msgid "Can't connect to the printer" -msgstr "Не удаётся подключиться к принтеру" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "отправка завершена" @@ -5024,10 +5492,12 @@ msgid "Check the status of current system services" msgstr "Проверка состояния текущих системных служб" msgid "Printer local connection failed, please try again." -msgstr "Не удалось установить локальное соединение с принтером, попробуйте ещё раз." +msgstr "" +"Не удалось установить локальное соединение с принтером, попробуйте ещё раз." msgid "No login account, only printers in LAN mode are displayed" -msgstr "Без входа в учётную запись, отображаются только принтеры в локальной сети." +msgstr "" +"Без входа в учётную запись, отображаются только принтеры в локальной сети." msgid "Connecting to server" msgstr "Подключение к серверу" @@ -5039,36 +5509,70 @@ msgid "Synchronizing device information time out" msgstr "Время ожидания синхронизации информации об устройстве истекло" msgid "Cannot send the print job when the printer is updating firmware" -msgstr "Невозможно отправить задание на печать, при обновлении прошивки принтера." +msgstr "" +"Невозможно отправить задание на печать, при обновлении прошивки принтера." -msgid "The printer is executing instructions. Please restart printing after it ends" -msgstr "Принтер выполняет инструкции. Пожалуйста, перезапустите печать после их завершения." +msgid "" +"The printer is executing instructions. Please restart printing after it ends" +msgstr "" +"Принтер выполняет инструкции. Пожалуйста, перезапустите печать после их " +"завершения." msgid "The printer is busy on other print job" msgstr "Принтер занят другим заданием" #, c-format, boost-format -msgid "Filament %s exceeds the number of AMS slots. Please update the printer firmware to support AMS slot assignment." -msgstr "Количество пластиковых нитей - %s, что превышает количество слотов АСПП. Обновите прошивку принтера, чтобы получить поддержку функции назначения слотов АСПП." +msgid "" +"Filament %s exceeds the number of AMS slots. Please update the printer " +"firmware to support AMS slot assignment." +msgstr "" +"Количество пластиковых нитей - %s, что превышает количество слотов АСПП. " +"Обновите прошивку принтера, чтобы получить поддержку функции назначения " +"слотов АСПП." -msgid "Filament exceeds the number of AMS slots. Please update the printer firmware to support AMS slot assignment." -msgstr "Количество пластиковых нитей превышает количество слотов АСПП. Обновите прошивку принтера, чтобы получить поддержку функции назначения слотов АСПП." +msgid "" +"Filament exceeds the number of AMS slots. Please update the printer firmware " +"to support AMS slot assignment." +msgstr "" +"Количество пластиковых нитей превышает количество слотов АСПП. Обновите " +"прошивку принтера, чтобы получить поддержку функции назначения слотов АСПП." -msgid "Filaments to AMS slots mappings have been established. You can click a filament above to change its mapping AMS slot" -msgstr "Соответствия между материалами и слотами АСПП были установлены. Вы можете нажать на пластиковую нить выше, чтобы вручную задать для неё нужный слот АСПП." +msgid "" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" +msgstr "" +"Соответствия между материалами и слотами АСПП были установлены. Вы можете " +"нажать на пластиковую нить выше, чтобы вручную задать для неё нужный слот " +"АСПП." -msgid "Please click each filament above to specify its mapping AMS slot before sending the print job" -msgstr "Перед отправкой задания на печать, нажмите на каждую пластиковую нить, чтобы вручную задать для неё нужный слот АСПП." +msgid "" +"Please click each filament above to specify its mapping AMS slot before " +"sending the print job" +msgstr "" +"Перед отправкой задания на печать, нажмите на каждую пластиковую нить, чтобы " +"вручную задать для неё нужный слот АСПП." #, c-format, boost-format -msgid "Filament %s does not match the filament in AMS slot %s. Please update the printer firmware to support AMS slot assignment." -msgstr "Материал %s не соответствует материалу в слоте %s АСПП. Обновите прошивку принтера, чтобы получить поддержку функции назначения слотов АСПП." +msgid "" +"Filament %s does not match the filament in AMS slot %s. Please update the " +"printer firmware to support AMS slot assignment." +msgstr "" +"Материал %s не соответствует материалу в слоте %s АСПП. Обновите прошивку " +"принтера, чтобы получить поддержку функции назначения слотов АСПП." -msgid "Filament does not match the filament in AMS slot. Please update the printer firmware to support AMS slot assignment." -msgstr "Материал не соответствует материалу в слоте АСПП. Обновите прошивку принтера, чтобы получить поддержку функции назначения слотов АСПП." +msgid "" +"Filament does not match the filament in AMS slot. Please update the printer " +"firmware to support AMS slot assignment." +msgstr "" +"Материал не соответствует материалу в слоте АСПП. Обновите прошивку " +"принтера, чтобы получить поддержку функции назначения слотов АСПП." -msgid "The printer firmware only supports sequential mapping of filament => AMS slot." -msgstr "Текущая прошивка принтера поддерживает только последовательное сопоставление пластиковых нитей => слот АСПП." +msgid "" +"The printer firmware only supports sequential mapping of filament => AMS " +"slot." +msgstr "" +"Текущая прошивка принтера поддерживает только последовательное сопоставление " +"пластиковых нитей => слот АСПП." msgid "An SD card needs to be inserted before printing." msgstr "Перед печатью необходимо вставить SD-карту." @@ -5079,8 +5583,12 @@ msgstr "Выбранный принтер несовместим с выбран msgid "An SD card needs to be inserted to record timelapse." msgstr "Для записи таймлапсов необходимо вставить SD-карту." -msgid "Cannot send the print job to a printer whose firmware is required to get updated." -msgstr "Невозможно отправить задание печати на принтер, прошивка которого нуждается в обновлении." +msgid "" +"Cannot send the print job to a printer whose firmware is required to get " +"updated." +msgstr "" +"Невозможно отправить задание печати на принтер, прошивка которого нуждается " +"в обновлении." msgid "Cannot send the print job for empty plate" msgstr "Невозможно отправить задание на печать, так как стол пуст." @@ -5088,6 +5596,16 @@ msgstr "Невозможно отправить задание на печать msgid "This printer does not support printing all plates" msgstr "Данный принтер не поддерживает печать на всех типах печатных пластин." +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "Ошибок" @@ -5095,21 +5613,35 @@ msgid "Please check the following:" msgstr "Пожалуйста, проверьте следующую информацию:" # ??? -msgid "The printer type selected when generating G-Code is not consistent with the currently selected printer. It is recommended that you use the same printer type for slicing." -msgstr "Выбранный профиль принтера в настройках слайсера не совпадает с фактическим принтером. Для нарезки рекомендуется использовать тот же профиль принтера." +msgid "" +"The printer type selected when generating G-Code is not consistent with the " +"currently selected printer. It is recommended that you use the same printer " +"type for slicing." +msgstr "" +"Выбранный профиль принтера в настройках слайсера не совпадает с фактическим " +"принтером. Для нарезки рекомендуется использовать тот же профиль принтера." #, c-format, boost-format msgid "%s is not supported by AMS." msgstr "%s не поддерживается АСПП." -msgid "There are some unknown filaments in the AMS mappings. Please check whether they are the required filaments. If they are okay, press \"Confirm\" to start printing." -msgstr "В АСПП установлены неизвестные пластиковые нити. Убедитесь, что стоят именно те, что вам нужны. Если всё в порядке, нажмите «Подтвердить», чтобы начать печать." +msgid "" +"There are some unknown filaments in the AMS mappings. Please check whether " +"they are the required filaments. If they are okay, press \"Confirm\" to " +"start printing." +msgstr "" +"В АСПП установлены неизвестные пластиковые нити. Убедитесь, что стоят именно " +"те, что вам нужны. Если всё в порядке, нажмите «Подтвердить», чтобы начать " +"печать." -msgid "Please click the confirm button if you still want to proceed with printing." +msgid "" +"Please click the confirm button if you still want to proceed with printing." msgstr "Нажмите кнопку подтверждения, если всё ещё хотите продолжить печать." -msgid "Connecting to the printer. Unable to cancel during the connection process." -msgstr "Подключение к принтеру. Невозможно отменить во время процесса подключения." +msgid "" +"Connecting to the printer. Unable to cancel during the connection process." +msgstr "" +"Подключение к принтеру. Невозможно отменить во время процесса подключения." msgid "Preparing print job" msgstr "Подготовка задания на печать" @@ -5120,8 +5652,12 @@ msgstr "Неправильные данные файла печати. Пожа msgid "The name length exceeds the limit." msgstr "Длина имени превышает установленное ограничение." -msgid "Caution to use! Flow calibration on Textured PEI Plate may fail due to the scattered surface." -msgstr "Внимание! Калибровка потока на текстурированной пластине с PEI покрытием может быть неудачной из-за шероховатой поверхности." +msgid "" +"Caution to use! Flow calibration on Textured PEI Plate may fail due to the " +"scattered surface." +msgstr "" +"Внимание! Калибровка потока на текстурированной пластине с PEI покрытием " +"может быть неудачной из-за шероховатой поверхности." msgid "Automatic flow calibration using Micro Lidar" msgstr "Автокалибровка потока с помощью микролидара" @@ -5186,9 +5722,19 @@ msgstr "Прочитать и принять" msgid "Terms and Conditions" msgstr "Условия использования" -msgid "Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab device, please read the termsand conditions.By clicking to agree to use your Bambu Lab device, you agree to abide by the Privacy Policyand Terms of Use(collectively, the \"Terms\"). If you do not comply with or agree to the Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." +msgid "" +"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " +"device, please read the termsand conditions.By clicking to agree to use your " +"Bambu Lab device, you agree to abide by the Privacy Policyand Terms of " +"Use(collectively, the \"Terms\"). If you do not comply with or agree to the " +"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." msgstr "" -"Перед использованием устройства Bambu Lab ознакомьтесь с правилами и условиями. Нажимая на кнопку \"Согласие на использование устройства Bambu Lab\", вы соглашаетесь соблюдать Политику конфиденциальности и Условия использования (далее - \"Условия\"). Если вы не соблюдаете или не согласны с Политикой конфиденциальности Bambu Lab, пожалуйста, не пользуйтесь оборудованием и услугами Bambu Lab." +"Перед использованием устройства Bambu Lab ознакомьтесь с правилами и " +"условиями. Нажимая на кнопку \"Согласие на использование устройства Bambu Lab" +"\", вы соглашаетесь соблюдать Политику конфиденциальности и Условия " +"использования (далее - \"Условия\"). Если вы не соблюдаете или не согласны с " +"Политикой конфиденциальности Bambu Lab, пожалуйста, не пользуйтесь " +"оборудованием и услугами Bambu Lab." msgid "and" msgstr "и" @@ -5204,12 +5750,30 @@ msgstr "Заявление о программе улучшения пользо #, c-format, boost-format msgid "" -"In the 3D Printing community, we learn from each other's successes and failures to adjust our own slicing parameters and settings. %s follows the same principle and uses machine learning to improve its performance from the successes and failures of the vast number of prints by our users. We are training %s to be smarter by feeding them the real-world data. If you are willing, this service will " -"access information from your error logs and usage logs, which may include information described in Privacy Policy. We will not collect any Personal Data by which an individual can be identified directly or indirectly, including without limitation names, addresses, payment information, or phone numbers. By enabling this service, you agree to these terms and the statement about Privacy Policy." +"In the 3D Printing community, we learn from each other's successes and " +"failures to adjust our own slicing parameters and settings. %s follows the " +"same principle and uses machine learning to improve its performance from the " +"successes and failures of the vast number of prints by our users. We are " +"training %s to be smarter by feeding them the real-world data. If you are " +"willing, this service will access information from your error logs and usage " +"logs, which may include information described in Privacy Policy. We will " +"not collect any Personal Data by which an individual can be identified " +"directly or indirectly, including without limitation names, addresses, " +"payment information, or phone numbers. By enabling this service, you agree " +"to these terms and the statement about Privacy Policy." msgstr "" -"В сообществе 3D-печатников мы учимся на успехах и неудачах друг друга, чтобы корректировать свои собственные параметры и настройки нарезки. Система %s работает по тому же принципу и использует машинное обучение для улучшения своей работы на основе успехов и неудач огромного количества отпечатков наших пользователей. Мы обучаем %s быть умнее, предоставляя ему данные из реального мира. По вашему " -"желанию эта служба получит доступ к информации из журналу ошибок и журналу использования, которая может включать информацию, описанную в Политике конфиденциальности. Мы не будем собирать никаких персональных данных, по которым можно прямо или косвенно идентифицировать физическое лицо, включая, помимо прочего, имена, адреса, платежную информацию или номера телефонов. Включая данную услугу, вы " -"соглашаетесь с данными условиями и заявлением о Политике конфиденциальности." +"В сообществе 3D-печатников мы учимся на успехах и неудачах друг друга, чтобы " +"корректировать свои собственные параметры и настройки нарезки. Система %s " +"работает по тому же принципу и использует машинное обучение для улучшения " +"своей работы на основе успехов и неудач огромного количества отпечатков " +"наших пользователей. Мы обучаем %s быть умнее, предоставляя ему данные из " +"реального мира. По вашему желанию эта служба получит доступ к информации из " +"журналу ошибок и журналу использования, которая может включать информацию, " +"описанную в Политике конфиденциальности. Мы не будем собирать никаких " +"персональных данных, по которым можно прямо или косвенно идентифицировать " +"физическое лицо, включая, помимо прочего, имена, адреса, платежную " +"информацию или номера телефонов. Включая данную услугу, вы соглашаетесь с " +"данными условиями и заявлением о Политике конфиденциальности." msgid "Statement on User Experience Improvement Plan" msgstr "Заявление о плане улучшения взаимодействия с пользователем" @@ -5227,7 +5791,8 @@ msgid "Please log in first." msgstr "Пожалуйста, сначала авторизуйтесь." msgid "There was a problem connecting to the printer. Please try again." -msgstr "Возникла проблема с подключением к принтеру. Пожалуйста, попробуйте ещё раз." +msgstr "" +"Возникла проблема с подключением к принтеру. Пожалуйста, попробуйте ещё раз." msgid "Failed to log out." msgstr "Не удалось выйти." @@ -5244,18 +5809,33 @@ msgid "Search in preset" msgstr "Поиск в профиле" msgid "Click to reset all settings to the last saved preset." -msgstr "Нажмите, чтобы сбросить все настройки до последнего сохраненного профиля." - -msgid "Prime tower is required for smooth timeplase. There may be flaws on the model without prime tower. Are you sure you want to disable prime tower?" -msgstr "Для плавного таймлапса требуется черновая башня. На модели без использования черновой башни могут быть дефекты. Вы уверены, что хотите отключить черновую башню?" - -msgid "Prime tower is required for smooth timelapse. There may be flaws on the model without prime tower. Do you want to enable prime tower?" -msgstr "Для плавного таймлапса требуется черновая башня. На модели без использования черновой башни могут быть дефекты. Вы хотите включить черновую башню?" +msgstr "" +"Нажмите, чтобы сбросить все настройки до последнего сохраненного профиля." msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller support volume but weaker strength.\n" +"Prime tower is required for smooth timeplase. There may be flaws on the " +"model without prime tower. Are you sure you want to disable prime tower?" +msgstr "" +"Для плавного таймлапса требуется черновая башня. На модели без использования " +"черновой башни могут быть дефекты. Вы уверены, что хотите отключить черновую " +"башню?" + +msgid "" +"Prime tower is required for smooth timelapse. There may be flaws on the " +"model without prime tower. Do you want to enable prime tower?" +msgstr "" +"Для плавного таймлапса требуется черновая башня. На модели без использования " +"черновой башни могут быть дефекты. Вы хотите включить черновую башню?" + +msgid "" +"We have added an experimental style \"Tree Slim\" that features smaller " +"support volume but weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." -msgstr "Мы добавили экспериментальный стиль «Стройный (древ. поддержка)», который отличается меньшим объёмом поддержки, а следовательно, и меньшей прочностью. Мы рекомендуем использовать его со следующими параметрами: количество связующих слоёв - 0, зазор поддержки сверху - 0, периметров - 2." +msgstr "" +"Мы добавили экспериментальный стиль «Стройный (древ. поддержка)», который " +"отличается меньшим объёмом поддержки, а следовательно, и меньшей прочностью. " +"Мы рекомендуем использовать его со следующими параметрами: количество " +"связующих слоёв - 0, зазор поддержки сверху - 0, периметров - 2." msgid "" "Change these settings automatically? \n" @@ -5266,7 +5846,10 @@ msgstr "" "Да - Изменить эти настройки автоматически\n" "Нет - Не изменять эти настройки" -msgid "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following settings: at least 2 interface layers, at least 0.1mm top z distance or using support materials on interface." +msgid "" +"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " +"settings: at least 2 interface layers, at least 0.1mm top z distance or " +"using support materials on interface." msgstr "" "Для стилей «Крепкий (древ. поддержка)» и «Гибридный (древ. поддержка)» \n" "мы рекомендуем следующие параметры: \n" @@ -5275,8 +5858,10 @@ msgstr "" "или использование «материалов для поддержек» в качестве связующего слоя." msgid "" -"When using support material for the support interface, We recommend the following settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable independent support layer height" +"When using support material for the support interface, We recommend the " +"following settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable " +"independent support layer height" msgstr "" "При использовании «материалов для поддержек» в качестве связующего \n" "слоя поддержки, мы рекомендуем следующие параметры:\n" @@ -5286,11 +5871,15 @@ msgstr "" "отключение независимой высоты слоя поддержки." msgid "" -"When recording timelapse without toolhead, it is recommended to add a \"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive\"->\"Timelapse Wipe Tower\"." +"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 "" -"При записи таймлапса без видимости головы рекомендуется добавить «Черновая башня таймлапса». \n" -"Щелкните правой кнопкой мыши на пустом месте стола и выберите «Добавить примитив» -> «Черновая башня таймлапса»." +"При записи таймлапса без видимости головы рекомендуется добавить «Черновая " +"башня таймлапса». \n" +"Щелкните правой кнопкой мыши на пустом месте стола и выберите «Добавить " +"примитив» -> «Черновая башня таймлапса»." msgid "Line width" msgstr "Ширина экструзии" @@ -5319,8 +5908,16 @@ msgstr "Скорость печати других слоёв" msgid "Overhang speed" msgstr "Скорость печати нависаний" -msgid "This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line width. 0 speed means no slowing down for the overhang degree range and wall speed is used" -msgstr "Скорость печати нависаний разной степени свеса. Размер этого свеса выражается в процентах от ширины линии. Скорость 0 означает, что для данного диапазона нависаний замедление отсутствует и используется скорость периметра. Скорость для промежуточных значений рассчитывается с помощью линейной интерполяции." +msgid "" +"This is the speed for various overhang degrees. Overhang degrees are " +"expressed as a percentage of line width. 0 speed means no slowing down for " +"the overhang degree range and wall speed is used" +msgstr "" +"Скорость печати нависаний разной степени свеса. Размер этого свеса " +"выражается в процентах от ширины линии. Скорость 0 означает, что для данного " +"диапазона нависаний замедление отсутствует и используется скорость " +"периметра. Скорость для промежуточных значений рассчитывается с помощью " +"линейной интерполяции." msgid "Bridge" msgstr "Мосты" @@ -5343,6 +5940,9 @@ msgstr "Подложка" msgid "Support filament" msgstr "Пруток для поддержки" +msgid "Tree supports" +msgstr "Древовидная поддержка" + msgid "Prime tower" msgstr "Черновая башня" @@ -5364,19 +5964,24 @@ msgstr "Частые" #, c-format, boost-format msgid "" "Following line %s contains reserved keywords.\n" -"Please remove it, or will beat G-code visualization and printing time estimation." +"Please remove it, or will beat G-code visualization and printing time " +"estimation." msgid_plural "" "Following lines %s contain reserved keywords.\n" -"Please remove them, or will beat G-code visualization and printing time estimation." +"Please remove them, or will beat G-code visualization and printing time " +"estimation." msgstr[0] "" "Следующая строка %s содержит зарезервированные ключевые слова.\n" -"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка времени печати." +"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка " +"времени печати." msgstr[1] "" "Следующие строки %s содержат зарезервированные ключевые слова.\n" -"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка времени печати." +"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка " +"времени печати." msgstr[2] "" "Следующие строки %s содержат зарезервированные ключевые слова.\n" -"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка времени печати." +"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка " +"времени печати." msgid "Reserved keywords found" msgstr "Найдены зарезервированные ключевые слова" @@ -5394,10 +5999,9 @@ msgid "Recommended nozzle temperature" msgstr "Рекомендуемая температура сопла" msgid "Recommended nozzle temperature range of this filament. 0 means no set" -msgstr "Рекомендуемый диапазон температуры сопла для данной пластиковой нити. 0 значит не задано." - -msgid "Recommended temperature range" -msgstr "Рекомендуемый диапазон температур" +msgstr "" +"Рекомендуемый диапазон температуры сопла для данной пластиковой нити. 0 " +"значит не задано." msgid "Print temperature" msgstr "Температура печати" @@ -5411,26 +6015,43 @@ msgstr "Температура сопла при печати" msgid "Cool plate" msgstr "Не нагреваемая пластина" -msgid "Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Cool Plate" -msgstr "Температура не подогреваемого стола. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate" +msgstr "" +"Температура не подогреваемого стола. 0 означает, что пластиковая нить не " +"поддерживает печать на этой печатной пластине." msgid "Engineering plate" msgstr "Инженерная пластина" -msgid "Bed temperature when engineering plate is installed. Value 0 means the filament does not support to print on the Engineering Plate" -msgstr "Температура стола при установленной инженерной печатной пластине. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature when engineering plate is installed. Value 0 means the " +"filament does not support to print on the Engineering Plate" +msgstr "" +"Температура стола при установленной инженерной печатной пластине. 0 " +"означает, что пластиковая нить не поддерживает печать на этой печатной " +"пластине." -msgid "High Temp Plate" -msgstr "Высокотемпературная пластина" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" -msgid "Bed temperature when high temperature plate is installed. Value 0 means the filament does not support to print on the High Temp Plate" -msgstr "Температура стола при установленной высокотемпературной печатной пластине. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" +msgstr "" msgid "Textured PEI Plate" msgstr "Текстурированная PEI пластина" -msgid "Bed temperature when Textured PEI Plate is installed. Value 0 means the filament does not support to print on the Textured PEI Plate" -msgstr "Температура стола при установленной текстурированной пластите с PEI покрытием. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" +"Температура стола при установленной текстурированной пластите с PEI " +"покрытием. 0 означает, что пластиковая нить не поддерживает печать на этой " +"печатной пластине." msgid "Volumetric speed limitation" msgstr "Ограничение объёмной скорости" @@ -5447,24 +6068,63 @@ msgstr "Вентилятор обдува модели" msgid "Min fan speed threshold" msgstr "Порог мин. скорости вентилятора" -msgid "Part cooling fan speed will start to run at min speed when the estimated layer time is no longer than the layer time in setting. When layer time is shorter than threshold, fan speed is interpolated between the minimum and maximum fan speed according to layer printing time" -msgstr "Вентилятор для охлаждения моделей начнет работать с минимальной скоростью, когда расчётное время печати слоя не превышает заданное время печати слоя. Если время печати слоя меньше порогового значения, скорость вентилятора интерполируется между минимальной и максимальной скоростью вентилятора в зависимости от времени печати слоя." +msgid "" +"Part cooling fan speed will start to run at min speed when the estimated " +"layer time is no longer than the layer time in setting. When layer time is " +"shorter than threshold, fan speed is interpolated between the minimum and " +"maximum fan speed according to layer printing time" +msgstr "" +"Вентилятор для охлаждения моделей начнет работать с минимальной скоростью, " +"когда расчётное время печати слоя не превышает заданное время печати слоя. " +"Если время печати слоя меньше порогового значения, скорость вентилятора " +"интерполируется между минимальной и максимальной скоростью вентилятора в " +"зависимости от времени печати слоя." msgid "Max fan speed threshold" msgstr "Порог макс. скорости вентилятора" -msgid "Part cooling fan speed will be max when the estimated layer time is shorter than the setting value" -msgstr "Скорость вентилятора для охлаждения детали будет максимальной, если расчётное время печати слоя меньше установленного значения." +msgid "" +"Part cooling fan speed will be max when the estimated layer time is shorter " +"than the setting value" +msgstr "" +"Скорость вентилятора для охлаждения детали будет максимальной, если " +"расчётное время печати слоя меньше установленного значения." msgid "Auxiliary part cooling fan" msgstr "Вспомогательный вентилятор для охлаждения моделей" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "Стартовый G-код прутка" msgid "Filament end G-code" msgstr "Завершающий G-код прутка" +msgid "Multimaterial" +msgstr "Экструдер ММ" + +msgid "Wipe tower parameters" +msgstr "Параметры черновой башни" + +msgid "Toolchange parameters with single extruder MM printers" +msgstr "" +"Параметры смены инструмента в одноэкструдерных мультиматериальных принтерах" + +msgid "Ramming settings" +msgstr "Настройки рэмминга" + +msgid "Toolchange parameters with multi extruder MM printers" +msgstr "" +"Параметры смены инструмента в мультиэкструдерных мультиматериальных принтерах" + msgid "Printable space" msgstr "Область печати" @@ -5496,6 +6156,9 @@ msgstr "G-код выполняемый перед сменой слоя" msgid "Layer change G-code" msgstr "G-код выполняемый при смене слоя" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "G-код выполняемый при смене прутка" @@ -5520,6 +6183,15 @@ msgstr "Ограничение ускорений" msgid "Jerk limitation" msgstr "Ограничение рывка" +msgid "Single extruder multimaterial setup" +msgstr "Мультиматериальный одиночный экструдер" + +msgid "Wipe tower" +msgstr "Черновая башня" + +msgid "Single extruder multimaterial parameters" +msgstr "Параметры мультиматериального одиночного экструдера" + msgid "Layer height limits" msgstr "Ограничение высоты слоя" @@ -5637,24 +6309,34 @@ msgid "Preset \"%1%\" contains the following unsaved changes:" msgstr "Профиль \"%1%\" имеет следующие несохранённые изменения:" #, boost-format -msgid "Preset \"%1%\" is not compatible with the new printer profile and it contains the following unsaved changes:" -msgstr "Профиль \"%1%\" несовместим с новым профилем принтера, и имеет следующие несохранённые изменения:" +msgid "" +"Preset \"%1%\" is not compatible with the new printer profile and it " +"contains the following unsaved changes:" +msgstr "" +"Профиль \"%1%\" несовместим с новым профилем принтера, и имеет следующие " +"несохранённые изменения:" #, boost-format -msgid "Preset \"%1%\" is not compatible with the new process profile and it contains the following unsaved changes:" -msgstr "Профиль \"%1%\" несовместим с новым профилем процесса, и имеет следующие несохранённые изменения:" +msgid "" +"Preset \"%1%\" is not compatible with the new process profile and it " +"contains the following unsaved changes:" +msgstr "" +"Профиль \"%1%\" несовместим с новым профилем процесса, и имеет следующие " +"несохранённые изменения:" #, boost-format msgid "" "You have changed some settings of preset \"%1%\". \n" -"Would you like to keep these changed settings (new value) after switching preset?" +"Would you like to keep these changed settings (new value) after switching " +"preset?" msgstr "" "Вы изменили некоторые параметры профиля \"%1%\". \n" "Хотите сохранить эти изменения (новые значения)?" msgid "" "You have changed some preset settings. \n" -"Would you like to keep these changed settings (new value) after switching preset?" +"Would you like to keep these changed settings (new value) after switching " +"preset?" msgstr "" "Вы изменили некоторые параметры профиля.\n" "Хотите сохранить эти изменения (новые значения)?" @@ -5754,6 +6436,44 @@ msgstr "Текущая конфигурация не требует обновл msgid "Ramming customization" msgstr "Настройки рэмминга" +msgid "" +"Ramming denotes the rapid extrusion just before a tool change in a single-" +"extruder MM printer. Its purpose is to properly shape the end of the " +"unloaded filament so it does not prevent insertion of the new filament and " +"can itself be reinserted later. This phase is important and different " +"materials can require different extrusion speeds to get the good shape. For " +"this reason, the extrusion rates during ramming are adjustable.\n" +"\n" +"This is an expert-level setting, incorrect adjustment will likely lead to " +"jams, extruder wheel grinding into filament etc." +msgstr "" +"Рэмминг (ramming, дословно утрамбовка) означает быстрое экструдирование " +"непосредственно перед сменой инструмента в одноэкструдерном " +"мультиматериальном принтере. Цель процесса состоит в том, чтобы правильно " +"сформировать конец выгружаемого прутка, чтобы он не препятствовал вставке " +"нового прутка или этого же прутка, вставленного позже. Эта фаза важна и " +"разные материалы могут потребовать разных скоростей экструзии, чтобы " +"получить хорошую форму. По этой причине скорость экструзии во время рэмминга " +"регулируется.\n" +"\n" +"Эта опция для опытных пользователей, неправильная настройка может привести к " +"замятию, протиранию прутка приводом экструдера и т.д." + +msgid "Total ramming time" +msgstr "Общее время рэмминга" + +msgid "s" +msgstr "с" + +msgid "Total rammed volume" +msgstr "Общий объём при рэмминге" + +msgid "Ramming line width" +msgstr "Ширина линии при рэмминге" + +msgid "Ramming line spacing" +msgstr "Расстояние между линиями при рэмминге" + msgid "Auto-Calc" msgstr "Авторасчёт" @@ -5795,7 +6515,8 @@ msgid "Login" msgstr "Войти" msgid "The configuration package is changed in previous Config Guide" -msgstr "Пакет конфигурации был изменён при предыдущем запуске мастера настройки." +msgstr "" +"Пакет конфигурации был изменён при предыдущем запуске мастера настройки." msgid "Configuration package changed" msgstr "Пакет конфигурации изменён" @@ -5850,8 +6571,14 @@ msgstr "Shift+A" msgid "Shift+R" msgstr "Shift+R" -msgid "Auto orientates selected objects or all objects.If there are selected objects, it just orientates the selected ones.Otherwise, it will orientates all objects in the current disk." -msgstr "Автоориентация выбранных или всех моделей. При выбранных моделях, ориентируются только они, противном случае ориентируются все модели на текущем столе." +msgid "" +"Auto orientates selected objects or all objects.If there are selected " +"objects, it just orientates the selected ones.Otherwise, it will orientates " +"all objects in the current disk." +msgstr "" +"Автоориентация выбранных или всех моделей. При выбранных моделях, " +"ориентируются только они, противном случае ориентируются все модели на " +"текущем столе." msgid "Shift+Tab" msgstr "Shift+Tab" @@ -5976,9 +6703,6 @@ msgstr "Гизмо рисования шва (FDM)" msgid "Swtich between Prepare/Prewview" msgstr "Переключение между окном подготовки и окном предпросмотра нарезки" -msgid "Switch between Prepare/Prewview" -msgstr "Переключение между окном подготовки и окном предпросмотра нарезки" - msgid "Plater" msgstr "Печатная пластина" @@ -6040,7 +6764,8 @@ msgid "Horizontal slider - Move active thumb Right" msgstr "Горизонтальный ползунок - Сдвинуть активный ползунок вправо" msgid "On/Off one layer mode of the vertical slider" -msgstr "Включение/Отключение функции «Режим одного слоя» у вертикального ползунка" +msgstr "" +"Включение/Отключение функции «Режим одного слоя» у вертикального ползунка" msgid "On/Off g-code window" msgstr "Показать/скрыть окно отображения G-кода" @@ -6061,8 +6786,10 @@ msgstr "Информация об обновлении версии %s :" msgid "Network plug-in update" msgstr "Обновление сетевого плагина" -msgid "Click OK to update the Network plug-in when Bambu Studio launches next time." -msgstr "Нажмите OK, чтобы обновить сетевой плагин при следующем запуске Bambu Studio." +msgid "" +"Click OK to update the Network plug-in when Bambu Studio launches next time." +msgstr "" +"Нажмите OK, чтобы обновить сетевой плагин при следующем запуске Bambu Studio." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -6077,11 +6804,18 @@ msgstr "Больше не напоминай об этой версии" msgid "LAN Connection Failed (Sending print file)" msgstr "Сбой подключения к локальной сети (отправка файла на печать)" -msgid "Step 1, please confirm Bambu Studio and your printer are in the same LAN." -msgstr "Шаг 1. Пожалуйста, убедитесь, что Bambu Studio и ваш принтер находятся в одной локальной сети." +msgid "" +"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +msgstr "" +"Шаг 1. Пожалуйста, убедитесь, что Bambu Studio и ваш принтер находятся в " +"одной локальной сети." -msgid "Step 2, if the IP and Access Code below are different from the actual values on your printer, please correct them." -msgstr "Шаг 2. Если приведенный ниже IP-адрес и код доступа отличаются от фактических значений на вашем принтере, пожалуйста, исправьте их." +msgid "" +"Step 2, if the IP and Access Code below are different from the actual values " +"on your printer, please correct them." +msgstr "" +"Шаг 2. Если приведенный ниже IP-адрес и код доступа отличаются от " +"фактических значений на вашем принтере, пожалуйста, исправьте их." msgid "IP" msgstr "IP" @@ -6125,14 +6859,30 @@ msgstr "Сбой при обновлении" msgid "Updating successful" msgstr "Обновление успешно выполнено" -msgid "Are you sure you want to update? This will take about 10 minutes. Do not turn off the power while the printer is updating." -msgstr "Вы уверены, что хотите обновить? Это займёт около 10 минут. Не выключайте питание во время обновления принтера." +msgid "" +"Are you sure you want to update? This will take about 10 minutes. Do not " +"turn off the power while the printer is updating." +msgstr "" +"Вы уверены, что хотите обновить? Это займёт около 10 минут. Не выключайте " +"питание во время обновления принтера." -msgid "An important update was detected and needs to be run before printing can continue. Do you want to update now? You can also update later from 'Upgrade firmware'." -msgstr "Было обнаружено важное обновление, которое необходимо установить перед продолжением печати. Хотите обновиться сейчас? Обновление можно выполнить и позже, нажав «Обновить прошивку»." +msgid "" +"An important update was detected and needs to be run before printing can " +"continue. Do you want to update now? You can also update later from 'Upgrade " +"firmware'." +msgstr "" +"Было обнаружено важное обновление, которое необходимо установить перед " +"продолжением печати. Хотите обновиться сейчас? Обновление можно выполнить и " +"позже, нажав «Обновить прошивку»." -msgid "The firmware version is abnormal. Repairing and updating are required before printing. Do you want to update now? You can also update later on printer or update next time starting the studio." -msgstr "Ошибка в версии прошивки. Перед печатью её необходимо исправить и обновить. Хотите обновить сейчас? Вы можете сделать это позже с принтера или при следующем запуске программы." +msgid "" +"The firmware version is abnormal. Repairing and updating are required before " +"printing. Do you want to update now? You can also update later on printer or " +"update next time starting the studio." +msgstr "" +"Ошибка в версии прошивки. Перед печатью её необходимо исправить и обновить. " +"Хотите обновить сейчас? Вы можете сделать это позже с принтера или при " +"следующем запуске программы." msgid "Extension Board" msgstr "Плата расширения" @@ -6190,7 +6940,8 @@ msgid "Copying of file %1% to %2% failed: %3%" msgstr "Не удалось скопировать файл %1% в %2%: %3%" msgid "Need to check the unsaved changes before configuration updates." -msgstr "Перед обновлением конфигурации необходимо проверить несохранённые изменения." +msgstr "" +"Перед обновлением конфигурации необходимо проверить несохранённые изменения." msgid "Configuration package updated to " msgstr "Пакет конфигурации обновлён до" @@ -6198,8 +6949,12 @@ msgstr "Пакет конфигурации обновлён до" msgid "Open G-code file:" msgstr "Выберите G-код файл:" -msgid "One object has empty initial layer and can't be printed. Please Cut the bottom or enable supports." -msgstr "Одна модель имеет пустой начальный слой и не может быть напечатана. Пожалуйста, обрежьте нижнюю часть или включите поддержки." +msgid "" +"One object has empty initial layer and can't be printed. Please Cut the " +"bottom or enable supports." +msgstr "" +"Одна модель имеет пустой начальный слой и не может быть напечатана. " +"Пожалуйста, обрежьте нижнюю часть или включите поддержки." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." @@ -6209,8 +6964,12 @@ msgstr "Модель не может быть напечатан из-за пу msgid "Object: %1%" msgstr "Модель: %1%" -msgid "Maybe parts of the object at these height are too thin, or the object has faulty mesh" -msgstr "Возможно, части модели на этой высоте слишком тонкие, или она имеет дефектную сетку." +msgid "" +"Maybe parts of the object at these height are too thin, or the object has " +"faulty mesh" +msgstr "" +"Возможно, части модели на этой высоте слишком тонкие, или она имеет " +"дефектную сетку." msgid "No object can be printed. Maybe too small" msgstr "Печать моделей невозможна. Возможно, они слишком маленькие." @@ -6218,10 +6977,14 @@ msgstr "Печать моделей невозможна. Возможно, он msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" -msgstr "Не удалось сгенерировать G-код из-за недопустимого пользовательского G-кода.\n" +msgstr "" +"Не удалось сгенерировать G-код из-за недопустимого пользовательского G-" +"кода.\n" msgid "Please check the custom G-code or use the default custom G-code." -msgstr "Пожалуйста, проверьте пользовательский G-код или используйте пользовательский G-код по умолчанию." +msgstr "" +"Пожалуйста, проверьте пользовательский G-код или используйте " +"пользовательский G-код по умолчанию." #, boost-format msgid "Generating G-code: layer %1%" @@ -6268,7 +7031,13 @@ msgstr "Множитель" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " -msgstr "Не удалось вычислить ширину линии %1%. Не удается получить значение \"%2%\". " +msgstr "" +"Не удалось вычислить ширину линии %1%. Не удается получить значение \"%2%\". " + +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" msgid "undefined error" msgstr "неопределённая ошибка" @@ -6364,67 +7133,134 @@ msgid "write callback failed" msgstr "ошибка записи функции обратного вызова" #, boost-format -msgid "%1% is too close to exclusion area, there may be collisions when printing." -msgstr "%1% находится слишком близко к области исключения, что может привести к столкновению при печати." +msgid "" +"%1% is too close to exclusion area, there may be collisions when printing." +msgstr "" +"%1% находится слишком близко к области исключения, что может привести к " +"столкновению при печати." #, boost-format msgid "%1% is too close to others, and collisions may be caused." -msgstr "%1% находится слишком близко к другим, что может привести к столкновению." +msgstr "" +"%1% находится слишком близко к другим, что может привести к столкновению." #, boost-format msgid "%1% is too tall, and collisions will be caused." msgstr "%1% слишком высокий, что может привести к столкновению." msgid " is too close to others, there may be collisions when printing." -msgstr " находится слишком близко к другим моделям, что может привести к столкновению при печати." +msgstr "" +" находится слишком близко к другим моделям, что может привести к " +"столкновению при печати." msgid " is too close to exclusion area, there may be collisions when printing." -msgstr " находится слишком близко к области исключения, что может привести к столкновению при печати." +msgstr "" +" находится слишком близко к области исключения, что может привести к " +"столкновению при печати." msgid "Prime Tower" msgstr "Черновая башня" msgid " is too close to others, and collisions may be caused.\n" -msgstr " находится слишком близко к другим моделям, что может привести к столкновению.\n" +msgstr "" +" находится слишком близко к другим моделям, что может привести к " +"столкновению.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr " находится слишком близко к области исключения, что может привести к столкновению.\n" +msgstr "" +" находится слишком близко к области исключения, что может привести к " +"столкновению.\n" -msgid "Can not print multiple filaments which have large difference of temperature together. Otherwise, the extruder and nozzle may be blocked or damaged during printing" -msgstr "Не допускается совместная печать несколькими материалами, имеющими большую разницу в температуре печати. Это может привести к засорению и повреждению сопла и экструдера." +msgid "" +"Can not print multiple filaments which have large difference of temperature " +"together. Otherwise, the extruder and nozzle may be blocked or damaged " +"during printing" +msgstr "" +"Не допускается совместная печать несколькими материалами, имеющими большую " +"разницу в температуре печати. Это может привести к засорению и повреждению " +"сопла и экструдера." msgid "No extrusions under current settings." msgstr "При текущих настройках экструзия отсутствует." -msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." -msgstr "Плавный режим таймлапса не поддерживается, когда включена последовательность печати моделей по очереди." +msgid "" +"Smooth mode of timelapse is not supported when \"by object\" sequence is " +"enabled." +msgstr "" +"Плавный режим таймлапса не поддерживается, когда включена последовательность " +"печати моделей по очереди." -msgid "Please select \"By object\" print sequence to print multiple objects in spiral vase mode." -msgstr "Выберите последовательность печати «По очереди», для поддержки печати несколько моделей в режиме спиральной вазы." +msgid "" +"Please select \"By object\" print sequence to print multiple objects in " +"spiral vase mode." +msgstr "" +"Выберите последовательность печати «По очереди», для поддержки печати " +"несколько моделей в режиме спиральной вазы." -msgid "The spiral vase mode does not work when an object contains more than one materials." -msgstr "Режим «Спиральная ваза» не работает, когда модель печатается несколькими материалами." +msgid "" +"The spiral vase mode does not work when an object contains more than one " +"materials." +msgstr "" +"Режим «Спиральная ваза» не работает, когда модель печатается несколькими " +"материалами." + +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" msgid "The prime tower is not supported in \"By object\" print." msgstr "Черновая башня не поддерживается при печати в режиме «По очереди»." -msgid "The prime tower is not supported when adaptive layer height is on. It requires that all objects have the same layer height." -msgstr "Черновой башни не поддерживается, когда включена функция переменной высоты слоя. Требуется, чтобы все модели имели одинаковую высоту слоя." +msgid "" +"The prime tower is not supported when adaptive layer height is on. It " +"requires that all objects have the same layer height." +msgstr "" +"Черновой башни не поддерживается, когда включена функция переменной высоты " +"слоя. Требуется, чтобы все модели имели одинаковую высоту слоя." msgid "The prime tower requires \"support gap\" to be multiple of layer height" -msgstr "Для черновой башни требуется, чтобы зазор поддержки был кратен высоте слоя." +msgstr "" +"Для черновой башни требуется, чтобы зазор поддержки был кратен высоте слоя." msgid "The prime tower requires that all objects have the same layer heights" -msgstr "Для использования черновой башни требуется, чтобы у всех моделей была одинаковая высота слоя." +msgstr "" +"Для использования черновой башни требуется, чтобы у всех моделей была " +"одинаковая высота слоя." -msgid "The prime tower requires that all objects are printed over the same number of raft layers" -msgstr "Для черновой башни требуется, чтобы все модели были напечатаны на одинаковом количестве слоёв подложки." +msgid "" +"The prime tower requires that all objects are printed over the same number " +"of raft layers" +msgstr "" +"Для черновой башни требуется, чтобы все модели были напечатаны на одинаковом " +"количестве слоёв подложки." -msgid "The prime tower requires that all objects are sliced with the same layer heights." -msgstr "Для использования черновой башни требуется, чтобы все модели были нарезаны с одинаковой высотой слоя." +msgid "" +"The prime tower requires that all objects are sliced with the same layer " +"heights." +msgstr "" +"Для использования черновой башни требуется, чтобы все модели были нарезаны с " +"одинаковой высотой слоя." -msgid "The prime tower is only supported if all objects have the same variable layer height" -msgstr "Для черновой башни требуется, чтобы все модели имели одинаковую переменную высоту слоя." +msgid "" +"The prime tower is only supported if all objects have the same variable " +"layer height" +msgstr "" +"Для черновой башни требуется, чтобы все модели имели одинаковую переменную " +"высоту слоя." msgid "Too small line width" msgstr "Слишком маленькая ширина экструзии" @@ -6432,38 +7268,67 @@ msgstr "Слишком маленькая ширина экструзии" msgid "Too large line width" msgstr "Слишком большая ширина экструзии" -msgid "The prime tower requires that support has the same layer height with object." -msgstr "Для черновой башни требуется, чтобы поддержка и модель имели одинаковую высоту слоя." - -msgid "Tree supports" -msgstr "Древовидная поддержка" +msgid "" +"The prime tower requires that support has the same layer height with object." +msgstr "" +"Для черновой башни требуется, чтобы поддержка и модель имели одинаковую " +"высоту слоя." # ??? -msgid "Organic support tree tip diameter must not be smaller than support material extrusion width." -msgstr "Диаметр кончика ветки органической поддержки не должен быть меньше значения ширины экструзии поддержки." +msgid "" +"Organic support tree tip diameter must not be smaller than support material " +"extrusion width." +msgstr "" +"Диаметр кончика ветки органической поддержки не должен быть меньше значения " +"ширины экструзии поддержки." # ??? -msgid "Organic support branch diameter must not be smaller than 2x support material extrusion width." -msgstr "Диаметр ветки органической поддержки должен быть хотя бы в два раза больше значения ширины экструзии поддержки." +msgid "" +"Organic support branch diameter must not be smaller than 2x support material " +"extrusion width." +msgstr "" +"Диаметр ветки органической поддержки должен быть хотя бы в два раза больше " +"значения ширины экструзии поддержки." # ??? -msgid "Organic support branch diameter must not be smaller than support tree tip diameter." -msgstr "Диаметр ветвей органической поддержки должен быть больше диаметра кончика ветки." +msgid "" +"Organic support branch diameter must not be smaller than support tree tip " +"diameter." +msgstr "" +"Диаметр ветвей органической поддержки должен быть больше диаметра кончика " +"ветки." -msgid "Support enforcers are used but support is not enabled. Please enable support." -msgstr "Используется принудительная поддержка, но её генерация не включена. Пожалуйста, включите генерацию поддержки в настройках слайсера." +msgid "" +"Support enforcers are used but support is not enabled. Please enable support." +msgstr "" +"Используется принудительная поддержка, но её генерация не включена. " +"Пожалуйста, включите генерацию поддержки в настройках слайсера." msgid "Layer height cannot exceed nozzle diameter" msgstr "Высота слоя не может быть больше диаметра сопла" -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." +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." -msgid "\"G92 E0\" was found in before_layer_gcode, which is incompatible with absolute extruder addressing." -msgstr "В before_layer_gcode была найдена команда \"G92 E0\", которая несовместима с абсолютной адресацией экструдера." +msgid "" +"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " +"absolute extruder addressing." +msgstr "" +"В before_layer_gcode была найдена команда \"G92 E0\", которая несовместима с " +"абсолютной адресацией экструдера." -msgid "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute extruder addressing." -msgstr "В layer_gcode была найдена команда \"G92 E0\", которая несовместима с абсолютной адресацией экструдера." +msgid "" +"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " +"extruder addressing." +msgstr "" +"В layer_gcode была найдена команда \"G92 E0\", которая несовместима с " +"абсолютной адресацией экструдера." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" @@ -6487,8 +7352,15 @@ msgstr "Область печати" msgid "Bed exclude area" msgstr "Область исключения" -msgid "Unprintable area in XY plane. For example, X1 Series printers use the front left corner to cut filament during filament change. The area is expressed as polygon by points in following format: \"XxY, XxY, ...\"" -msgstr "Непечатаемая область в плоскости XY. Например, в принтерах серии X1 передний левый угол используется для обрезания материала при его замене. Область выражается в виде многоугольника по точкам в следующем формате: \"XxY, XxY, ...\"" +msgid "" +"Unprintable area in XY plane. For example, X1 Series printers use the front " +"left corner to cut filament during filament change. The area is expressed as " +"polygon by points in following format: \"XxY, XxY, ...\"" +msgstr "" +"Непечатаемая область в плоскости XY. Например, в принтерах серии X1 передний " +"левый угол используется для обрезания материала при его замене. Область " +"выражается в виде многоугольника по точкам в следующем формате: \"XxY, " +"XxY, ...\"" msgid "Bed custom texture" msgstr "Пользовательская текстура стола" @@ -6499,11 +7371,19 @@ msgstr "Пользовательская модель стола" msgid "Elephant foot compensation" msgstr "Компенсация расширения первого слоя" -msgid "Shrink the initial layer on build plate to compensate for elephant foot effect" -msgstr "Уменьшение первого слоя в плоскости XY на заданное значение, чтобы компенсировать эффект слоновьей ноги." +msgid "" +"Shrink the initial layer on build plate to compensate for elephant foot " +"effect" +msgstr "" +"Уменьшение первого слоя в плоскости XY на заданное значение, чтобы " +"компенсировать эффект слоновьей ноги." -msgid "Slicing height for each layer. Smaller layer height means more accurate and more printing time" -msgstr "Высота каждого слоя. Чем меньше значение, тем лучше качество, но требуется больше времени для печати, и наоборот." +msgid "" +"Slicing height for each layer. Smaller layer height means more accurate and " +"more printing time" +msgstr "" +"Высота каждого слоя. Чем меньше значение, тем лучше качество, но требуется " +"больше времени для печати, и наоборот." msgid "Printable height" msgstr "Высота печати" @@ -6517,20 +7397,37 @@ msgstr "Имена профиля принтера" msgid "Hostname, IP or URL" msgstr "Имя хоста, IP/URL-адрес" -msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance. Print host behind HAProxy with basic auth enabled can be accessed by putting the user name and password into the URL in the following format: https://username:password@your-octopi-address/" -msgstr "Slic3r может загружать файл G-кода на хост принтера. В этом поле нужно указать имя хоста, IP-адрес или URL-адрес хост-экземпляра печати. Доступ к узлу печати на основе HAProxy с включенной базовой аутентификацией можно получить, указав имя пользователя и пароль в поле URL-адрес в следующем формате: https://username:password@your-octopi-address" +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the hostname, IP address or URL of the printer host instance. Print host " +"behind HAProxy with basic auth enabled can be accessed by putting the user " +"name and password into the URL in the following format: https://username:" +"password@your-octopi-address/" +msgstr "" +"Slic3r может загружать файл G-кода на хост принтера. В этом поле нужно " +"указать имя хоста, IP-адрес или URL-адрес хост-экземпляра печати. Доступ к " +"узлу печати на основе HAProxy с включенной базовой аутентификацией можно " +"получить, указав имя пользователя и пароль в поле URL-адрес в следующем " +"формате: https://username:password@your-octopi-address" msgid "Device UI" msgstr "URL-адрес хоста" -msgid "Specify the URL of your device user interface if it's not same as print_host" -msgstr "Укажите URL-адрес пользовательского интерфейса вашего устройства, если он не совпадает с print_host" +msgid "" +"Specify the URL of your device user interface if it's not same as print_host" +msgstr "" +"Укажите URL-адрес пользовательского интерфейса вашего устройства, если он не " +"совпадает с print_host" msgid "API Key / Password" msgstr "API-ключ/Пароль" -msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." -msgstr "Slic3r может загружать файл G-кода на хост принтера. Это поле должно содержать API ключ или пароль, необходимые для проверки подлинности." +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the API Key or the password required for authentication." +msgstr "" +"Slic3r может загружать файл G-кода на хост принтера. Это поле должно " +"содержать API ключ или пароль, необходимые для проверки подлинности." msgid "Name of the printer" msgstr "Название принтера" @@ -6538,8 +7435,14 @@ msgstr "Название принтера" msgid "HTTPS CA File" msgstr "Файл корневого сертификата HTTPS" -msgid "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left blank, the default OS CA certificate repository is used." -msgstr "Для подключений по HTTPS к OctoPrint укажите пользовательский файл корневого сертификата в формате crt/pem. Если оставить поле пустым, будет использоваться хранилище сертификатов ОС по умолчанию." +msgid "" +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." +msgstr "" +"Для подключений по HTTPS к OctoPrint укажите пользовательский файл корневого " +"сертификата в формате crt/pem. Если оставить поле пустым, будет " +"использоваться хранилище сертификатов ОС по умолчанию." msgid "User" msgstr "Пользователь" @@ -6550,8 +7453,14 @@ msgstr "Пароль" msgid "Ignore HTTPS certificate revocation checks" msgstr "Игнорировать проверки отзыва HTTPS сертификата" -msgid "Ignore HTTPS certificate revocation checks in case of missing or offline distribution points. One may want to enable this option for self signed certificates if connection fails." -msgstr "Игнорировать проверки отзыва HTTPS сертификата в случае его отсутствия или автономности точек распространения. Можно включить эту опцию для самоподписанных сертификатов в случае сбоя подключения." +msgid "" +"Ignore HTTPS certificate revocation checks in case of missing or offline " +"distribution points. One may want to enable this option for self signed " +"certificates if connection fails." +msgstr "" +"Игнорировать проверки отзыва HTTPS сертификата в случае его отсутствия или " +"автономности точек распространения. Можно включить эту опцию для " +"самоподписанных сертификатов в случае сбоя подключения." msgid "Names of presets related to the physical printer" msgstr "Имена профилей, связанных с физическим принтером" @@ -6569,13 +7478,24 @@ msgid "Avoid crossing wall" msgstr "Избегать пересечения периметров" msgid "Detour and avoid to travel across wall which may cause blob on surface" -msgstr "Объезжать и избегать пересечения периметров, для предотвращения образования дефектов на поверхности модели." +msgstr "" +"Объезжать и избегать пересечения периметров, для предотвращения образования " +"дефектов на поверхности модели." msgid "Avoid crossing wall - Max detour length" msgstr "Избегать пересечения периметров - Макс. длина обхода" -msgid "Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is large than this value. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. Zero to disable" -msgstr "Максимальное расстояние обхода сопла от модели во избежание пересечения периметров при движении. Если расстояние обхода превышает это значение, то для данного маршрута эта опция не применяется. Длина обхода может быть задана как в абсолютном значении, так и в процентах (например, 50%) от прямого пути перемещения. 0 - отключено." +msgid "" +"Maximum detour distance for avoiding crossing wall. Don't detour if the " +"detour distance is large than this value. Detour length could be specified " +"either as an absolute value or as percentage (for example 50%) of a direct " +"travel path. Zero to disable" +msgstr "" +"Максимальное расстояние обхода сопла от модели во избежание пересечения " +"периметров при движении. Если расстояние обхода превышает это значение, то " +"для данного маршрута эта опция не применяется. Длина обхода может быть " +"задана как в абсолютном значении, так и в процентах (например, 50%) от " +"прямого пути перемещения. 0 - отключено." msgid "mm or %" msgstr "мм или %" @@ -6583,20 +7503,36 @@ msgstr "мм или %" msgid "Other layers" msgstr "Последующие слои" -msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Cool Plate" -msgstr "Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Cool Plate" +msgstr "" +"Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая " +"нить не поддерживает печать на этой печатной пластине." msgid "°C" msgstr "°C" -msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Engineering Plate" -msgstr "Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Engineering Plate" +msgstr "" +"Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая " +"нить не поддерживает печать на этой печатной пластине." -msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the High Temp Plate" -msgstr "Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the High Temp Plate" +msgstr "" +"Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая " +"нить не поддерживает печать на этой печатной пластине." -msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Textured PEI Plate" -msgstr "Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" +"Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая " +"нить не поддерживает печать на этой печатной пластине." msgid "Initial layer" msgstr "Первый слой" @@ -6604,17 +7540,33 @@ msgstr "Первый слой" msgid "Initial layer bed temperature" msgstr "Температура стола для первого слоя" -msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Cool Plate" -msgstr "Температура стола для первого слоя. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Cool Plate" +msgstr "" +"Температура стола для первого слоя. 0 означает, что пластиковая нить не " +"поддерживает печать на этой печатной пластине." -msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Engineering Plate" -msgstr "Температура стола для первого слоя. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Engineering Plate" +msgstr "" +"Температура стола для первого слоя. 0 означает, что пластиковая нить не " +"поддерживает печать на этой печатной пластине." -msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the High Temp Plate" -msgstr "Температура стола для первого слоя. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the High Temp Plate" +msgstr "" +"Температура стола для первого слоя. 0 означает, что пластиковая нить не " +"поддерживает печать на этой печатной пластине." -msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Textured PEI Plate" -msgstr "Температура стола для первого слоя. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" +"Температура стола для первого слоя. 0 означает, что пластиковая нить не " +"поддерживает печать на этой печатной пластине." msgid "Bed types supported by the printer" msgstr "Типы столов, поддерживаемые принтером" @@ -6629,106 +7581,192 @@ msgid "First layer print sequence" msgstr "Последовательность печати первого слоя" msgid "This G-code is inserted at every layer change before lifting z" -msgstr "Этот G-код вставляется при каждой смене слоя, непосредственно перед перемещения оси Z." +msgstr "" +"Этот G-код вставляется при каждой смене слоя, непосредственно перед " +"перемещения оси Z." msgid "Bottom shell layers" msgstr "Сплошных слоёв снизу" -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 "Количество сплошных слоёв при печати нижней поверхности модели, включая нижний поверхностный слой. Если толщина, рассчитанная с помощью этого значения, меньше толщины оболочки снизу, количество слоёв оболочки снизу будет увеличено." +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 "" +"Количество сплошных слоёв при печати нижней поверхности модели, включая " +"нижний поверхностный слой. Если толщина, рассчитанная с помощью этого " +"значения, меньше толщины оболочки снизу, количество слоёв оболочки снизу " +"будет увеличено." msgid "Bottom shell thickness" msgstr "Толщина оболочки снизу" -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 shell when layer height is small. 0 means that this setting is disabled and thickness of bottom shell is absolutely determained by bottom shell layers" +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 shell when layer height is small. 0 means that this setting " +"is disabled and thickness of bottom shell is absolutely determained by " +"bottom shell layers" msgstr "" -"Минимальная толщина оболочки снизу в мм. Если толщина оболочки, рассчитанная по количеству сплошных слоёв снизу, меньше этого значения, количество сплошных слоёв снизу будет автоматически увеличено при нарезке, для удовлетворения минимальной толщины оболочки. Это позволяет избежать слишком тонкой оболочки при небольшой высоте слоя. 0 означает, что этот параметр отключён, а толщина оболочки " -"снизу полностью задаётся количеством сплошных слоёв снизу." +"Минимальная толщина оболочки снизу в мм. Если толщина оболочки, рассчитанная " +"по количеству сплошных слоёв снизу, меньше этого значения, количество " +"сплошных слоёв снизу будет автоматически увеличено при нарезке, для " +"удовлетворения минимальной толщины оболочки. Это позволяет избежать слишком " +"тонкой оболочки при небольшой высоте слоя. 0 означает, что этот параметр " +"отключён, а толщина оболочки снизу полностью задаётся количеством сплошных " +"слоёв снизу." msgid "Force cooling for overhang and bridge" msgstr "Принудительный обдув навесов и мостов" -msgid "Enable this option to optimize part cooling fan speed for overhang and bridge to get better cooling" -msgstr "Включите, чтобы оптимизировать скорость вентилятора охлаждения моделей для нависаний и мостов для обеспечения лучшего их охлаждения." +msgid "" +"Enable this option to optimize part cooling fan speed for overhang and " +"bridge to get better cooling" +msgstr "" +"Включите, чтобы оптимизировать скорость вентилятора охлаждения моделей для " +"нависаний и мостов для обеспечения лучшего их охлаждения." msgid "Fan speed for overhang" msgstr "Скорость вентилятора на нависанияx" -msgid "Force part cooling fan to be this speed when printing bridge or overhang wall which has large overhang degree. Forcing cooling for overhang and bridge can get better quality for these part" -msgstr "Заставляет вентилятор обдува модели работать на этой скорости при печати мостов или нависающих периметров, имеющих большую степень свеса. Принудительное охлаждение позволяет повысить качество печати этих частей." +msgid "" +"Force part cooling fan to be this speed when printing bridge or overhang " +"wall which has large overhang degree. Forcing cooling for overhang and " +"bridge can get better quality for these part" +msgstr "" +"Заставляет вентилятор обдува модели работать на этой скорости при печати " +"мостов или нависающих периметров, имеющих большую степень свеса. " +"Принудительное охлаждение позволяет повысить качество печати этих частей." msgid "Cooling overhang threshold" msgstr "Порог включения обдува на нависаниях" -#, c-format -msgid "Force cooling fan to be specific speed when overhang degree of printed part exceeds this value. Expressed as percentage which indicides how much width of the line without support from lower layer. 0% means forcing cooling for all outer wall no matter how much overhang degree" -msgstr "Принудительное включение вентилятора обдува модели на определенную скорость, если степень нависания печатаемой части превышает данное значение. Выражается в процентах и показывает, насколько велика ширина периметра без поддержки со стороны нижнего слоя. 0% означает принудительное охлаждение всего внешнего периметра независимо от величина свеса." +#, fuzzy, c-format +msgid "" +"Force cooling fan to be specific speed when overhang degree of printed part " +"exceeds this value. Expressed as percentage which indicides how much width " +"of the line without support from lower layer. 0% means forcing cooling for " +"all outer wall no matter how much overhang degree" +msgstr "" +"Принудительное включение вентилятора обдува модели на определенную скорость, " +"если степень нависания печатаемой части превышает данное значение. " +"Выражается в процентах и показывает, насколько велика ширина периметра без " +"поддержки со стороны нижнего слоя. 0% означает принудительное охлаждение " +"всего внешнего периметра независимо от величина свеса." msgid "Bridge infill direction" msgstr "Угол печати мостов" -msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for external bridges. Use 180°for zero angle." -msgstr "Переопределение угла печати мостов. Если задано 0, угол печати мостов рассчитывается автоматически. В противном случае заданный угол будет использоваться для наружных мостов. Для нулевого угла установите 180°." +msgid "" +"Bridging angle override. If left to zero, the bridging angle will be " +"calculated automatically. Otherwise the provided angle will be used for " +"external bridges. Use 180°for zero angle." +msgstr "" +"Переопределение угла печати мостов. Если задано 0, угол печати мостов " +"рассчитывается автоматически. В противном случае заданный угол будет " +"использоваться для наружных мостов. Для нулевого угла установите 180°." msgid "Bridge density" msgstr "Плотность мостов" msgid "Density of external bridges. 100% means solid bridge. Default is 100%." -msgstr "Плотность наружных мостов. 100% - сплошной мост. По умолчанию задано 100%." +msgstr "" +"Плотность наружных мостов. 100% - сплошной мост. По умолчанию задано 100%." msgid "Bridge flow" msgstr "Поток при печати мостов" -msgid "Decrease this value slightly(for example 0.9) to reduce the amount of material for bridge, to improve sag" -msgstr "Параметр задаёт количество пластика, затрачиваемое для построения мостов. В большинстве случаев настроек по умолчанию достаточно, тем не менее, при печати некоторых моделей уменьшение параметра может сократить провисание пластика при печати мостов." +msgid "" +"Decrease this value slightly(for example 0.9) to reduce the amount of " +"material for bridge, to improve sag" +msgstr "" +"Параметр задаёт количество пластика, затрачиваемое для построения мостов. В " +"большинстве случаев настроек по умолчанию достаточно, тем не менее, при " +"печати некоторых моделей уменьшение параметра может сократить провисание " +"пластика при печати мостов." msgid "Top surface flow ratio" msgstr "Коэффициент потока на верхней поверхности" -msgid "This factor affects the amount of material for top solid infill. You can decrease it slightly to have smooth surface finish" -msgstr "Этот параметр задаёт количество выдавливаемого материала для верхнего сплошного слоя заполнения. Вы можете немного уменьшить его, чтобы получить более гладкую поверхность." +msgid "" +"This factor affects the amount of material for top solid infill. You can " +"decrease it slightly to have smooth surface finish" +msgstr "" +"Этот параметр задаёт количество выдавливаемого материала для верхнего " +"сплошного слоя заполнения. Вы можете немного уменьшить его, чтобы получить " +"более гладкую поверхность." msgid "Bottom surface flow ratio" msgstr "Коэффициент потока на нижней поверхности" msgid "This factor affects the amount of material for bottom solid infill" -msgstr "Этот параметр задаёт количество выдавливаемого материала для нижнего сплошного слоя заполнения." +msgstr "" +"Этот параметр задаёт количество выдавливаемого материала для нижнего " +"сплошного слоя заполнения." msgid "Precise wall(experimental)" msgstr "Точные периметры (экспериментально)" -msgid "Improve shell precision by adjusting outer wall spacing. This also improves layer consistency." -msgstr "Повышение точности оболочки за счет регулировки расстояния между внешними стенками. Это также позволяет уменьшить расслоение слоёв." +msgid "" +"Improve shell precision by adjusting outer wall spacing. This also improves " +"layer consistency." +msgstr "" +"Повышение точности оболочки за счет регулировки расстояния между внешними " +"стенками. Это также позволяет уменьшить расслоение слоёв." msgid "Only one wall on top surfaces" msgstr "Только один периметр на верхней поверхности" -msgid "Use only one wall on flat top surface, to give more space to the top infill pattern" -msgstr "Печатать только один периметр на верхней поверхности, чтобы оставить больше пространства для верхнего шаблона заполнения." +msgid "" +"Use only one wall on flat top surface, to give more space to the top infill " +"pattern" +msgstr "" +"Печатать только один периметр на верхней поверхности, чтобы оставить больше " +"пространства для верхнего шаблона заполнения." msgid "One wall threshold" msgstr "Порог одного периметра" -#, c-format, boost-format +#, fuzzy, c-format, 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 is you have some thin features on the next layer, like letters. Set this setting to 0 to remove these artifacts." +"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 is you have some thin features " +"on the next layer, like letters. Set this setting to 0 to remove these " +"artifacts." msgstr "" -"Если должна быть напечатана верхняя поверхность и частично покрыта другим слоем, она не будет рассматриваться как верхний слой, ширина которого ниже этого значения. Это может быть полезно, чтобы не допустить срабатывания функции «Только один периметр на верхней поверхности» на поверхности, которая должна быть покрыта только периметрами. Это значение может быть задано в мм или % от ширины " -"экструзии периметра.\n" -"Предупреждение: если этот параметр включён, то могут возникнуть артефакты, если у вас на следующем слое имеются какие-то тонкие элементы, например, буквы. Установите значение 0, чтобы убрать эти артефакты." +"Если должна быть напечатана верхняя поверхность и частично покрыта другим " +"слоем, она не будет рассматриваться как верхний слой, ширина которого ниже " +"этого значения. Это может быть полезно, чтобы не допустить срабатывания " +"функции «Только один периметр на верхней поверхности» на поверхности, " +"которая должна быть покрыта только периметрами. Это значение может быть " +"задано в мм или % от ширины экструзии периметра.\n" +"Предупреждение: если этот параметр включён, то могут возникнуть артефакты, " +"если у вас на следующем слое имеются какие-то тонкие элементы, например, " +"буквы. Установите значение 0, чтобы убрать эти артефакты." msgid "Only one wall on first layer" msgstr "Только один периметр на первом слое" -msgid "Use only one wall on first layer, to give more space to the bottom infill pattern" -msgstr "Печатать только один периметр на первом слое, чтобы оставить больше пространства для нижнего шаблона заполнения." +msgid "" +"Use only one wall on first layer, to give more space to the bottom infill " +"pattern" +msgstr "" +"Печатать только один периметр на первом слое, чтобы оставить больше " +"пространства для нижнего шаблона заполнения." msgid "Extra perimeters on overhangs" msgstr "Дополнительные периметры на нависаниях" -msgid "Create additional perimeter paths over steep overhangs and areas where bridges cannot be anchored. " -msgstr "Создание дополнительных дорожек по периметру над крутыми нависаниями и участками, где мосты не могут быть закреплены." +msgid "" +"Create additional perimeter paths over steep overhangs and areas where " +"bridges cannot be anchored. " +msgstr "" +"Создание дополнительных дорожек по периметру над крутыми нависаниями и " +"участками, где мосты не могут быть закреплены." msgid "Classic mode" msgstr "Классический режим" @@ -6742,6 +7780,14 @@ msgstr "Замедляться при печати нависаний" msgid "Enable this option to slow printing down for different overhang degree" msgstr "Включение динамического управления скоростью печати нависаний." +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "мм/с или %" @@ -6757,8 +7803,12 @@ msgstr "мм/с" msgid "Internal" msgstr "Внутренние" -msgid "Speed of internal bridge. 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%." +msgid "" +"Speed of internal bridge. 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%." msgid "Brim width" msgstr "Ширина каймы" @@ -6769,16 +7819,20 @@ msgstr "Расстояние от модели до внешней линии к msgid "Brim type" msgstr "Тип каймы" -msgid "This controls the generation of the brim at outer and/or inner side of models. Auto means the brim width is analysed and calculated automatically." -msgstr "Этот параметр управляет формированием каймы на внешней/внутренней стороне моделей. Авто означает, что ширина каймы анализируется и рассчитывается автоматически." - -msgid "Mouse ear" -msgstr "Мышиные ушки" +msgid "" +"This controls the generation of the brim at outer and/or inner side of " +"models. Auto means the brim width is analysed and calculated automatically." +msgstr "" +"Этот параметр управляет формированием каймы на внешней/внутренней стороне " +"моделей. Авто означает, что ширина каймы анализируется и рассчитывается " +"автоматически." msgid "Brim-object gap" msgstr "Смещение каймы" -msgid "A gap between innermost brim line and object can make brim be removed more easily" +msgid "" +"A gap between innermost brim line and object can make brim be removed more " +"easily" msgstr "Смещение каймы от печатаемой модели, может облегчить её удаление." msgid "Brim ears" @@ -6803,10 +7857,12 @@ msgid "Brim ear detection radius" msgstr "Радиус обнаружения ушек каймы" msgid "" -"The geometry will be decimated before dectecting sharp angles. This parameter indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This " +"parameter indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" -"Геометрия модели будет упрощена перед обнаружением острых углов. Этот параметр задаёт минимальную длину отклонения для её упрощения.\n" +"Геометрия модели будет упрощена перед обнаружением острых углов. Этот " +"параметр задаёт минимальную длину отклонения для её упрощения.\n" "Установите 0 для отключения." msgid "Compatible machine" @@ -6836,14 +7892,24 @@ msgstr "По очереди" msgid "Slow printing down for better layer cooling" msgstr "Замедлять печать для лучшего охлаждения слоёв" -msgid "Enable this option to slow printing speed down to make the final layer time not shorter than the layer time threshold in \"Max fan speed threshold\", so that layer can be cooled for longer time. This can improve the cooling quality for needle and small details" -msgstr "Включите эту опцию для разрешения замедления скорости печати в зависимости от времени печати слоя, чтобы слой мог охлаждаться дольше. Это позволяет улучшить качество охлаждения острых концов и мелких деталей." +msgid "" +"Enable this option to slow printing speed down to make the final layer time " +"not shorter than the layer time threshold in \"Max fan speed threshold\", so " +"that layer can be cooled for longer time. This can improve the cooling " +"quality for needle and small details" +msgstr "" +"Включите эту опцию для разрешения замедления скорости печати в зависимости " +"от времени печати слоя, чтобы слой мог охлаждаться дольше. Это позволяет " +"улучшить качество охлаждения острых концов и мелких деталей." msgid "Normal printing" msgstr "Ускорение по умолчанию" -msgid "The default acceleration of both normal printing and travel except initial layer" -msgstr "Ускорение по умолчанию для обычной печати и перемещения, кроме первого слоя." +msgid "" +"The default acceleration of both normal printing and travel except initial " +"layer" +msgstr "" +"Ускорение по умолчанию для обычной печати и перемещения, кроме первого слоя." msgid "mm/s²" msgstr "мм/с²" @@ -6852,19 +7918,44 @@ msgid "Default filament profile" msgstr "Профиль прутка по умолчанию" msgid "Default filament profile when switch to this machine profile" -msgstr "Профиль пластиковой нити по умолчанию при переключении на этот профиль принтера." +msgstr "" +"Профиль пластиковой нити по умолчанию при переключении на этот профиль " +"принтера." msgid "Default process profile" msgstr "Профиль процесса по умолчанию" msgid "Default process profile when switch to this machine profile" -msgstr "Профиль процесса по умолчанию при переключении на этот профиль принтера." +msgstr "" +"Профиль процесса по умолчанию при переключении на этот профиль принтера." + +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "Скорость вентилятора" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" msgid "No cooling for the first" msgstr "Не включать вентилятор на первых" -msgid "Close all cooling fan for the first certain layers. Cooling fan of the first layer used to be closed to get better build plate adhesion" -msgstr "Вы можете задать положительное значение, чтобы отключить все вентиляторы охлаждения модели при печати первых нескольких слоёв, чтобы не ухудшить адгезию к столу." +msgid "" +"Close all cooling fan for the first certain layers. Cooling fan of the first " +"layer used to be closed to get better build plate adhesion" +msgstr "" +"Вы можете задать положительное значение, чтобы отключить все вентиляторы " +"охлаждения модели при печати первых нескольких слоёв, чтобы не ухудшить " +"адгезию к столу." msgid "layers" msgstr "слой(-я)" @@ -6872,20 +7963,36 @@ msgstr "слой(-я)" msgid "Don't support bridges" msgstr "Не печатать поддержки под мостами" -msgid "Don't support the whole bridge area which make support very large. Bridge usually can be printing directly without support if not very long" -msgstr "Опция, препятствующая печати поддержки под мостами. Мост обычно можно печатать без поддержки, если он не очень длинный." +msgid "" +"Don't support the whole bridge area which make support very large. Bridge " +"usually can be printing directly without support if not very long" +msgstr "" +"Опция, препятствующая печати поддержки под мостами. Мост обычно можно " +"печатать без поддержки, если он не очень длинный." msgid "Thick bridges" msgstr "Толстые мосты" -msgid "If enabled, bridges are more reliable, can bridge longer distances, but may look worse. If disabled, bridges look better but are reliable just for shorter bridged distances." -msgstr "Если включено, мосты печатаются более надежные и на большие расстояния. Если отключено, мосты выглядят лучше, но они надежны только на коротких расстояниях." +msgid "" +"If enabled, bridges are more reliable, can bridge longer distances, but may " +"look worse. If disabled, bridges look better but are reliable just for " +"shorter bridged distances." +msgstr "" +"Если включено, мосты печатаются более надежные и на большие расстояния. Если " +"отключено, мосты выглядят лучше, но они надежны только на коротких " +"расстояниях." msgid "Max bridge length" msgstr "Максимальная длина моста" -msgid "Max 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 "Максимальная длина мостов, не нуждающихся в поддержке. Установите 0, если требуется поддержка всех мостов, или очень большое значение, если поддержка мостов не требуется." +msgid "" +"Max 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 "" +"Максимальная длина мостов, не нуждающихся в поддержке. Установите 0, если " +"требуется поддержка всех мостов, или очень большое значение, если поддержка " +"мостов не требуется." msgid "End G-code" msgstr "Завершающий G-код" @@ -6899,14 +8006,12 @@ msgstr "Завершающий G-код при окончании печати msgid "Ensure vertical shell thickness" msgstr "Обеспечивать верт. толщину оболочки" -msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)" -msgstr "Добавление сплошного заполнения вблизи наклонных поверхностей для обеспечения вертикальной толщины оболочки (верхний+нижний сплошные слои)." - -msgid "Internal bridge support thickness" -msgstr "Толщина поддержки внутреннего моста" - -msgid "If enabled, support loops will be generated under the contours of internal bridges.These support loops could prevent internal bridges from extruding over the air and improve the top surface quality, especially when the sparse infill density is low.This value determines the thickness of the support loops. 0 means disable this feature" -msgstr "Если включено, под контурами внутренних мостов будут создаваться петли поддержки. Эти петли поддержки могут препятствовать выдавливанию внутренних мостов в воздух и улучшить качество поверхности сверху, особенно при низкой плотности заполнения. Это значение определяет толщину петель поддержки. Установите 0 для отключения." +msgid "" +"Add solid infill near sloping surfaces to guarantee the vertical shell " +"thickness (top+bottom solid layers)" +msgstr "" +"Добавление сплошного заполнения вблизи наклонных поверхностей для " +"обеспечения вертикальной толщины оболочки (верхний+нижний сплошные слои)." msgid "Top surface pattern" msgstr "Шаблон заполнения верхней поверхности" @@ -6947,32 +8052,56 @@ msgstr "Шаблон заполнения нижней поверхности, msgid "Internal solid infill pattern" msgstr "Шаблон сплошного заполнения" -msgid "Line pattern of internal solid infill. if the detect nattow internal solid infill be enabled, the concentric pattern will be used for the small area." -msgstr "Шаблон печати внутреннего сплошного заполнения. Если включена функция «Обнаруживать узкую область сплошного заполнения», то для небольшой области будет использоваться концентрический шаблон заполнения." +msgid "" +"Line pattern of internal solid infill. if the detect nattow internal solid " +"infill be enabled, the concentric pattern will be used for the small area." +msgstr "" +"Шаблон печати внутреннего сплошного заполнения. Если включена функция " +"«Обнаруживать узкую область сплошного заполнения», то для небольшой области " +"будет использоваться концентрический шаблон заполнения." -msgid "Line width of outer wall. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для внешнего периметра. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width of outer wall. If expressed as a %, it will be computed over the " +"nozzle diameter." +msgstr "" +"Ширина экструзии для внешнего периметра. Если задано в процентах, то " +"значение вычисляться относительно диаметра сопла." -msgid "Speed of outer wall which is outermost and visible. It's used to be slower than inner wall speed to get better quality." -msgstr "Скорость печати внешнего периметра (видимого). Для улучшения качества, эту скорость делают ниже скорости внутренних периметров." +msgid "" +"Speed of outer wall which is outermost and visible. It's used to be slower " +"than inner wall speed to get better quality." +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 для автонастройки." +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 для автонастройки." msgid "Small perimeters threshold" msgstr "Порог маленьких периметров" -msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" -msgstr "Пороговое значение длины маленьких периметров. Значение по умолчанию - 0 мм." +msgid "" +"This sets the threshold for small perimeter length. Default threshold is 0mm" +msgstr "" +"Пороговое значение длины маленьких периметров. Значение по умолчанию - 0 мм." msgid "Order of inner wall/outer wall/infil" msgstr "Порядок печати периметров/заполнения" msgid "Print sequence of inner wall, outer wall and infill. " -msgstr "Последовательность печати внутреннего/внешнего периметров и заполнения." +msgstr "" +"Последовательность печати внутреннего/внешнего периметров и заполнения." msgid "inner/outer/infill" msgstr "внутренний/внешний/заполнение" @@ -6992,23 +8121,37 @@ msgstr "внутренний-внешний-внутренний/заполне msgid "Height to rod" msgstr "Высота до вала" -msgid "Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-object printing." -msgstr "Расстояние от кончика сопла до нижнего вала. Значение важно при печати моделей «По очереди» для предотвращения столкновений." +msgid "" +"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " +"by-object printing." +msgstr "" +"Расстояние от кончика сопла до нижнего вала. Значение важно при печати " +"моделей «По очереди» для предотвращения столкновений." msgid "Height to lid" msgstr "Высота до крышки" -msgid "Distance of the nozzle tip to the lid. Used for collision avoidance in by-object printing." -msgstr "Расстояние от кончика сопла до крышки. Значение важно при печати моделей «По очереди» для предотвращения столкновений." +msgid "" +"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" +"object printing." +msgstr "" +"Расстояние от кончика сопла до крышки. Значение важно при печати моделей «По " +"очереди» для предотвращения столкновений." -msgid "Clearance radius around extruder. Used for collision avoidance in by-object printing." -msgstr "Безопасное расстояние вокруг экструдера. Используется для предотвращения столкновений при печати отдельно стоящих моделей." +msgid "" +"Clearance radius around extruder. Used for collision avoidance in by-object " +"printing." +msgstr "" +"Безопасное расстояние вокруг экструдера. Используется для предотвращения " +"столкновений при печати отдельно стоящих моделей." msgid "Extruder Color" msgstr "Цвет экструдера" msgid "Only used as a visual help on UI" -msgstr "Используется только в качестве визуальной помощи в пользовательском интерфейсе" +msgstr "" +"Используется только в качестве визуальной помощи в пользовательском " +"интерфейсе" msgid "Extruder offset" msgstr "Смещение экструдера по осям X/Y" @@ -7016,37 +8159,64 @@ msgstr "Смещение экструдера по осям X/Y" msgid "Flow ratio" msgstr "Коэффициент потока" -msgid "The material may have volumetric change after switching between molten state and crystalline state. This setting changes all extrusion flow of this filament in gcode proportionally. Recommended value range is between 0.95 and 1.05. Maybe you can tune this value to get nice flat surface when there has slight overflow or underflow" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow" msgstr "" -"Коэффициент пропорционального изменения величины потока подаваемого пластика. Рекомендуемый диапазон значений от 0,95 до 1,05.\n" -"При небольшом переливе или недоливе на поверхности, корректировка этого параметра поможет получить хорошую гладкую поверхность." +"Коэффициент пропорционального изменения величины потока подаваемого " +"пластика. Рекомендуемый диапазон значений от 0,95 до 1,05.\n" +"При небольшом переливе или недоливе на поверхности, корректировка этого " +"параметра поможет получить хорошую гладкую поверхность." msgid "Enable pressure advance" msgstr "Включить Pressure advance" -msgid "Enable pressure advance, auto calibration result will be overwriten once enabled." -msgstr "Включить Pressure advance (Прогнозирование давления). Результат автокалибровки будет перезаписан после включения." +msgid "" +"Enable pressure advance, auto calibration result will be overwriten once " +"enabled." +msgstr "" +"Включить Pressure advance (Прогнозирование давления). Результат " +"автокалибровки будет перезаписан после включения." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" -msgstr "Pressure advance (Прогнозирование давления) в прошивки Klipper, это одно и тоже что Linear advance в прошивке Marlin." +msgstr "" +"Pressure advance (Прогнозирование давления) в прошивки Klipper, это одно и " +"тоже что Linear advance в прошивке Marlin." -msgid "Default line width if other line widths are set to 0. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии по умолчанию, если какие-либо из значений ширины экструзии установлены равные нулю. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Default line width if other line widths are set to 0. If expressed as a %, " +"it will be computed over the nozzle diameter." +msgstr "" +"Ширина экструзии по умолчанию, если какие-либо из значений ширины экструзии " +"установлены равные нулю. Если задано в процентах, то значение вычисляться " +"относительно диаметра сопла." msgid "Keep fan always on" msgstr "Вентилятор включён всегда" -msgid "If enable this setting, part cooling fan will never be stoped and will run at least at minimum speed to reduce the frequency of starting and stoping" -msgstr "Если включено, вентилятор охлаждения модели никогда не будет останавливаться и будет работать на минимальной скорости, чтобы сократить частоту его запуска и остановки." +msgid "" +"If enable this setting, part cooling fan will never be stoped and will run " +"at least at minimum speed to reduce the frequency of starting and stoping" +msgstr "" +"Если включено, вентилятор охлаждения модели никогда не будет останавливаться " +"и будет работать на минимальной скорости, чтобы сократить частоту его " +"запуска и остановки." msgid "Layer time" msgstr "Время слоя" -msgid "Part cooling fan will be enabled for layers of which estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time" -msgstr "Вентилятор охлаждения моделей будет включён для слоёв, расчётное время которых меньше этого значения. Скорость вентилятора интерполируется между минимальной и максимальной скоростями вентилятора зависимости от времени печати слоя." - -msgid "s" -msgstr "с" +msgid "" +"Part cooling fan will be enabled for layers of which estimated time is " +"shorter than this value. Fan speed is interpolated between the minimum and " +"maximum fan speeds according to layer printing time" +msgstr "" +"Вентилятор охлаждения моделей будет включён для слоёв, расчётное время " +"которых меньше этого значения. Скорость вентилятора интерполируется между " +"минимальной и максимальной скоростями вентилятора зависимости от времени " +"печати слоя." msgid "Default color" msgstr "Цвет по умолчанию" @@ -7066,46 +8236,201 @@ msgstr "Здесь вы можете написать свои замечани msgid "Required nozzle HRC" msgstr "Необходимая твёрдость сопла" -msgid "Minimum HRC of nozzle required to print the filament. Zero means no checking of nozzle's HRC." -msgstr "Минимальная твёрдость материала сопла (HRC), необходимая для печати пластиковой нитью. 0 - отключение контроля сопел на твёрдость." +msgid "" +"Minimum HRC of nozzle required to print the filament. Zero means no checking " +"of nozzle's HRC." +msgstr "" +"Минимальная твёрдость материала сопла (HRC), необходимая для печати " +"пластиковой нитью. 0 - отключение контроля сопел на твёрдость." -msgid "This setting stands for how much volume of filament can be melted and extruded per second. Printing speed is limited by max volumetric speed, in case of too high and unreasonable speed setting. Can't be zero" -msgstr "Этот параметр определяет, какой объём материала может быть расплавлен и выдавлен в секунду. Скорость печати ограничена максимальной объёмной скоростью в случае слишком высокой и необоснованной установки скорости. Параметр не может быть нулевым." +msgid "" +"This setting stands for how much volume of filament can be melted and " +"extruded per second. Printing speed is limited by max volumetric speed, in " +"case of too high and unreasonable speed setting. Can't be zero" +msgstr "" +"Этот параметр определяет, какой объём материала может быть расплавлен и " +"выдавлен в секунду. Скорость печати ограничена максимальной объёмной " +"скоростью в случае слишком высокой и необоснованной установки скорости. " +"Параметр не может быть нулевым." msgid "mm³/s" msgstr "мм³/с" -msgid "Minimal purge on wipe tower" -msgstr "Мин. объём сброса на черновой башне" - -msgid "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." -msgstr "После смены инструмента, точное положение вновь загруженного прутка внутри него может быть неизвестно, и давление прутка, вероятно, ещё не стабильно. Перед тем, как очистить печатающую головку в заполнение или в «жертвенную» модель Slic3r всегда будет выдавливать это количество материала на черновую башню, чтобы обеспечить надёжную печать заполнения или «жертвенной» модели." - msgid "Filament load time" msgstr "Время загрузки прутка" msgid "Time to load new filament when switch filament. For statistics only" -msgstr "Время загрузки новой пластиковой нити при её смене. Только для статистики." +msgstr "" +"Время загрузки новой пластиковой нити при её смене. Только для статистики." msgid "Filament unload time" msgstr "Время выгрузки прутка" msgid "Time to unload old filament when switch filament. For statistics only" -msgstr "Время выгрузки старой пластиковой нити при её смене. Только для статистики." +msgstr "" +"Время выгрузки старой пластиковой нити при её смене. Только для статистики." -msgid "Filament diameter is used to calculate extrusion in gcode, so it's important and should be accurate" -msgstr "Диаметр пластиковой нити используется для расчёта экструзии, поэтому он важен и должен быть точным" +msgid "" +"Filament diameter is used to calculate extrusion in gcode, so it's important " +"and should be accurate" +msgstr "" +"Диаметр пластиковой нити используется для расчёта экструзии, поэтому он " +"важен и должен быть точным" msgid "Shrinkage" msgstr "Усадка материала" -#, c-format, boost-format +#, fuzzy, c-format, boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead of 100mm). The part will be scaled in xy to compensate. Only the filament used for the perimeter is taken into account.\n" -"Be sure to allow enough space between objects, as this compensation is done after the checks." +"Enter the shrinkage percentage that the filament will get after cooling " +"(94% if you measure 94mm instead of 100mm). The part will be scaled in xy to " +"compensate. Only the filament used for the perimeter is taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done " +"after the checks." msgstr "" -"Введите процент усадки пластиковой нити, которую получит она после охлаждения (пишите 94%, если вы намерили 94 мм, вместо 100 мм). Для компенсации усадки деталь будет отмасштабированна по оси XY. При этом учитывается только пластиковая нить, используемая для печати внешнего периметра.\n" -"Убедитесь, что между моделями достаточно места, так как эта компенсация выполняется после проверок." +"Введите процент усадки пластиковой нити, которую получит она после " +"охлаждения (пишите 94%, если вы намерили 94 мм, вместо 100 мм). Для " +"компенсации усадки деталь будет отмасштабированна по оси XY. При этом " +"учитывается только пластиковая нить, используемая для печати внешнего " +"периметра.\n" +"Убедитесь, что между моделями достаточно места, так как эта компенсация " +"выполняется после проверок." + +msgid "Loading speed" +msgstr "Скорость загрузки" + +msgid "Speed used for loading the filament on the wipe tower." +msgstr "Скорость загрузки прутка при печати черновой башни." + +msgid "Loading speed at the start" +msgstr "Начальная скорость загрузки" + +msgid "Speed used at the very beginning of loading phase." +msgstr "Скорость в начальной фазе загрузки прутка." + +msgid "Unloading speed" +msgstr "Скорость выгрузки" + +msgid "" +"Speed used for unloading the filament on the wipe tower (does not affect " +"initial part of unloading just after ramming)." +msgstr "" +"Скорость выгрузки прутка на черновую башню. (не влияет на начальную фазу " +"выгрузки сразу после рэмминга)." + +msgid "Unloading speed at the start" +msgstr "Начальная скорость выгрузки" + +msgid "" +"Speed used for unloading the tip of the filament immediately after ramming." +msgstr "Скорость выгрузки кончика прутка сразу после рэмминга." + +msgid "Delay after unloading" +msgstr "Задержка после выгрузки" + +msgid "" +"Time to wait after the filament is unloaded. May help to get reliable " +"toolchanges with flexible materials that may need more time to shrink to " +"original dimensions." +msgstr "" +"Время ожидания после выгрузки прутка. Это может помочь вам легко сменить " +"сопло при печати гибкими материалами, которым требуется больше времени, " +"чтобы вернуться к своим первоначальным размерам." + +msgid "Number of cooling moves" +msgstr "Количество охлаждающих движений" + +msgid "" +"Filament is cooled by being moved back and forth in the cooling tubes. " +"Specify desired number of these moves." +msgstr "" +"Пруток охлаждается в охлаждающих трубках путём перемещения назад и вперёд. " +"Укажите желаемое количество таких движений." + +msgid "Speed of the first cooling move" +msgstr "Скорость первого охлаждающего движения" + +msgid "Cooling moves are gradually accelerating beginning at this speed." +msgstr "Охлаждающие движения постепенно ускоряются, начиная с этой скорости." + +msgid "Minimal purge on wipe tower" +msgstr "Мин. объём сброса на черновой башне" + +msgid "" +"After a tool change, the exact position of the newly loaded filament inside " +"the nozzle may not be known, and the filament pressure is likely not yet " +"stable. Before purging the print head into an infill or a sacrificial " +"object, Slic3r will always prime this amount of material into the wipe tower " +"to produce successive infill or sacrificial object extrusions reliably." +msgstr "" +"После смены инструмента, точное положение вновь загруженного прутка внутри " +"него может быть неизвестно, и давление прутка, вероятно, ещё не стабильно. " +"Перед тем, как очистить печатающую головку в заполнение или в «жертвенную» " +"модель Slic3r всегда будет выдавливать это количество материала на черновую " +"башню, чтобы обеспечить надёжную печать заполнения или «жертвенной» модели." + +msgid "Speed of the last cooling move" +msgstr "Скорость последнего охлаждающего движения" + +msgid "Cooling moves are gradually accelerating towards this speed." +msgstr "Охлаждающие движения постепенно ускоряют до этой скорости." + +msgid "" +"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " +"filament during a tool change (when executing the T code). This time is " +"added to the total print time by the G-code time estimator." +msgstr "" +"Время за которое прошивка принтера (или Multi Material Unit 2.0) выгружает " +"пруток во время смены инструмента (при выполнении кода Т). Это время " +"добавляется к общему времени печати с помощью алгоритма оценки времени " +"выполнения G-кода." + +msgid "Ramming parameters" +msgstr "Параметры рэмминга" + +msgid "" +"This string is edited by RammingDialog and contains ramming specific " +"parameters." +msgstr "" +"Эта строка редактируется диалоговым окном рэмминга и содержит его конкретные " +"параметры." + +msgid "" +"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " +"filament during a tool change (when executing the T code). This time is " +"added to the total print time by the G-code time estimator." +msgstr "" +"Время за которое прошивка принтера (или Multi Material Unit 2.0) выгружает " +"пруток во время смены инструмента (при выполнении кода Т). Это время " +"добавляется к общему времени печати с помощью алгоритма оценки времени " +"выполнения G-кода." + +msgid "Enable ramming for multitool setups" +msgstr "Включить рэмминг для мультиинструментальных устройств" + +msgid "" +"Perform ramming when using multitool 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 " +"toolchange. This option is only used when the wipe tower is enabled." +msgstr "" +"Выполнять рэмминг при использовании мультиинструментального принтера (т. е. " +"когда в настройках принтера снят флажок «Мультиматериальный одиночный " +"экструдер»). При включении этой опции, небольшое количество материала быстро " +"выдавливается на черновую башню непосредственно перед сменой инструмента. " +"Эта опция используется только в том случае, если включена черновая башня." + +msgid "Multitool ramming volume" +msgstr "Объём рэмминга мультиинструмента" + +msgid "The volume to be rammed before the toolchange." +msgstr "Объём рэмминга перед сменой инструмента." + +msgid "Multitool ramming flow" +msgstr "Поток рэмминга мультиинструмента" + +msgid "Flow used for ramming the filament before the toolchange." +msgstr "Поток рэмминга пластиковой нити перед сменой инструмента." msgid "Density" msgstr "Плотность" @@ -7122,20 +8447,30 @@ msgstr "Тип материала пластиковой нити." msgid "Soluble material" msgstr "Растворимый материал" -msgid "Soluble material is commonly used to print support and support interface" -msgstr "Растворимый материал обычно используется для печати поддержки и связующего слоя поддержки." +msgid "" +"Soluble material is commonly used to print support and support interface" +msgstr "" +"Растворимый материал обычно используется для печати поддержки и связующего " +"слоя поддержки." msgid "Support material" msgstr "Поддержка" -msgid "Support material is commonly used to print support and support interface" -msgstr "«Материал для поддержки» обычно используется для печати поддержки и связующего слоя поддержки." +msgid "" +"Support material is commonly used to print support and support interface" +msgstr "" +"«Материал для поддержки» обычно используется для печати поддержки и " +"связующего слоя поддержки." msgid "Temperature of vitrificaiton" msgstr "Температура стеклования" -msgid "Material becomes soft at this temperature. Thus the heatbed cannot be hotter than this tempature" -msgstr "При этой температуре материал становится мягким. Таким образом, подогреваемый стол не может быть горячее этой температуры." +msgid "" +"Material becomes soft at this temperature. Thus the heatbed cannot be hotter " +"than this tempature" +msgstr "" +"При этой температуре материал становится мягким. Таким образом, " +"подогреваемый стол не может быть горячее этой температуры." msgid "Price" msgstr "Стоимость" @@ -7158,15 +8493,21 @@ msgstr "(Не указано)" msgid "Infill direction" msgstr "Угол печати заполнения" -msgid "Angle for sparse infill pattern, which controls the start or main direction of line" -msgstr "Базовый угол для ориентации шаблона заполнения, который определяет начало или основное направление линий." +msgid "" +"Angle for sparse infill pattern, which controls the start or main direction " +"of line" +msgstr "" +"Базовый угол для ориентации шаблона заполнения, который определяет начало " +"или основное направление линий." msgid "Sparse infill density" msgstr "Плотность заполнения" -#, c-format +#, fuzzy, c-format msgid "Density of internal sparse infill, 100% means solid throughout" -msgstr "Плотность внутреннего заполнения, выраженная в процентах. 100% означает сплошное заполнение." +msgstr "" +"Плотность внутреннего заполнения, выраженная в процентах. 100% означает " +"сплошное заполнение." msgid "Sparse infill pattern" msgstr "Шаблон заполнения" @@ -7208,13 +8549,27 @@ msgid "Sparse infill anchor length" msgstr "Длина привязок разреженного заполнения" msgid "" -"Connect an infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one " -"side and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max. \n" -"Set this parameter to zero to disable anchoring perimeters connected to a single infill line." +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." msgstr "" -"Соединять линию заполнения с внутренним периметром с помощью короткого отрезка дополнительного периметра (привязок). Если выражено в процентах, то она вычисляется по ширине экструзии заполнения. Программа пытается соединить две ближайшие линии заполнения с коротким отрезком периметра. Если не найдено такого отрезка периметра короче «Максимальной длины привязок разреженного " -"заполнения» (anchor_length_max), то линия заполнения соединяется с отрезком периметра только с одной стороны, а длина отрезка периметра ограничена этим параметром, но не больше «Максимальной длины привязок разреженного заполнения» (anchor_length_max). \n" -"Установите этот параметр равным нулю для отключения привязок периметров, соединённых с одной линии заполнения." +"Соединять линию заполнения с внутренним периметром с помощью короткого " +"отрезка дополнительного периметра (привязок). Если выражено в процентах, то " +"она вычисляется по ширине экструзии заполнения. Программа пытается соединить " +"две ближайшие линии заполнения с коротким отрезком периметра. Если не " +"найдено такого отрезка периметра короче «Максимальной длины привязок " +"разреженного заполнения» (anchor_length_max), то линия заполнения " +"соединяется с отрезком периметра только с одной стороны, а длина отрезка " +"периметра ограничена этим параметром, но не больше «Максимальной длины " +"привязок разреженного заполнения» (anchor_length_max). \n" +"Установите этот параметр равным нулю для отключения привязок периметров, " +"соединённых с одной линии заполнения." msgid "0 (no open anchors)" msgstr "0 (нет открытых привязок)" @@ -7226,13 +8581,26 @@ msgid "Maximum length of the infill anchor" msgstr "Максимальная длина привязок разреженного заполнения" msgid "" -"Connect an infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side " -"and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. \n" -"If set to 0, the old algorithm for infill connection will be used, it should create the same result as with 1000 & 0." +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." msgstr "" -"Соединять линию заполнения с внутренним периметром с помощью короткого отрезка дополнительного периметра (привязок). Если выражено в процентах, то она вычисляется по ширине экструзии заполнения. Slic3r пытается соединить две ближайшие линии заполнения с коротким отрезком периметра. Если не найдено такого отрезка периметра короче этого параметра, линия заполнения соединяется с отрезком периметра " -"только с одной стороны, а длина отрезка периметра ограничена значением «Длина привязок разреженного заполнения» (infill_anchor), но не больше этого параметра. \n" -"Если установить 0, то будет использоваться старый алгоритм для соединения заполнения, который даёт такой же результат, как и при значениях 1000 и 0." +"Соединять линию заполнения с внутренним периметром с помощью короткого " +"отрезка дополнительного периметра (привязок). Если выражено в процентах, то " +"она вычисляется по ширине экструзии заполнения. Slic3r пытается соединить " +"две ближайшие линии заполнения с коротким отрезком периметра. Если не " +"найдено такого отрезка периметра короче этого параметра, линия заполнения " +"соединяется с отрезком периметра только с одной стороны, а длина отрезка " +"периметра ограничена значением «Длина привязок разреженного " +"заполнения» (infill_anchor), но не больше этого параметра. \n" +"Если установить 0, то будет использоваться старый алгоритм для соединения " +"заполнения, который даёт такой же результат, как и при значениях 1000 и 0." msgid "0 (Simple connect)" msgstr "0 (без привязок)" @@ -7246,39 +8614,69 @@ msgstr "Ускорение на внутренних периметрах." msgid "Acceleration of travel moves" msgstr "Ускорение холостого перемещения." -msgid "Acceleration of top surface infill. Using a lower value may improve top surface quality" -msgstr "Ускорение на верхней поверхности. Использование меньшего значения может улучшить качество верхней поверхности." +msgid "" +"Acceleration of top surface infill. Using a lower value may improve top " +"surface quality" +msgstr "" +"Ускорение на верхней поверхности. Использование меньшего значения может " +"улучшить качество верхней поверхности." msgid "Acceleration of outer wall. Using a lower value can improve quality" -msgstr "Ускорение на внешнем периметре. Использование более низкого значения может улучшить качество." +msgstr "" +"Ускорение на внешнем периметре. Использование более низкого значения может " +"улучшить качество." -msgid "Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be calculated based on the outer wall acceleration." -msgstr "Ускорение на мостах. Если задано в процентах, то значение вычисляться относительно ускорения внешнего периметра." +msgid "" +"Acceleration of bridges. If the value is expressed as a percentage (e.g. " +"50%), it will be calculated based on the outer wall acceleration." +msgstr "" +"Ускорение на мостах. Если задано в процентах, то значение вычисляться " +"относительно ускорения внешнего периметра." msgid "mm/s² or %" msgstr "мм/с² или %" -msgid "Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration." -msgstr "Ускорение на разреженном заполнении. Если задано в процентах, то значение вычисляться относительно ускорения по умолчанию." +msgid "" +"Acceleration of sparse infill. If the value is expressed as a percentage (e." +"g. 100%), it will be calculated based on the default acceleration." +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 "Ускорение на внутреннем сплошном заполнении. Если задано в процентах, то значение вычисляться относительно ускорения по умолчанию." +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 "" +"Ускорение на внутреннем сплошном заполнении. Если задано в процентах, то " +"значение вычисляться относительно ускорения по умолчанию." -msgid "Acceleration of initial layer. Using a lower value can improve build plate adhensive" -msgstr "Ускорение на первом слое. Использование более низкого значения может улучшить адгезию к столу." +msgid "" +"Acceleration of initial layer. Using a lower value can improve build plate " +"adhensive" +msgstr "" +"Ускорение на первом слое. Использование более низкого значения может " +"улучшить адгезию к столу." msgid "Enable accel_to_decel" msgstr "Вкл. ограничение ускорения зигзагов" msgid "Klipper's max_accel_to_decel will be adjusted automatically" -msgstr "Значение Klipper-а max_accel_to_decel (ограничение ускорения зигзагов) будет скорректировано автоматически" +msgstr "" +"Значение Klipper-а max_accel_to_decel (ограничение ускорения зигзагов) будет " +"скорректировано автоматически" msgid "accel_to_decel" msgstr "ограничение ускорение зигзагов" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" -msgstr "Значение Klipper-а max_accel_to_decel (ограничение ускорения зигзагов) будет скорректировано на данное ускорение: %" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" +msgstr "" msgid "Jerk of outer walls" msgstr "Рывок для внешних периметров." @@ -7298,14 +8696,22 @@ msgstr "Рывок для первого слоя." msgid "Jerk for travel" msgstr "Рывок при перемещении." -msgid "Line width of initial layer. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для первого слоя. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width of initial layer. If expressed as a %, it will be computed over " +"the nozzle diameter." +msgstr "" +"Ширина экструзии для первого слоя. Если задано в процентах, то значение " +"вычисляться относительно диаметра сопла." msgid "Initial layer height" msgstr "Высота первого слоя" -msgid "Height of initial layer. Making initial layer height to be thick slightly can improve build plate adhension" -msgstr "Высота первого слоя. Незначительное увеличение толщины первого слоя может улучшить сцепление со столом." +msgid "" +"Height of initial layer. Making initial layer height to be thick slightly " +"can improve build plate adhension" +msgstr "" +"Высота первого слоя. Незначительное увеличение толщины первого слоя может " +"улучшить сцепление со столом." msgid "Speed of initial layer except the solid infill part" msgstr "Скорость печати первого слоя, кроме сплошного заполнения." @@ -7325,35 +8731,59 @@ msgstr "Скорость перемещения на первом слое." msgid "Number of slow layers" msgstr "Количество медленных слоёв" -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 "Первые несколько слоёв печатаются медленнее, чем обычно. Скорость постепенно линейно увеличивается в течение заданного количества слоёв." +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 "" +"Первые несколько слоёв печатаются медленнее, чем обычно. Скорость постепенно " +"линейно увеличивается в течение заданного количества слоёв." msgid "Initial layer nozzle temperature" msgstr "Температура сопла на первом слое" msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "Температура сопла для печати первого слоя при использовании данной пластиковой нити." +msgstr "" +"Температура сопла для печати первого слоя при использовании данной " +"пластиковой нити." msgid "Full fan speed at layer" 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." +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." msgid "Support interface fan speed" msgstr "Скорость вентилятора на связующем слое" msgid "" -"This fan speed is enforced during all support interfaces, to be able to weaken their bonding with a high fan speed.\n" +"This fan speed is enforced during all support interfaces, to be able to " +"weaken their bonding with a high fan speed.\n" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." msgstr "" -"Скорость, применяемая ко всем связующим слоях, чтобы высокой скоростью вентилятора ослабить сцепление между слоями.\n" +"Скорость, применяемая ко всем связующим слоях, чтобы высокой скоростью " +"вентилятора ослабить сцепление между слоями.\n" "Установите значение -1, чтобы запретить переопределять этот параметр.\n" "Может быть отменено только командой disable_fan_first_layers." -msgid "Randomly jitter while printing the wall, so that the surface has a rough look. This setting controls the fuzzy position" -msgstr "Случайное дрожание сопла при печати внешнего периметра для создания эффекта шероховатой поверхности. Эта настройка определяет положение нечетной оболочки." +msgid "" +"Randomly jitter while printing the wall, so that the surface has a rough " +"look. This setting controls the fuzzy position" +msgstr "" +"Случайное дрожание сопла при печати внешнего периметра для создания эффекта " +"шероховатой поверхности. Эта настройка определяет положение нечетной " +"оболочки." msgid "None" msgstr "Нет" @@ -7370,14 +8800,22 @@ msgstr "Все периметры" msgid "Fuzzy skin thickness" msgstr "Толщина нечёткой оболочки" -msgid "The width within which to jitter. It's adversed to be below outer wall line width" -msgstr "Ширина, в пределах которой будет происходить дрожание. Желательно, чтобы она была меньше ширины линии внешнего периметра." +msgid "" +"The width within which to jitter. It's adversed to be below outer wall line " +"width" +msgstr "" +"Ширина, в пределах которой будет происходить дрожание. Желательно, чтобы она " +"была меньше ширины линии внешнего периметра." msgid "Fuzzy skin point distance" msgstr "Расстояние «дрожания» при печати нечёткой оболочки" -msgid "The average diatance between the random points introducded on each line segment" -msgstr "Среднее расстояние между случайно вставленными точками при генерации нечётной оболочки." +msgid "" +"The average diatance between the random points introducded on each line " +"segment" +msgstr "" +"Среднее расстояние между случайно вставленными точками при генерации " +"нечётной оболочки." msgid "Filter out tiny gaps" msgstr "Игнорировать небольшие пробелы" @@ -7385,35 +8823,55 @@ msgstr "Игнорировать небольшие пробелы" msgid "Layers and Perimeters" msgstr "Слои и периметры" -msgid "Filter out gaps smaller than the threshold specified. This setting won't affect top/bottom layers" -msgstr "Небольшие промежутки меньше указанного порога не будут заполняться. Этот параметр не влияет на верхнюю/нижнюю поверхность." +msgid "" +"Filter out gaps smaller than the threshold specified. This setting won't " +"affect top/bottom layers" +msgstr "" +"Небольшие промежутки меньше указанного порога не будут заполняться. Этот " +"параметр не влияет на верхнюю/нижнюю поверхность." -msgid "Speed of gap infill. Gap usually has irregular line width and should be printed more slowly" -msgstr "Скорость заполнения пробелов. Пробелы обычно имеют неравномерную ширину линии и должен печататься медленнее." +msgid "" +"Speed of gap infill. Gap usually has irregular line width and should be " +"printed more slowly" +msgstr "" +"Скорость заполнения пробелов. Пробелы обычно имеют неравномерную ширину " +"линии и должен печататься медленнее." msgid "Arc fitting" msgstr "Поддержка движения по дуге окружности" -msgid "Enable this to get a G-code file which has G2 and G3 moves. And the fitting tolerance is same with resolution" -msgstr "Включите, если хотите использовать в G-коде команды перемещения по дуге окружности G2/G3. Значение допуска траектории такое же как разрешение G-кода." +msgid "" +"Enable this to get a G-code file which has G2 and G3 moves. And the fitting " +"tolerance is same with resolution" +msgstr "" +"Включите, если хотите использовать в G-коде команды перемещения по дуге " +"окружности G2/G3. Значение допуска траектории такое же как разрешение G-кода." msgid "Add line number" msgstr "Добавить номер строки" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" -msgstr "При включении, в начало каждой строки G-кода, будет добавляться номер строки (Nx)." +msgstr "" +"При включении, в начало каждой строки G-кода, будет добавляться номер строки " +"(Nx)." msgid "Scan first layer" msgstr "Сканировать первый слой" -msgid "Enable this to enable the camera on printer to check the quality of first layer" +msgid "" +"Enable this to enable the camera on printer to check the quality of first " +"layer" msgstr "При включении, камера принтера будет проверять качество первого слоя." msgid "Nozzle type" msgstr "Тип сопла" -msgid "The metallic material of nozzle. This determines the abrasive resistance of nozzle, and what kind of filament can be printed" -msgstr "Материал сопла. Определяет абразивную стойкость сопла, а также то, каким материалом можно печатать." +msgid "" +"The metallic material of nozzle. This determines the abrasive resistance of " +"nozzle, and what kind of filament can be printed" +msgstr "" +"Материал сопла. Определяет абразивную стойкость сопла, а также то, каким " +"материалом можно печатать." msgid "Undefine" msgstr "Не задано" @@ -7430,24 +8888,63 @@ msgstr "Латунь" msgid "Nozzle HRC" msgstr "Твердость сопла (HRC)" -msgid "The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing." -msgstr "Твёрдость сопел. 0 - отключение контроля сопел на твёрдость во время нарезки." +msgid "" +"The nozzle's hardness. Zero means no checking for nozzle's hardness during " +"slicing." +msgstr "" +"Твёрдость сопел. 0 - отключение контроля сопел на твёрдость во время нарезки." msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" -msgstr "Включите, если в принтере имеет вспомогательный вентилятор для охлаждения моделей." +msgstr "" +"Включите, если в принтере имеет вспомогательный вентилятор для охлаждения " +"моделей." msgid "" -"Start the fan this number of seconds earlier than its target start time (you can use fractional seconds). It assumes infinite acceleration for this time estimation, and will only take into account G1 and G0 moves (arc fitting is unsupported).\n" -"It won't move fan comands from custom gcodes (they act as a sort of 'barrier').\n" -"It won't move fan comands into the start gcode if the 'only custom start gcode' is activated.\n" +"Start the fan this number of seconds earlier than its target start time (you " +"can use fractional seconds). It assumes infinite acceleration for this time " +"estimation, and will only take into account G1 and G0 moves (arc fitting is " +"unsupported).\n" +"It won't move fan comands from custom gcodes (they act as a sort of " +"'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start " +"gcode' is activated.\n" "Use 0 to deactivate." msgstr "" -"Запуск вентилятора на указанное количество секунд раньше целевого времени запуска (поддерживаются доли секунды). При этом предполагается бесконечное ускорение для оценки этого времени, и учёт только перемещений G1 и G0 (Поддержка движения по дуге окружности не поддерживается).\n" -"Это не приведёт к сдвигу команд вентилятора из пользовательских G-кодов (они действуют как своего рода барьер).\n" -"Это не приведёт к сдвигу команд вентилятора в стартовом G-коде, если активировано «только пользовательский стартовый G-код».\n" +"Запуск вентилятора на указанное количество секунд раньше целевого времени " +"запуска (поддерживаются доли секунды). При этом предполагается бесконечное " +"ускорение для оценки этого времени, и учёт только перемещений G1 и G0 " +"(Поддержка движения по дуге окружности не поддерживается).\n" +"Это не приведёт к сдвигу команд вентилятора из пользовательских G-кодов (они " +"действуют как своего рода барьер).\n" +"Это не приведёт к сдвигу команд вентилятора в стартовом G-коде, если " +"активировано «только пользовательский стартовый G-код».\n" "Установите 0 для отключения." msgid "Only overhangs" @@ -7460,13 +8957,41 @@ msgid "Fan kick-start time" msgstr "Продолжительность принудительного запуска вентилятора" msgid "" -"Emit a max fan speed command for this amount of seconds before reducing to target speed to kick-start the cooling fan.\n" -"This is useful for fans where a low PWM/power may be insufficient to get the fan started spinning from a stop, or to get the fan up to speed faster.\n" +"Emit a max fan speed command for this amount of seconds before reducing to " +"target speed to kick-start the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the " +"fan started spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" -"Время принудительного запуска (kick-start) вентилятора на максимальной скорости, после чего скорость снижается до целевой. Это необходимо для вентиляторов у которых низкое значение уровня ШИМ/мощности может быть недостаточен для запуска вентилятора после остановки или для более быстрого увеличения скорости его вращения.\n" +"Время принудительного запуска (kick-start) вентилятора на максимальной " +"скорости, после чего скорость снижается до целевой. Это необходимо для " +"вентиляторов у которых низкое значение уровня ШИМ/мощности может быть " +"недостаточен для запуска вентилятора после остановки или для более быстрого " +"увеличения скорости его вращения.\n" "Установите 0 для отключения." +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "Тип G-кода" @@ -7479,40 +9004,67 @@ msgstr "Klipper" msgid "Label objects" msgstr "Название моделей" -msgid "Enable this to add comments into the G-Code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." -msgstr "Включите эту опцию, чтобы добавить комментарии в G-код с указанием того, к какой модели он принадлежит, что полезно для плагина Octoprint CancelObject. Эта настройка не совместима с настройкой «Мультиматериальный одиночный экструдер» и «Очистка в модель» / «Очистка в заполнение модели»." +msgid "" +"Enable this to add comments into the G-Code labeling print moves with what " +"object they belong to, which is useful for the Octoprint CancelObject " +"plugin. This settings is NOT compatible with Single Extruder Multi Material " +"setup and Wipe into Object / Wipe into Infill." +msgstr "" +"Включите эту опцию, чтобы добавить комментарии в G-код с указанием того, к " +"какой модели он принадлежит, что полезно для плагина Octoprint CancelObject. " +"Эта настройка не совместима с настройкой «Мультиматериальный одиночный " +"экструдер» и «Очистка в модель» / «Очистка в заполнение модели»." msgid "Exclude objects" msgstr "Исключить модели" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "Включите эту опцию, чтобы добавить команду EXCLUDE OBJECT (исключения моделей) в G-код." +msgstr "" +"Включите эту опцию, чтобы добавить команду EXCLUDE OBJECT (исключения " +"моделей) в G-код." msgid "Verbose G-code" msgstr "Подробный G-код" -msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." -msgstr "Включите эту опцию, чтобы в каждой строке файла G-кода, присутствовал комментарий с поясняющим текстом. При печати с SD-карты, скорость чтение данных вашей прошивкой может снизится за счёт увеличения размера файла." +msgid "" +"Enable this to get a commented G-code file, with each line explained by a " +"descriptive text. If you print from SD card, the additional weight of the " +"file could make your firmware slow down." +msgstr "" +"Включите эту опцию, чтобы в каждой строке файла G-кода, присутствовал " +"комментарий с поясняющим текстом. При печати с SD-карты, скорость чтение " +"данных вашей прошивкой может снизится за счёт увеличения размера файла." msgid "Infill combination" msgstr "Комбинированное заполнение" -msgid "Automatically Combine sparse infill of several layers to print together to reduce time. Wall is still printed with original layer height." +msgid "" +"Automatically Combine sparse infill of several layers to print together to " +"reduce time. Wall is still printed with original layer height." msgstr "" -"Для сокращения времени печати есть возможность печатать заполнение не на каждом слое, а на двух слоях сразу. \n" +"Для сокращения времени печати есть возможность печатать заполнение не на " +"каждом слое, а на двух слоях сразу. \n" "Периметры по-прежнему печатаются с исходной высотой слоя." msgid "Filament to print internal sparse infill." msgstr "Пластиковая нить для печати заполнения." -msgid "Line width of internal sparse infill. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для заполнения. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width of internal sparse infill. If expressed as a %, it will be " +"computed over the nozzle diameter." +msgstr "" +"Ширина экструзии для заполнения. Если задано в процентах, то значение " +"вычисляться относительно диаметра сопла." msgid "Infill/Wall overlap" msgstr "Перекрытие линий заполнения с линиями периметра" -msgid "Infill area is enlarged slightly to overlap with wall for better bonding. The percentage value is relative to line width of sparse infill" -msgstr "Параметр указывает на сколько процентов заполнение будет перекрываться с периметром для лучшего соединения друг с другом." +msgid "" +"Infill area is enlarged slightly to overlap with wall for better bonding. " +"The percentage value is relative to line width of sparse infill" +msgstr "" +"Параметр указывает на сколько процентов заполнение будет перекрываться с " +"периметром для лучшего соединения друг с другом." msgid "Speed of internal sparse infill" msgstr "Скорость заполнения" @@ -7520,14 +9072,26 @@ msgstr "Скорость заполнения" msgid "Interface shells" msgstr "Связующие оболочки" -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 "Принудительное создание замкнутых (сплошных) оболочек между смежными материалами/объёмами. Полезно для многоэкструдерных принтеров при печати полупрозрачными материалами или растворимой поддержкой. Помогает избежать диффузию материалов." +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 "" +"Принудительное создание замкнутых (сплошных) оболочек между смежными " +"материалами/объёмами. Полезно для многоэкструдерных принтеров при печати " +"полупрозрачными материалами или растворимой поддержкой. Помогает избежать " +"диффузию материалов." msgid "Ironing Type" msgstr "Тип разглаживания" -msgid "Ironing is using small flow to print on same height of surface again to make flat surface more smooth. This setting controls which layer being ironed" -msgstr "При разглаживании сопло выполняет вторую фазу заполнения на том же слое (с небольшим потоком), чтобы заполнить отверстия и сгладить выступающие части пластика. Этот параметр контролирует, какой слой необходимо сгладить." +msgid "" +"Ironing is using small flow to print on same height of surface again to make " +"flat surface more smooth. This setting controls which layer being ironed" +msgstr "" +"При разглаживании сопло выполняет вторую фазу заполнения на том же слое (с " +"небольшим потоком), чтобы заполнить отверстия и сгладить выступающие части " +"пластика. Этот параметр контролирует, какой слой необходимо сгладить." msgid "No ironing" msgstr "Без разглаживания" @@ -7547,8 +9111,12 @@ msgstr "Шаблон разглаживания" msgid "Ironing flow" msgstr "Поток" -msgid "The amount of material to extrude during ironing. Relative to flow of normal layer height. Too high value results in overextrusion on the surface" -msgstr "Количество материала, которое необходимо выдавить во время разглаживания относительно потока при нормальной высоте слоя." +msgid "" +"The amount of material to extrude during ironing. Relative to flow of normal " +"layer height. Too high value results in overextrusion on the surface" +msgstr "" +"Количество материала, которое необходимо выдавить во время разглаживания " +"относительно потока при нормальной высоте слоя." msgid "Ironing line spacing" msgstr "Расстояние между линиями разглаживания" @@ -7563,16 +9131,25 @@ msgid "Print speed of ironing lines" msgstr "Скорость разглаживания" msgid "This gcode part is inserted at every layer change after lift z" -msgstr "Этот G-код вставляется при каждой смене слоя, сразу после перемещения оси Z." +msgstr "" +"Этот G-код вставляется при каждой смене слоя, сразу после перемещения оси Z." msgid "Supports silent mode" msgstr "Поддержка тихого режима" -msgid "Whether the machine supports silent mode in which machine use lower acceleration to print" -msgstr "Поддержка тихого режима, в котором принтер использует меньшее ускорение печати для уменьшения уровня шума." +msgid "" +"Whether the machine supports silent mode in which machine use lower " +"acceleration to print" +msgstr "" +"Поддержка тихого режима, в котором принтер использует меньшее ускорение " +"печати для уменьшения уровня шума." -msgid "This G-code will be used as a code for the pause print. User can insert pause G-code in gcode viewer" -msgstr "Этот G-код используется для задания паузы печати. Пользователь может вставить G-код паузы в просмотрщике G-кода." +msgid "" +"This G-code will be used as a code for the pause print. User can insert " +"pause G-code in gcode viewer" +msgstr "" +"Этот G-код используется для задания паузы печати. Пользователь может " +"вставить G-код паузы в просмотрщике G-кода." msgid "This G-code will be used as a custom code" msgstr "Этот G-код используется для пользовательского кода." @@ -7680,40 +9257,106 @@ msgid "Maximum acceleration for travel" msgstr "Максимальное ускорение при перемещении" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" -msgstr "Максимальное ускорение при перемещении (M204 T), применяемое только для Marlin 2" +msgstr "" +"Максимальное ускорение при перемещении (M204 T), применяемое только для " +"Marlin 2" -msgid "Maximum acceleration for travel (M204 T)" -msgstr "Максимальное ускорение при перемещении (M204 T)" - -msgid "Fan speed" -msgstr "Скорость вентилятора" - -msgid "Part cooling fan speed may be increased when auto cooling is enabled. This is the maximum speed limitation of part cooling fan" -msgstr "Скорость вентилятора охлаждения моделей может быть увеличена, если включено автоматическое охлаждение. Это максимальное ограничение скорости вентилятора для охлаждения моделей." +msgid "" +"Part cooling fan speed may be increased when auto cooling is enabled. This " +"is the maximum speed limitation of part cooling fan" +msgstr "" +"Скорость вентилятора охлаждения моделей может быть увеличена, если включено " +"автоматическое охлаждение. Это максимальное ограничение скорости вентилятора " +"для охлаждения моделей." msgid "Max" msgstr "Макс." -msgid "The largest printable layer height for extruder. Used tp limits the maximum layer hight when enable adaptive layer height" -msgstr "Это наибольшая высота печатаемого слоя для этого экструдера, которая используется для ограничения функции «Переменная высота слоёв»." +msgid "" +"The largest printable layer height for extruder. Used tp limits the maximum " +"layer hight when enable adaptive layer height" +msgstr "" +"Это наибольшая высота печатаемого слоя для этого экструдера, которая " +"используется для ограничения функции «Переменная высота слоёв»." + +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" msgid "Minimum speed for part cooling fan" msgstr "Минимальная скорость вентилятора обдува модели." -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" -msgstr "Скорость вращения вспомогательного вентилятора для охлаждения моделей. Он всегда будет работать с этой скоростью, за исключением первых нескольких слоёв, которые обычно настроены на работу без охлаждения." +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" +msgstr "" +"Скорость вращения вспомогательного вентилятора для охлаждения моделей. Он " +"всегда будет работать с этой скоростью, за исключением первых нескольких " +"слоёв, которые обычно настроены на работу без охлаждения." msgid "Min" msgstr "Мин." -msgid "The lowest printable layer height for extruder. Used tp limits the minimum layer hight when enable adaptive layer height" -msgstr "Это наименьшая высота печатаемого слоя для данного экструдера и в то же время нижний предел для функции «Переменная высота слоёв»." +msgid "" +"The lowest printable layer height for extruder. Used tp limits the minimum " +"layer hight when enable adaptive layer height" +msgstr "" +"Это наименьшая высота печатаемого слоя для данного экструдера и в то же " +"время нижний предел для функции «Переменная высота слоёв»." msgid "Min print speed" msgstr "Минимальная скорость печати" msgid "The minimum printing speed when slow down for cooling" -msgstr "Минимальная скорость печати при которой происходит сброс скорости для лучшего охлаждения." +msgstr "" +"Минимальная скорость печати при которой происходит сброс скорости для " +"лучшего охлаждения." msgid "Nozzle diameter" msgstr "Диаметр сопла" @@ -7724,14 +9367,22 @@ msgstr "Диаметр сопла" msgid "Configuration notes" msgstr "Примечание конфигурации" -msgid "You can put here your personal notes. This text will be added to the G-code header comments." -msgstr "Здесь вы можете написать свои замечания для текущего профиля. Этот текст будет добавлен к комментариям в заголовок G-кода." +msgid "" +"You can put here your personal notes. This text will be added to the G-code " +"header comments." +msgstr "" +"Здесь вы можете написать свои замечания для текущего профиля. Этот текст " +"будет добавлен к комментариям в заголовок G-кода." msgid "Host Type" msgstr "Тип хоста" -msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." -msgstr "Slic3r может загружать файл G-кода на хост принтера. Это поле должно содержать тип хоста." +msgid "" +"Slic3r can upload G-code files to a printer host. This field must contain " +"the kind of the host." +msgstr "" +"Slic3r может загружать файл G-кода на хост принтера. Это поле должно " +"содержать тип хоста." msgid "Nozzle volume" msgstr "Объём сопла" @@ -7739,6 +9390,57 @@ msgstr "Объём сопла" msgid "Volume of nozzle between the cutter and the end of nozzle" msgstr "Объём сопла между резцом прутка и кончиком сопла." +msgid "Cooling tube position" +msgstr "Позиция охлаждающей трубки" + +msgid "Distance of the center-point of the cooling tube from the extruder tip." +msgstr "" +"Расстояние между центральной точкой охлаждающей трубки и кончиком экструдера." + +msgid "Cooling tube length" +msgstr "Длина охлаждающей трубки" + +msgid "Length of the cooling tube to limit space for cooling moves inside it." +msgstr "" +"Длина охлаждающей трубки для ограничения перемещения при охлаждающих " +"движениях." + +msgid "High extruder current on filament swap" +msgstr "Повышение тока экструдера при замене прутка" + +msgid "" +"It may be beneficial to increase the extruder motor current during the " +"filament exchange sequence to allow for rapid ramming feed rates and to " +"overcome resistance when loading a filament with an ugly shaped tip." +msgstr "" +"Это может быть полезно для увеличения тока двигателя экструдера во время " +"замены прутка, чтобы быстро увеличить скорость подачи и преодолеть " +"сопротивление при загрузке прутка с плохой формой кончика." + +msgid "Filament parking position" +msgstr "Положение парковки прутка" + +msgid "" +"Distance of the extruder tip from the position where the filament is parked " +"when unloaded. This should match the value in printer firmware." +msgstr "" +"Расстояние от кончика экструдера до точки, где размещается пруток при " +"выгрузке. Расстояние должно соответствовать значению в прошивке принтера." + +msgid "Extra loading distance" +msgstr "Дополнительная длина загрузки" + +msgid "" +"When set to zero, the distance the filament is moved from parking position " +"during load is exactly the same as it was moved back during unload. When " +"positive, it is loaded further, if negative, the loading move is shorter " +"than unloading." +msgstr "" +"Если установлено 0, то расстояние, которое проходит пруток при перемещении " +"из положения парковки во время загрузки, точно такое же, как и при выгрузке. " +"При положительном значении, она загружается дальше; при отрицательном, ход " +"загрузки короче (по сравнению с выгрузкой)." + msgid "Start end points" msgstr "Начальные и конечные точки" @@ -7748,8 +9450,15 @@ msgstr "Начальная и конечная точки от зоны обре msgid "Reduce infill retraction" msgstr "Уменьшать отката при заполнении" -msgid "Don't retract when the travel is in infill area absolutely. 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" -msgstr "Отключает откат, когда перемещения полностью совершаются в области заполнения (и, таким образом, любые подтёки скорее всего будут не заметны). Это поможет снизить количество откатов при печати сложной модели и сэкономить время печати, но увеличит время нарезки и генерации G-кода." +msgid "" +"Don't retract when the travel is in infill area absolutely. 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" +msgstr "" +"Отключает откат, когда перемещения полностью совершаются в области " +"заполнения (и, таким образом, любые подтёки скорее всего будут не заметны). " +"Это поможет снизить количество откатов при печати сложной модели и " +"сэкономить время печати, но увеличит время нарезки и генерации G-кода." msgid "Enable" msgstr "Включить" @@ -7769,14 +9478,25 @@ msgstr "Изменение геометрии модели для печати msgid "Make overhang printable maximum angle" msgstr "Делать нависания пригодными для печати под максимальным углом" -msgid "Maximum angle of overhangs to allow after making more steep overhangs printable.90° will not change the model at all and allow any overhang, while 0 will replace all overhangs with conical material." -msgstr "Максимальный угол нависания, получаемый после изменения геометрии крутых нависаний. При 90°не происходит изменения формы модели. При 0° же, все нависания заменяются материалом конической геометрии." +msgid "" +"Maximum angle of overhangs to allow after making more steep overhangs " +"printable.90° will not change the model at all and allow any overhang, while " +"0 will replace all overhangs with conical material." +msgstr "" +"Максимальный угол нависания, получаемый после изменения геометрии крутых " +"нависаний. При 90°не происходит изменения формы модели. При 0° же, все " +"нависания заменяются материалом конической геометрии." msgid "Make overhang printable hole area" msgstr "Делать нависания отверстий пригодными для печати" -msgid "Maximum area of a hole in the base of the model before it's filled by conical material.A value of 0 will fill all the holes in the model base." -msgstr "Максимальная площадь отверстия в основании модели до его заполнения материалом конической геометрии. При 0 все отверстия в основании модели будут заполнены." +msgid "" +"Maximum area of a hole in the base of the model before it's filled by " +"conical material.A value of 0 will fill all the holes in the model base." +msgstr "" +"Максимальная площадь отверстия в основании модели до его заполнения " +"материалом конической геометрии. При 0 все отверстия в основании модели " +"будут заполнены." msgid "mm²" msgstr "мм²" @@ -7785,11 +9505,19 @@ msgid "Detect overhang wall" msgstr "Определять нависающие периметры" #, c-format, boost-format -msgid "Detect the overhang percentage relative to line width and use different speed to print. For 100%% overhang, bridge speed is used." -msgstr "Определяет процент нависания относительно ширины линии и использует разную скорость печати. Для 100%%-го свеса используется скорость печати мостов." +msgid "" +"Detect the overhang percentage relative to line width and use different " +"speed to print. For 100%% overhang, bridge speed is used." +msgstr "" +"Определяет процент нависания относительно ширины линии и использует разную " +"скорость печати. Для 100%%-го свеса используется скорость печати мостов." -msgid "Line width of inner wall. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии внутренних периметров. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width of inner wall. If expressed as a %, it will be computed over the " +"nozzle diameter." +msgstr "" +"Ширина экструзии внутренних периметров. Если задано в процентах, то значение " +"вычисляться относительно диаметра сопла." msgid "Speed of inner wall" msgstr "Скорость печати внутренних периметров." @@ -7797,8 +9525,18 @@ msgstr "Скорость печати внутренних периметров. msgid "Number of walls of every layer" msgstr "Количество периметров на каждом слое модели." -msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." -msgstr "Если вы хотите обработать выходной G-код с помощью пользовательских скриптов, просто перечислите здесь абсолютные пути к ним. Разделяйте скрипты точкой с запятой. Скриптам будет передан абсолютный путь к файлу G-кода в качестве первого аргумента, и они смогут получить доступ к настройкам конфигурации Slic3r, читая переменные окружения." +msgid "" +"If you want to process the output G-code through custom scripts, just list " +"their absolute paths here. Separate multiple scripts with a semicolon. " +"Scripts will be passed the absolute path to the G-code file as the first " +"argument, and they can access the Slic3r config settings by reading " +"environment variables." +msgstr "" +"Если вы хотите обработать выходной G-код с помощью пользовательских " +"скриптов, просто перечислите здесь абсолютные пути к ним. Разделяйте скрипты " +"точкой с запятой. Скриптам будет передан абсолютный путь к файлу G-кода в " +"качестве первого аргумента, и они смогут получить доступ к настройкам " +"конфигурации Slic3r, читая переменные окружения." msgid "Printer notes" msgstr "Примечания к принтеру" @@ -7810,7 +9548,9 @@ msgid "Raft contact Z distance" msgstr "Расстояние от подложки до модели по вертикали" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "Зазор между моделью и подложкой. Значение игнорируется при выборе растворимого материала." +msgstr "" +"Зазор между моделью и подложкой. Значение игнорируется при выборе " +"растворимого материала." msgid "Raft expansion" msgstr "Расширение подложки" @@ -7828,28 +9568,48 @@ msgid "Initial layer expansion" msgstr "Расширение первого слоя" msgid "Expand the first raft or support layer to improve bed plate adhesion" -msgstr "Расширение первого слоя подложки или поддержки в плоскости XY для улучшения адгезии с материалами склонными к отлипанию и закручиванию." +msgstr "" +"Расширение первого слоя подложки или поддержки в плоскости XY для улучшения " +"адгезии с материалами склонными к отлипанию и закручиванию." msgid "Raft layers" msgstr "Слоёв в подложке" -msgid "Object will be raised by this number of support layers. Use this function to avoid wrapping when print ABS" -msgstr "Параметр устанавливает высоту подложки в слоях, тем самым поднимая модель на заданное количество слоёв от стола. Используйте эту функцию, чтобы избежать деформации при печати ABS пластиком." +msgid "" +"Object will be raised by this number of support layers. Use this function to " +"avoid wrapping when print ABS" +msgstr "" +"Параметр устанавливает высоту подложки в слоях, тем самым поднимая модель на " +"заданное количество слоёв от стола. Используйте эту функцию, чтобы избежать " +"деформации при печати ABS пластиком." -msgid "G-code path is genereated after simplifing the contour of model to avoid too much points and gcode lines in gcode file. Smaller value means higher resolution and more time to slice" -msgstr "Разрешение G-кода. Путь G-кода создаётся после упрощения контура модели, чтобы избежать слишком большого количества точек и линий в G-коде. Меньшее значение означает более высокое разрешение и больше времени для нарезки." +msgid "" +"G-code path is genereated after simplifing the contour of model to avoid too " +"much points and gcode lines in gcode file. Smaller value means higher " +"resolution and more time to slice" +msgstr "" +"Разрешение G-кода. Путь G-кода создаётся после упрощения контура модели, " +"чтобы избежать слишком большого количества точек и линий в G-коде. Меньшее " +"значение означает более высокое разрешение и больше времени для нарезки." msgid "Travel distance threshold" msgstr "Порог перемещения для отката" -msgid "Only trigger retraction when the travel distance is longer than this threshold" -msgstr "Откат будет срабатывать только в том случае, если расстояние перемещения превысит этот порог." +msgid "" +"Only trigger retraction when the travel distance is longer than this " +"threshold" +msgstr "" +"Откат будет срабатывать только в том случае, если расстояние перемещения " +"превысит этот порог." msgid "Retract amount before wipe" msgstr "Величина отката перед очисткой" -msgid "The length of fast retraction before wipe, relative to retraction length" -msgstr "Длина быстрого отката перед очисткой, выраженная в процентах от общей длины отката." +msgid "" +"The length of fast retraction before wipe, relative to retraction length" +msgstr "" +"Длина быстрого отката перед очисткой, выраженная в процентах от общей длины " +"отката." msgid "Retract when change layer" msgstr "Откат при смене слоя" @@ -7863,14 +9623,41 @@ msgstr "Длина" msgid "Retraction Length" msgstr "Длина отката" -msgid "Some amount of material in extruder is pulled back to avoid ooze during long travel. Set zero to disable retraction" -msgstr "Некоторое количество материала в экструдере откатывается назад, чтобы избежать его течи при длительном перемещении. 0 - отключение отката." +msgid "" +"Some amount of material in extruder is pulled back to avoid ooze during long " +"travel. Set zero to disable retraction" +msgstr "" +"Некоторое количество материала в экструдере откатывается назад, чтобы " +"избежать его течи при длительном перемещении. 0 - отключение отката." msgid "Z hop when retract" msgstr "Подъём оси Z при откате" -msgid "Whenever the retraction is done, the nozzle is lifted a little to create clearance between nozzle and the print. It prevents nozzle from hitting the print when travel move. Using spiral line to lift z can prevent stringing" -msgstr "Здесь задаётся на сколько миллиметров будет каждый раз приподниматься ось Z, когда срабатывает откат. Это предотвращает задевание соплом печатаемой модели при перемещении. Использование спирального типа подъёма оси Z может предотвратить образование паутины." +msgid "" +"Whenever the retraction is done, the nozzle is lifted a little to create " +"clearance between nozzle and the print. It prevents nozzle from hitting the " +"print when travel move. Using spiral line to lift z can prevent stringing" +msgstr "" +"Здесь задаётся на сколько миллиметров будет каждый раз приподниматься ось Z, " +"когда срабатывает откат. Это предотвращает задевание соплом печатаемой " +"модели при перемещении. Использование спирального типа подъёма оси Z может " +"предотвратить образование паутины." + +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" msgid "Z hop type" msgstr "Тип подъёма оси Z" @@ -7884,20 +9671,34 @@ msgstr "Спиральный" msgid "Only lift Z above" msgstr "Приподнимать ось Z только выше" -msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z." -msgstr "Если указать положительное значение, ось Z будет подниматься только выше (после) заданной здесь высоты (высота считается от стола). Таким образом вы можете отключить подъём оси Z при печати первых слоёв." +msgid "" +"If you set this to a positive value, Z lift will only take place above the " +"specified absolute Z." +msgstr "" +"Если указать положительное значение, ось Z будет подниматься только выше " +"(после) заданной здесь высоты (высота считается от стола). Таким образом вы " +"можете отключить подъём оси Z при печати первых слоёв." msgid "Only lift Z below" msgstr "Приподнимать ось Z только ниже" -msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z." -msgstr "Если указать положительное значение, ось Z будет подниматься только ниже (до) заданной здесь высоты (высота считается от стола). Таким образом вы можете запретить подъём оси Z выше установленной высоты." +msgid "" +"If you set this to a positive value, Z lift will only take place below the " +"specified absolute Z." +msgstr "" +"Если указать положительное значение, ось Z будет подниматься только ниже " +"(до) заданной здесь высоты (высота считается от стола). Таким образом вы " +"можете запретить подъём оси Z выше установленной высоты." msgid "On surfaces" msgstr "На поверхностях" -msgid "Enforce Z Hop behavior. This setting is impacted by the above settings (Only lift Z above/below)." -msgstr "Принудительное поднятие оси Z. На этот параметр влияют указанные выше параметры (Приподнимать ось Z только выше/ниже)." +msgid "" +"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " +"lift Z above/below)." +msgstr "" +"Принудительное поднятие оси Z. На этот параметр влияют указанные выше " +"параметры (Приподнимать ось Z только выше/ниже)." msgid "All Surfaces" msgstr "Все верхние поверхности" @@ -7914,11 +9715,21 @@ msgstr "На верней и нижней" msgid "Extra length on restart" msgstr "Доп. длина подачи перед возобновлением печати" -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 "Дополнительная длина материала, которая будет выдавливаться после работы отката и перемещения. Для увеличения длины выдавливания ставится положительное значение (например 0.5 мм), для уменьшения отрицательное. Этот параметр редко нуждается в правке." +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 "" +"Дополнительная длина материала, которая будет выдавливаться после работы " +"отката и перемещения. Для увеличения длины выдавливания ставится " +"положительное значение (например 0.5 мм), для уменьшения отрицательное. Этот " +"параметр редко нуждается в правке." -msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." -msgstr "Компенсация длины выдавливаемого пластика перед возобновлением печати после смены сопла." +msgid "" +"When the retraction is compensated after changing tool, the extruder will " +"push this additional amount of filament." +msgstr "" +"Компенсация длины выдавливаемого пластика перед возобновлением печати после " +"смены сопла." msgid "Retraction Speed" msgstr "Скорость извлечения при откате" @@ -7929,14 +9740,22 @@ msgstr "Скорость извлечения материала при отка msgid "Deretraction Speed" msgstr "Скорость заправки при откате" -msgid "Speed for reloading filament into extruder. Zero means same speed with retraction" -msgstr "Скорость возврата материала при откате. Если оставить 0, будет использоваться та же скорость что и при извлечении." +msgid "" +"Speed for reloading filament into extruder. Zero means same speed with " +"retraction" +msgstr "" +"Скорость возврата материала при откате. Если оставить 0, будет " +"использоваться та же скорость что и при извлечении." msgid "Use firmware retraction" msgstr "Использовать откат из прошивки" -msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." -msgstr "Эта экспериментальная опция использует команды G10 и G11, чтобы прошивка обрабатывала откаты. Поддерживается только в последних версиях Marlin." +msgid "" +"This experimental setting uses G10 and G11 commands to have the firmware " +"handle the retraction. This is only supported in recent Marlin." +msgstr "" +"Эта экспериментальная опция использует команды G10 и G11, чтобы прошивка " +"обрабатывала откаты. Поддерживается только в последних версиях Marlin." msgid "Show auto-calibration marks" msgstr "Отображать на столе линии автокалибровки" @@ -7962,36 +9781,61 @@ msgstr "Случайно" msgid "Staggered inner seams" msgstr "Смещение внутренних швов" -msgid "This option causes the inner seams to be shifted backwards based on their depth, forming a zigzag pattern." -msgstr "Этот параметр заставляет внутренние швы смещаться назад в зависимости от их глубины, образуя зигзагообразный рисунок." +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" +"Этот параметр заставляет внутренние швы смещаться назад в зависимости от их " +"глубины, образуя зигзагообразный рисунок." msgid "Seam gap" msgstr "Зазор шва" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, the loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the current extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, " +"the loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the " +"current extruder diameter. The default value for this parameter is 10%." msgstr "" -"Чтобы уменьшить видимость шва при печати замкнутого контура, контур будет укорачиваться на заданную величину.\n" -"Это величина может быть указана в миллиметрах или в процентах от текущего диаметра сопла. Значение по умолчанию - 10%." +"Чтобы уменьшить видимость шва при печати замкнутого контура, контур будет " +"укорачиваться на заданную величину.\n" +"Это величина может быть указана в миллиметрах или в процентах от текущего " +"диаметра сопла. Значение по умолчанию - 10%." msgid "Role base 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 "Скорость очистки будет определяться скоростью текущего типа экструзии, т.е если операция очистки выполняется сразу после экструзии внешнего периметра, то для очистки используется скорость экструзии внешнего периметра." +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 "" +"Скорость очистки будет определяться скоростью текущего типа экструзии, т.е " +"если операция очистки выполняется сразу после экструзии внешнего периметра, " +"то для очистки используется скорость экструзии внешнего периметра." msgid "Wipe on loops" msgstr "Очистка в периметры" -msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." -msgstr "Чтобы минимизировать видимость шва при экструзии по замкнутому контуру, перед выходом экструдера из контура выполняется небольшое движение внутрь." +msgid "" +"To minimize the visibility of the seam in a closed loop extrusion, a small " +"inward movement is executed before the extruder leaves the loop." +msgstr "" +"Чтобы минимизировать видимость шва при экструзии по замкнутому контуру, " +"перед выходом экструдера из контура выполняется небольшое движение внутрь." msgid "Wipe speed" msgstr "Скорость очистки" -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% - значение по умолчанию." +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% - значение по " +"умолчанию." msgid "Skirt distance" msgstr "Расстояние до юбки" @@ -8017,33 +9861,66 @@ msgstr "Скорость печати юбки" msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." msgstr "Скорость печати юбки (мм/с). 0 - скорость экструзии слоя по умолчанию." -msgid "The printing speed in exported gcode will be slowed down, when the estimated layer time is shorter than this value, to get better cooling for these layers" -msgstr "Скорость печати в экспортированном G-коде будет замедлена, если расчётное время печати слоя меньше этого значения, для обеспечения лучшего охлаждения этих слоёв." +msgid "" +"The printing speed in exported gcode will be slowed down, when the estimated " +"layer time is shorter than this value, to get better cooling for these layers" +msgstr "" +"Скорость печати в экспортированном G-коде будет замедлена, если расчётное " +"время печати слоя меньше этого значения, для обеспечения лучшего охлаждения " +"этих слоёв." msgid "Minimum sparse infill threshold" msgstr "Мин. порог разреженного заполнения" -msgid "Sparse infill area which is smaller than threshold value is replaced by internal solid infill" -msgstr "Область с разреженным заполнением, размер которого меньше этого порогового значения, заменяется сплошным заполнением." +msgid "" +"Sparse infill area which is smaller than threshold value is replaced by " +"internal solid infill" +msgstr "" +"Область с разреженным заполнением, размер которого меньше этого порогового " +"значения, заменяется сплошным заполнением." -msgid "Line width of internal solid infill. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для внутреннего сплошного заполнения. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width of internal solid infill. If expressed as a %, it will be " +"computed over the nozzle diameter." +msgstr "" +"Ширина экструзии для внутреннего сплошного заполнения. Если задано в " +"процентах, то значение вычисляться относительно диаметра сопла." msgid "Speed of internal solid infill, not the top and bottom surface" -msgstr "Скорость печати внутреннего сплошного заполнения, за исключением верхней и нижней поверхностей." +msgstr "" +"Скорость печати внутреннего сплошного заполнения, за исключением верхней и " +"нижней поверхностей." msgid "Spiral vase" msgstr "Спиральная ваза" -msgid "Spiralize 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 "Печать спиральных и пустотелых, а также тонкостенных моделей. Модель печатается в одну стенку без верней поверхности, заполнения и поддержки. При этом сопло движется вдоль периметра непрерывно постепенно поднимаясь, так получаются ровные красивые вазы без видимых швов." +msgid "" +"Spiralize 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 "" +"Печать спиральных и пустотелых, а также тонкостенных моделей. Модель " +"печатается в одну стенку без верней поверхности, заполнения и поддержки. При " +"этом сопло движется вдоль периметра непрерывно постепенно поднимаясь, так " +"получаются ровные красивые вазы без видимых швов." 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, prime tower is required for smooth mode to wipe nozzle." +"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, prime tower is required for smooth mode to " +"wipe nozzle." msgstr "" -"Если выбран плавный или обычный режим записи, то при каждой печати будет создаваться ускоренное видео печати. После печати каждого слоя встроенная камера делает снимок и по её завершении все эти снимки объединяются в единое ускоренное видео. Если включён плавный режим, то после печати каждого слоя головка перемещается к лотку для удаления излишков, а уже затем делается снимок. Очистка сопла на " -"черновой башне обязательна, т.к. при плавном режиме возможно вытекание материалы из сопла когда делается снимок." +"Если выбран плавный или обычный режим записи, то при каждой печати будет " +"создаваться ускоренное видео печати. После печати каждого слоя встроенная " +"камера делает снимок и по её завершении все эти снимки объединяются в единое " +"ускоренное видео. Если включён плавный режим, то после печати каждого слоя " +"головка перемещается к лотку для удаления излишков, а уже затем делается " +"снимок. Очистка сопла на черновой башне обязательна, т.к. при плавном режиме " +"возможно вытекание материалы из сопла когда делается снимок." msgid "Traditional" msgstr "Обычный" @@ -8058,19 +9935,74 @@ msgid "Start G-code when start the whole printing" msgstr "G-код выполняемый при каждом запуске печати." msgid "Start G-code when start the printing of this filament" -msgstr "Стартовый G-код выполняемый при запуске печати с текущей пластиковой нитью." +msgstr "" +"Стартовый G-код выполняемый при запуске печати с текущей пластиковой нитью." + +msgid "Single Extruder Multi Material" +msgstr "Мультиматериальный одиночный экструдер" + +msgid "Use single nozzle to print multi filament" +msgstr "" +"Использование одной экструзионной головы для печати несколькими видами/" +"цветами пластика." + +msgid "Purge in prime tower" +msgstr "Очистка в черновую башню" + +msgid "Purge remaining filament into prime tower" +msgstr "Очистка сопла от остатков материала в черновую башню" + +msgid "Enable filament ramming" +msgstr "Включить рэмминг прутка" + +msgid "No sparse layers (EXPERIMENTAL)" +msgstr "Отсутствие разреженных слоёв (экспериментально)" + +msgid "" +"If enabled, the wipe tower will not be printed on layers with no " +"toolchanges. On layers with a toolchange, extruder will travel downward to " +"print the wipe tower. User is responsible for ensuring there is no collision " +"with the print." +msgstr "" +"Если этот параметр включён, черновая башня не будет печататься на слоях где " +"не происходит смена инструмента. На слоях, где происходит смена инструмента, " +"экструдер будет опускаться вниз до верхней части черновой башни, чтобы " +"напечатать её. Эта функция помечена как экспериментальная, поэтому " +"пользователь несёт ответственность за то, чтобы не допустить столкновения " +"экструдера с напечатанным." + +msgid "Prime all printing extruders" +msgstr "Подготовка всех печатающих экструдеров" + +msgid "" +"If enabled, all printing extruders will be primed at the front edge of the " +"print bed at the start of the print." +msgstr "" +"Если этот параметр включён, все печатающие экструдеры в начале печати будут " +"подготавливаться на переднем крае стола" msgid "Slice gap closing radius" msgstr "Радиус закрытия пробелов при нарезке" -msgid "Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low." -msgstr "Трещины, меньше чем 2-кратный радиус закрытия пробелов, будут заполняться во время нарезки треугольной сетки. Операция закрытия пробелов может привести к снижению конечного разрешение печати, поэтому рекомендуется выставлять это значение достаточно низким." +msgid "" +"Cracks smaller than 2x gap closing radius are being filled during the " +"triangle mesh slicing. The gap closing operation may reduce the final print " +"resolution, therefore it is advisable to keep the value reasonably low." +msgstr "" +"Трещины, меньше чем 2-кратный радиус закрытия пробелов, будут заполняться во " +"время нарезки треугольной сетки. Операция закрытия пробелов может привести к " +"снижению конечного разрешение печати, поэтому рекомендуется выставлять это " +"значение достаточно низким." msgid "Slicing Mode" msgstr "Режим нарезки" -msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." -msgstr "Режим нарезки «чётный-нечётный» используется для моделей самолетов с ресурса 3DLabPrint. А «Закрытие отверстий» для закрытия всех отверстий в модели." +msgid "" +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " +"close all holes in the model." +msgstr "" +"Режим нарезки «чётный-нечётный» используется для моделей самолетов с ресурса " +"3DLabPrint. А «Закрытие отверстий» для закрытия всех отверстий в модели." msgid "Regular" msgstr "Обычный" @@ -8087,8 +10019,15 @@ msgstr "Включить поддержку" msgid "Enable support generation." msgstr "Включить генерацию поддержки." -msgid "normal(auto) and tree(auto) is used to generate support automatically. If normal(manual) or tree(manual) is selected, only support enforcers are generated" -msgstr "Тип поддержки «Обычная (авто)» и «Древовидная (авто)» используются для автоматического создания поддержки. Если выбран тип поддержки «Обычная (вручную)» или «Древовидная (вручную)», генерируется только принудительная поддержка." +msgid "" +"normal(auto) and tree(auto) is used to generate support automatically. If " +"normal(manual) or tree(manual) is selected, only support enforcers are " +"generated" +msgstr "" +"Тип поддержки «Обычная (авто)» и «Древовидная (авто)» используются для " +"автоматического создания поддержки. Если выбран тип поддержки «Обычная " +"(вручную)» или «Древовидная (вручную)», генерируется только принудительная " +"поддержка." msgid "normal(auto)" msgstr "Обычная (авто)" @@ -8112,7 +10051,9 @@ msgid "Pattern angle" msgstr "Угол печати шаблона поддержки" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "Используйте эту настройку для поворота шаблона поддержки в горизонтальной плоскости." +msgstr "" +"Используйте эту настройку для поворота шаблона поддержки в горизонтальной " +"плоскости." msgid "On build plate only" msgstr "Поддержка только от стола" @@ -8123,47 +10064,73 @@ msgstr "Создавать поддержку только от стола." msgid "Support critical regions only" msgstr "Поддержка только критических областей" -msgid "Only create support for critical regions including sharp tail, cantilever, etc." -msgstr "Создание поддержек только для критических областей, включая острые концы, консоли (горизонтально выступающие элементы) и т.д." +msgid "" +"Only create support for critical regions including sharp tail, cantilever, " +"etc." +msgstr "" +"Создание поддержек только для критических областей, включая острые концы, " +"консоли (горизонтально выступающие элементы) и т.д." msgid "Remove small overhangs" msgstr "Игнорировать небольшие нависания" msgid "Remove small overhangs that possibly need no supports." -msgstr "Не печатать поддержку под небольшими нависаниями, которые, как вам казалось, нуждаются в них." +msgstr "" +"Не печатать поддержку под небольшими нависаниями, которые, как вам казалось, " +"нуждаются в них." msgid "Top Z distance" msgstr "Зазор поддержки сверху" msgid "The z gap between the top support interface and object" -msgstr "Вертикальное расстояние между верхней частью модели и связующим слоем поддержки." +msgstr "" +"Вертикальное расстояние между верхней частью модели и связующим слоем " +"поддержки." msgid "Bottom Z distance" msgstr "Зазор поддержки снизу" msgid "The z gap between the bottom support interface and object" -msgstr "Вертикальное расстояние между нижней частью модели и связующим слоем поддержки." +msgstr "" +"Вертикальное расстояние между нижней частью модели и связующим слоем " +"поддержки." msgid "Support/raft base" msgstr "Базовая поддержка/подложка" -msgid "Filament to print support base and raft. \"Default\" means no specific filament for support and current filament is used" -msgstr "Пластиковая нить для печати базовой поддержки и плота. Значение «По умолчанию» означает, что для поддержки используется текущая пластиковая нить." +msgid "" +"Filament to print support base and raft. \"Default\" means no specific " +"filament for support and current filament is used" +msgstr "" +"Пластиковая нить для печати базовой поддержки и плота. Значение «По " +"умолчанию» означает, что для поддержки используется текущая пластиковая нить." -msgid "Line width of support. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для поддержки. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width of support. If expressed as a %, it will be computed over the " +"nozzle diameter." +msgstr "" +"Ширина экструзии для поддержки. Если задано в процентах, то значение " +"вычисляться относительно диаметра сопла." msgid "Interface use loop pattern" msgstr "Связующий слой петлями" -msgid "Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "Печатать контактный слой связующего слоя поддержки петлями. По умолчанию отключено." +msgid "" +"Cover the top contact layer of the supports with loops. Disabled by default." +msgstr "" +"Печатать контактный слой связующего слоя поддержки петлями. По умолчанию " +"отключено." msgid "Support/raft interface" msgstr "Связующий слой поддержки/подложки" -msgid "Filament to print support interface. \"Default\" means no specific filament for support interface and current filament is used" -msgstr "Пластиковая нить для печати связующего слоя поддержки. Значение «По умолчанию» означает, что для связующего слоя поддержки используется текущая пластиковая нить." +msgid "" +"Filament to print support interface. \"Default\" means no specific filament " +"for support interface and current filament is used" +msgstr "" +"Пластиковая нить для печати связующего слоя поддержки. Значение «По " +"умолчанию» означает, что для связующего слоя поддержки используется текущая " +"пластиковая нить." msgid "Top interface layers" msgstr "Связующих слоёв сверху" @@ -8178,13 +10145,17 @@ msgid "Top interface spacing" msgstr "Расстояние между линиями связующего слоя сверху" msgid "Spacing of interface lines. Zero means solid interface" -msgstr "Расстояние между линиями связующего слоя сверху. Установите 0, чтобы получить сплошной слой." +msgstr "" +"Расстояние между линиями связующего слоя сверху. Установите 0, чтобы " +"получить сплошной слой." msgid "Bottom interface spacing" msgstr "Расстояние между линиями связующего слоя снизу" msgid "Spacing of bottom interface lines. Zero means solid interface" -msgstr "Расстояние между линиями связующего слоя снизу. Установите 0, чтобы получить сплошной слой." +msgstr "" +"Расстояние между линиями связующего слоя снизу. Установите 0, чтобы получить " +"сплошной слой." msgid "Speed of support interface" msgstr "Скорость печати связующего слоя поддержки." @@ -8204,8 +10175,14 @@ msgstr "Полость" msgid "Interface pattern" msgstr "Шаблон связующего слоя" -msgid "Line pattern of support interface. Default pattern for non-soluble support interface is Rectilinear, while default pattern for soluble support interface is Concentric" -msgstr "Шаблон, по которому будет происходить печать связующего слоя поддержки. При выборе по умолчанию, шаблон для нерастворимой связующей поддержки - прямолинейный, для растворимой - концентрический." +msgid "" +"Line pattern of support interface. Default pattern for non-soluble support " +"interface is Rectilinear, while default pattern for soluble support " +"interface is Concentric" +msgstr "" +"Шаблон, по которому будет происходить печать связующего слоя поддержки. При " +"выборе по умолчанию, шаблон для нерастворимой связующей поддержки - " +"прямолинейный, для растворимой - концентрический." msgid "Rectilinear Interlaced" msgstr "Прямолинейный (чередование направлений)" @@ -8220,20 +10197,22 @@ msgid "Normal Support expansion" msgstr "Горизонтальное расширение поддержки" msgid "Expand (+) or shrink (-) the horizontal span of normal support" -msgstr "Горизонтальное расширение (+) или сужение (-) базовой поддержки в плоскости XY." +msgstr "" +"Горизонтальное расширение (+) или сужение (-) базовой поддержки в плоскости " +"XY." msgid "Speed of support" msgstr "Скорость печати поддержки." msgid "" -"Style and shape of the support. For normal support, projecting the supports into a regular grid will create more stable supports (default), while snug support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save a lot of material (default), while hybrid style will create similar structure to normal support under large flat overhangs." +"Style and shape of the support. For normal support, projecting the supports " +"into a regular grid will create more stable supports (default), while snug " +"support towers will save material and reduce object scarring.\n" +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"Стиль и форма создаваемой поддержки.\n" -"\n" -"Стиль «Сетка» создаёт более устойчивые опоры. Стиль «Аккуратный» экономит материал и уменьшает образование дефектов на моделях.\n" -"\n" -"Для древовидной поддержки, при стройном стиле происходит более агрессивное объединение ветвей и экономия материала (по умолчанию). В то время как гибридный стиль создаёт структуру, схожую с обычную поддержкой при больших плоских нависаниях." msgid "Snug" msgstr "Аккуратный" @@ -8253,45 +10232,94 @@ msgstr "Органический" msgid "Independent support layer height" 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 "Слои поддержки будут иметь высоту слоя, отличную от высоты слоя модели. Это необходимо для настройки зазора между моделью и поддержкой для экономии времени печати. Опция неактивна, когда включена черновая башня." +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 "" +"Слои поддержки будут иметь высоту слоя, отличную от высоты слоя модели. Это " +"необходимо для настройки зазора между моделью и поддержкой для экономии " +"времени печати. Опция неактивна, когда включена черновая башня." msgid "Threshold angle" msgstr "Пороговый угол поддержки" -msgid "Support will be generated for overhangs whose slope angle is below the threshold." -msgstr "Для нависаний, угол наклона которых ниже заданного порогового значения, будут использоваться поддержки." +msgid "" +"Support will be generated for overhangs whose slope angle is below the " +"threshold." +msgstr "" +"Для нависаний, угол наклона которых ниже заданного порогового значения, " +"будут использоваться поддержки." msgid "Tree support branch angle" msgstr "Угол нависания ветвей древовидной поддержки" -msgid "This setting determines the maximum overhang angle that t he branches of tree support allowed to make.If the angle is increased, the branches can be printed more horizontally, allowing them to reach farther." -msgstr "Этот параметр определяет максимальный угол нависания ветвей древовидной поддержки. При увеличении угла, ветви печатаются более горизонтально, что позволяет им достигать большего охвата. При указании меньшего угла, поддержка будет более вертикальной и устойчивой." +msgid "" +"This setting determines the maximum overhang angle that t he branches of " +"tree support allowed to make.If the angle is increased, the branches can be " +"printed more horizontally, allowing them to reach farther." +msgstr "" +"Этот параметр определяет максимальный угол нависания ветвей древовидной " +"поддержки. При увеличении угла, ветви печатаются более горизонтально, что " +"позволяет им достигать большего охвата. При указании меньшего угла, " +"поддержка будет более вертикальной и устойчивой." msgid "Preferred Branch Angle" msgstr "Предпочтительный угол ответвления" #. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" -msgid "The preferred angle of the branches, when they do not have to avoid the model. Use a lower angle to make them more vertical and more stable. Use a higher angle for branches to merge faster." -msgstr "Предпочтительный угол ответвления ветвей, при котором не нужно избегать модель. При указании меньшего угла поддержка будет более вертикальной и устойчивой. Для получения большего охвата указывайте более высокий угол." +msgid "" +"The preferred angle of the branches, when they do not have to avoid the " +"model. Use a lower angle to make them more vertical and more stable. Use a " +"higher angle for branches to merge faster." +msgstr "" +"Предпочтительный угол ответвления ветвей, при котором не нужно избегать " +"модель. При указании меньшего угла поддержка будет более вертикальной и " +"устойчивой. Для получения большего охвата указывайте более высокий угол." msgid "Tree support branch distance" msgstr "Расстояние между ветвями древовидной поддержки" -msgid "This setting determines the distance between neighboring tree support nodes." -msgstr "Этот параметр определяет, насколько далеко должны друг от друга располагаться ветви при касании модели." +msgid "" +"This setting determines the distance between neighboring tree support nodes." +msgstr "" +"Этот параметр определяет, насколько далеко должны друг от друга " +"располагаться ветви при касании модели." + +msgid "Branch Density" +msgstr "Плотность ветвей" + +#. TRN PrintSettings: "Organic supports" > "Branch Density" +msgid "" +"Adjusts the density of the support structure used to generate the tips of " +"the branches. A higher value results in better overhangs but the supports " +"are harder to remove, thus it is recommended to enable top support " +"interfaces instead of a high branch density value if dense interfaces are " +"needed." +msgstr "" +"Регулирует плотность создания ветвей в месте контакта с моделью. Большее " +"значение приводит к улучшению качества печати нависаний, но такие поддержки " +"сложнее удалять, поэтому рекомендуется вместо высокого значения плотности " +"ветвей включать связующие слои поддержки." msgid "Adaptive layer height" msgstr "Переменная высота слоёв" -msgid "Enabling this option means the height of tree support layer except the first will be automatically calculated " -msgstr "Включение автоматического расчёта высоты слоя древовидной поддержки, кроме первого слоя." +msgid "" +"Enabling this option means the height of tree support layer except the " +"first will be automatically calculated " +msgstr "" +"Включение автоматического расчёта высоты слоя древовидной поддержки, кроме " +"первого слоя." msgid "Auto brim width" msgstr "Автоширина каймы" -msgid "Enabling this option means the width of the brim for tree support will be automatically calculated" -msgstr "Включение автоматического расчёта ширины каймы для древовидной поддержки." +msgid "" +"Enabling this option means the width of the brim for tree support will be " +"automatically calculated" +msgstr "" +"Включение автоматического расчёта ширины каймы для древовидной поддержки." msgid "Tree support brim width" msgstr "Ширина каймы древовидной поддержки" @@ -8299,51 +10327,109 @@ msgstr "Ширина каймы древовидной поддержки" msgid "Distance from tree branch to the outermost brim line" msgstr "Расстояние от древовидной поддержки до внешней линии каймы." +msgid "Tip Diameter" +msgstr "Диаметр кончика ветки" + +#. TRN PrintSettings: "Organic supports" > "Tip Diameter" +msgid "Branch tip diameter for organic supports." +msgstr "Диаметр кончика ветки органической поддержки." + # ??? msgid "Tree support branch diameter" msgstr "Диаметр ветвей древовидной поддержки" msgid "This setting determines the initial diameter of support nodes." -msgstr "Этот параметр определяет начальный диаметр ветвей, т.е. их диаметр в месте контакта с моделью." +msgstr "" +"Этот параметр определяет начальный диаметр ветвей, т.е. их диаметр в месте " +"контакта с моделью." + +#. TRN PrintSettings: #lmFIXME +msgid "Branch Diameter Angle" +msgstr "Угол изменения диаметра ветвей" + +#. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" +msgid "" +"The angle of the branches' diameter as they gradually become thicker towards " +"the bottom. An angle of 0 will cause the branches to have uniform thickness " +"over their length. A bit of an angle can increase stability of the organic " +"support." +msgstr "" +"Угол изменения диаметра ветвей по мере их постепенного утолщения к " +"основанию. Если значение угла равно 0, ветви будут иметь одинаковую толщину " +"по всей своей длине. Небольшой угол может повысить устойчивость органической " +"поддержки." + +msgid "Branch Diameter with double walls" +msgstr "Диаметр ветвей с двойными стенками" + +#. TRN PrintSettings: "Organic supports" > "Branch Diameter" +msgid "" +"Branches with area larger than the area of a circle of this diameter will be " +"printed with double walls for stability. Set this value to zero for no " +"double walls." +msgstr "" +"Ветви, толщина которых больше указанного диаметра, будут напечатаны с " +"двойными стенками для прочности. Установите 0, если двойные стенки у ветвей " +"не нужны." msgid "Tree support wall loops" msgstr "Периметров древовидной поддержки" msgid "This setting specify the count of walls around tree support" -msgstr "Этот параметр определяет количество периметров у печатаемой древовидной поддержки." +msgstr "" +"Этот параметр определяет количество периметров у печатаемой древовидной " +"поддержки." msgid "Tree support with infill" msgstr "Древовидная поддержка с заполнением" -msgid "This setting specifies whether to add infill inside large hollows of tree support" -msgstr "Этот параметр определяет, следует ли заполнять большие полости внутри древовидной поддержки." +msgid "" +"This setting specifies whether to add infill inside large hollows of tree " +"support" +msgstr "" +"Этот параметр определяет, следует ли заполнять большие полости внутри " +"древовидной поддержки." msgid "Chamber temperature" msgstr "Температура термокамеры" -msgid "Target chamber temperature" -msgstr "Температура, которую необходимо поддерживать внутри принтера." +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" +msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "Температура сопла при печати для слоёв после первого." -msgid "Bed temperature difference" -msgstr "Разница температур подогреваемого стола" - -msgid "Do not recommend bed temperature of other layer to be lower than initial layer for more than this threshold. Too low bed temperature of other layer may cause the model broken free from build plate" -msgstr "Не рекомендуется, чтобы температура последующих слоёв была ниже температуры первого слоя, более чем на это пороговое значение. Слишком низкая температура последующих слоёв может привести к отрыву модели от стола." - msgid "Detect thin wall" msgstr "Обнаружение тонких стенок" -msgid "Detect thin wall which can't contain two line width. And use single line to print. Maybe printed not very well, because it's not closed loop" -msgstr "Обнаружение тонких стенок (стенки одинарной ширины), которые можно напечатать только в один проход экструдера. Возможно, будет напечатано не очень хорошо, так как это не замкнутый контур." +msgid "" +"Detect thin wall which can't contain two line width. And use single line to " +"print. Maybe printed not very well, because it's not closed loop" +msgstr "" +"Обнаружение тонких стенок (стенки одинарной ширины), которые можно " +"напечатать только в один проход экструдера. Возможно, будет напечатано не " +"очень хорошо, так как это не замкнутый контур." -msgid "This gcode is inserted when change filament, including T command to trigger tool change" -msgstr "Этот G-код вставляется при смене материала, включая команду T для запуска смены инструмента." +msgid "" +"This gcode is inserted when change filament, including T command to trigger " +"tool change" +msgstr "" +"Этот G-код вставляется при смене материала, включая команду T для запуска " +"смены инструмента." -msgid "Line width for top surfaces. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для верхней поверхности. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width for top surfaces. If expressed as a %, it will be computed over " +"the nozzle diameter." +msgstr "" +"Ширина экструзии для верхней поверхности. Если задано в процентах, то " +"значение вычисляться относительно диаметра сопла." msgid "Speed of top surface infill which is solid" msgstr "Скорость печати верхних сплошных поверхностей." @@ -8351,8 +10437,14 @@ msgstr "Скорость печати верхних сплошных повер msgid "Top shell layers" msgstr "Сплошных слоёв сверху" -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 top shell thickness, the top shell layers will be increased" -msgstr "Количество сплошных слоёв при печати верхней поверхности модели. Если толщина, рассчитанная с помощью этого значения, меньше толщины оболочки сверху, количество сплошных слоёв сверху будет увеличено." +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 top shell " +"thickness, the top shell layers will be increased" +msgstr "" +"Количество сплошных слоёв при печати верхней поверхности модели. Если " +"толщина, рассчитанная с помощью этого значения, меньше толщины оболочки " +"сверху, количество сплошных слоёв сверху будет увеличено." msgid "Top solid layers" msgstr "Верхних сплошных слоёв" @@ -8360,10 +10452,20 @@ msgstr "Верхних сплошных слоёв" msgid "Top shell thickness" msgstr "Толщина оболочки сверху" -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 shell when layer height is small. 0 means that this setting is disabled and thickness of top shell is absolutely determained by top shell layers" +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 shell when layer height is small. 0 means that this setting " +"is disabled and thickness of top shell is absolutely determained by top " +"shell layers" msgstr "" -"Минимальная толщина оболочки сверху в мм. Если толщина оболочки, рассчитанная по количеству сплошных слоёв сверху, меньше этого значения, количество сплошных слоёв сверху будет автоматически увеличено при нарезке, для удовлетворения минимальной толщины оболочки. Это позволяет избежать слишком тонкой оболочки при небольшой высоте слоя. 0 означает, что этот параметр отключён, а толщина оболочки " -"сверху полностью задаётся количеством сплошных слоёв снизу." +"Минимальная толщина оболочки сверху в мм. Если толщина оболочки, " +"рассчитанная по количеству сплошных слоёв сверху, меньше этого значения, " +"количество сплошных слоёв сверху будет автоматически увеличено при нарезке, " +"для удовлетворения минимальной толщины оболочки. Это позволяет избежать " +"слишком тонкой оболочки при небольшой высоте слоя. 0 означает, что этот " +"параметр отключён, а толщина оболочки сверху полностью задаётся количеством " +"сплошных слоёв снизу." msgid "Speed of travel which is faster and without extrusion" msgstr "Скорость перемещения экструдера при позиционировании без печати." @@ -8371,17 +10473,31 @@ msgstr "Скорость перемещения экструдера при по msgid "Wipe while retracting" msgstr "Очистка сопла при откате" -msgid "Move nozzle along the last extrusion path when retracting to clean leaked material on nozzle. This can minimize blob when print new part after travel" -msgstr "Позволяет соплу совершать движение очистки во время отката, перемещая его вдоль последнего пути экструзии. Это может снизить появление дефектов (каплей, пупырышек) при печати новой детали после перемещения." +msgid "" +"Move nozzle along the last extrusion path when retracting to clean leaked " +"material on nozzle. This can minimize blob when print new part after travel" +msgstr "" +"Позволяет соплу совершать движение очистки во время отката, перемещая его " +"вдоль последнего пути экструзии. Это может снизить появление дефектов " +"(каплей, пупырышек) при печати новой детали после перемещения." msgid "Wipe Distance" msgstr "Расстояние очистки внешней стенки" -msgid "Discribe how long the nozzle will move along the last path when retracting" -msgstr "Задаёт расстояние перемещения, добавленное после печати внешней стенки при совершении отката, чтобы сделать шов по оси Z менее заметным." +msgid "" +"Discribe how long the nozzle will move along the last path when retracting" +msgstr "" +"Задаёт расстояние перемещения, добавленное после печати внешней стенки при " +"совершении отката, чтобы сделать шов по оси Z менее заметным." -msgid "The wiping tower can be used to clean up the residue on the nozzle and stabilize the chamber pressure inside the nozzle, in order to avoid appearance defects when printing objects." -msgstr "Башня очистки используется для очистки сопла от остатков материала и стабилизации давления внутри сопла, чтобы избежать дефектов снаружи печатаемой модели." +msgid "" +"The wiping tower can be used to clean up the residue on the nozzle and " +"stabilize the chamber pressure inside the nozzle, in order to avoid " +"appearance defects when printing objects." +msgstr "" +"Башня очистки используется для очистки сопла от остатков материала и " +"стабилизации давления внутри сопла, чтобы избежать дефектов снаружи " +"печатаемой модели." msgid "Purging volumes" msgstr "Объём очистки" @@ -8389,14 +10505,19 @@ msgstr "Объём очистки" msgid "Flush multiplier" msgstr "Множитель очистки" -msgid "The actual flushing volumes is equal to the flush multiplier multiplied by the flushing volumes in the table." -msgstr "Реальные объёмы очистки равны множителю очистки, умноженному на объёмы очистки указанные в таблице." +msgid "" +"The actual flushing volumes is equal to the flush multiplier multiplied by " +"the flushing volumes in the table." +msgstr "" +"Реальные объёмы очистки равны множителю очистки, умноженному на объёмы " +"очистки указанные в таблице." msgid "Prime volume" msgstr "Объём сброса на черновой башни" msgid "The volume of material to prime extruder on tower." -msgstr "Объём выдавленного материала для заправки экструдера на черновой башне." +msgstr "" +"Объём выдавленного материала для заправки экструдера на черновой башне." msgid "Width" msgstr "Ширина" @@ -8413,8 +10534,13 @@ msgstr "Угол поворота черновой башни относител msgid "Stabilization cone apex angle" msgstr "Угол вершины стабилизирующего конуса" -msgid "Angle at the apex of the cone that is used to stabilize the wipe tower. Larger angle means wider base." -msgstr "Регулировка угла «стабилизирующего конуса», который используется для предотвращения опрокидывания черновой башни. Больший угол означает более широкое основание конуса." +msgid "" +"Angle at the apex of the cone that is used to stabilize the wipe tower. " +"Larger angle means wider base." +msgstr "" +"Регулировка угла «стабилизирующего конуса», который используется для " +"предотвращения опрокидывания черновой башни. Больший угол означает более " +"широкое основание конуса." msgid "Wipe tower purge lines spacing" msgstr "Расстояние между линиями очистки черновой башни" @@ -8425,60 +10551,123 @@ msgstr "Расстояние между линиями очистки на че msgid "Wipe tower extruder" 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, чтобы использовать тот, который доступен (предпочтительнее нерастворимый)." +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, " +"чтобы использовать тот, который доступен (предпочтительнее нерастворимый)." msgid "Purging volumes - load/unload volumes" msgstr "Объём очистки - Объём загрузки/выгрузки" -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 "Этот параметр задаёт объём материала, который будет выдавлен на черновую башню для прочистки сопла при смене экструдеров/инструментов. Эти значения используются для упрощения создания полноты объёмов очистки указанной ниже." +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 "" +"Этот параметр задаёт объём материала, который будет выдавлен на черновую " +"башню для прочистки сопла при смене экструдеров/инструментов. Эти значения " +"используются для упрощения создания полноты объёмов очистки указанной ниже." -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 seen outside. It will not take effect, unless the prime tower is enabled." -msgstr "Очистка сопла после смены материала будет производиться в заполнение модели. Это снижает количество отходов и сокращает время печати. Эта функция работает только при включенной черновой башне." +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 seen " +"outside. It will not take effect, unless the prime tower is enabled." +msgstr "" +"Очистка сопла после смены материала будет производиться в заполнение модели. " +"Это снижает количество отходов и сокращает время печати. Эта функция " +"работает только при включенной черновой башне." -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 the prime tower is enabled." -msgstr "Очистка сопла после смены материала будет производиться в поддержку модели. Это снижает количество отходов и сокращает время печати. Эта функция работает только при включенной черновой башне." +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 the prime tower is enabled." +msgstr "" +"Очистка сопла после смены материала будет производиться в поддержку модели. " +"Это снижает количество отходов и сокращает время печати. Эта функция " +"работает только при включенной черновой башне." -msgid "This object will be used to purge the nozzle after a filament change to save filament and decrease the print time. Colours of the objects will be mixed as a result. It will not take effect, unless the prime tower is enabled." -msgstr "Эта модель будет использоваться для очистки сопла после смены материала для его экономии и сокращения времени печати. В результате цвета будут смешиваться. Это не будет действовать, если не будет включена черновая башня." +msgid "" +"This object will be used to purge the nozzle after a filament change to save " +"filament and decrease the print time. Colours of the objects will be mixed " +"as a result. It will not take effect, unless the prime tower is enabled." +msgstr "" +"Эта модель будет использоваться для очистки сопла после смены материала для " +"его экономии и сокращения времени печати. В результате цвета будут " +"смешиваться. Это не будет действовать, если не будет включена черновая башня." msgid "Maximal bridging distance" msgstr "Максимальное длина моста" msgid "Maximal distance between supports on sparse infill sections." -msgstr "Максимальное расстояние между опорами на разряженных участках заполнения." +msgstr "" +"Максимальное расстояние между опорами на разряженных участках заполнения." msgid "X-Y hole compensation" msgstr "Коррекция размеров отверстий по XY" -msgid "Holes of object will be grown or shrunk in XY plane by the configured value. Positive value makes holes bigger. Negative value makes holes smaller. This function is used to adjust size slightly when the object has assembling issue" -msgstr "Отверстия модели будут увеличены или уменьшены в плоскости XY на заданное значение. Положительное значение увеличивает отверстия, отрицательное - уменьшает. Эта функция используется для небольшой корректировки размера, когда возникают проблемы со сборкой." +msgid "" +"Holes of object will be grown or shrunk in XY plane by the configured value. " +"Positive value makes holes bigger. Negative value makes holes smaller. This " +"function is used to adjust size slightly when the object has assembling issue" +msgstr "" +"Отверстия модели будут увеличены или уменьшены в плоскости XY на заданное " +"значение. Положительное значение увеличивает отверстия, отрицательное - " +"уменьшает. Эта функция используется для небольшой корректировки размера, " +"когда возникают проблемы со сборкой." msgid "X-Y contour compensation" msgstr "Коррекция размеров модели по XY" -msgid "Contour of object will be grown or shrunk in XY plane by the configured value. Positive value makes contour bigger. Negative value makes contour smaller. This function is used to adjust size slightly when the object has assembling issue" -msgstr "Параметр отвечает за смещение границы контура печатаемой модели в плоскости XY на заданное значение. Положительное значение увеличивает контур. Отрицательное значение уменьшает контур. Эта функция используется для небольшой корректировки размера, когда возникают проблемы со сборкой." +msgid "" +"Contour of object will be grown or shrunk in XY plane by the configured " +"value. Positive value makes contour bigger. Negative value makes contour " +"smaller. This function is used to adjust size slightly when the object has " +"assembling issue" +msgstr "" +"Параметр отвечает за смещение границы контура печатаемой модели в плоскости " +"XY на заданное значение. Положительное значение увеличивает контур. " +"Отрицательное значение уменьшает контур. Эта функция используется для " +"небольшой корректировки размера, когда возникают проблемы со сборкой." msgid "G-code thumbnails" msgstr "Эскизы G-кода" -msgid "Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following format: \"XxY, XxY, ...\"" -msgstr "Размеры изображения, которые будут сохранены в файлах .sl1 / .sl1s в следующем формате: \"XxY, XxY, ...\"" +msgid "" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " +"following format: \"XxY, XxY, ...\"" +msgstr "" +"Размеры изображения, которые будут сохранены в файлах .sl1 / .sl1s в " +"следующем формате: \"XxY, XxY, ...\"" msgid "Use relative E distances" msgstr "Исп. относительные координаты для экструдера (E)" -msgid "Relative extrusion is recommended when using \"label_objects\" option.Some extruders work better with this option unckecked (absolute extrusion mode). Wipe tower is only compatible with relative mode. It is always enabled on BambuLab printers. Default is checked" +msgid "" +"Relative extrusion is recommended when using \"label_objects\" option.Some " +"extruders work better with this option unckecked (absolute extrusion mode). " +"Wipe tower is only compatible with relative mode. It is always enabled on " +"BambuLab printers. Default is checked" msgstr "" -"Относительная экструзия рекомендуется при использовании опции «Название моделей».\n" +"Относительная экструзия рекомендуется при использовании опции «Название " +"моделей».\n" "\n" -"Черновая башня совместима только с относительной экструзии. На принтерах BambuLab она всегда включена (флажок стоит).\n" -"Некоторые экструдеры работают лучше при отключении этой опции (абсолютный режим экструзии)." +"Черновая башня совместима только с относительной экструзии. На принтерах " +"BambuLab она всегда включена (флажок стоит).\n" +"Некоторые экструдеры работают лучше при отключении этой опции (абсолютный " +"режим экструзии)." -msgid "Classic wall generator produces walls with constant extrusion width and for very thin areas is used gap-fill. Arachne engine produces walls with variable extrusion width" -msgstr "Движок классического генератора периметров создаёт их с постоянной шириной экструзии, а для очень тонких участков используется параметр «Заполнение пробелов». Движок Arachne же создает периметры с переменной шириной экструзии." +msgid "" +"Classic wall generator produces walls with constant extrusion width and for " +"very thin areas is used gap-fill. Arachne engine produces walls with " +"variable extrusion width" +msgstr "" +"Движок классического генератора периметров создаёт их с постоянной шириной " +"экструзии, а для очень тонких участков используется параметр «Заполнение " +"пробелов». Движок Arachne же создает периметры с переменной шириной " +"экструзии." msgid "Classic" msgstr "Классический" @@ -8489,56 +10678,118 @@ msgstr "Arachne" msgid "Wall transition length" msgstr "Длина перехода к периметру" -msgid "When transitioning between different numbers of walls as the part becomes thinner, a certain amount of space is allotted to split or join the wall segments. It's expressed as a percentage over nozzle diameter" -msgstr "При переходе между разным количеством периметров по мере того, как деталь становится тоньше, выделяется определенное пространство для разделения или соединения линий периметров. Выражается в процентах от диаметра сопла." +msgid "" +"When transitioning between different numbers of walls as the part becomes " +"thinner, a certain amount of space is allotted to split or join the wall " +"segments. It's expressed as a percentage over nozzle diameter" +msgstr "" +"При переходе между разным количеством периметров по мере того, как деталь " +"становится тоньше, выделяется определенное пространство для разделения или " +"соединения линий периметров. Выражается в процентах от диаметра сопла." msgid "Wall transitioning filter margin" msgstr "Поле фильтра при переходе между периметрами" 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" +"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 * Минимальная ширина периметра + Поле]. Расширение этого поля позволяет сократить количество переходов, что в свою очередь позволяет сократить количество запусков/остановок экструдирования " -"и время перемещения. Однако большой разброс значений ширины экструзии может привести к проблемам недо/переэкструзии материала. Если задано в процентах, то расчёт производится относительно диаметра сопла." +"Предотвращает переход туда и обратно между одним лишним периметром и одним " +"недостающим. Это поле расширяет диапазон значений ширины экструзии, который " +"определяется как [Минимальная ширина периметра - Поле, 2 * Минимальная " +"ширина периметра + Поле]. Расширение этого поля позволяет сократить " +"количество переходов, что в свою очередь позволяет сократить количество " +"запусков/остановок экструдирования и время перемещения. Однако большой " +"разброс значений ширины экструзии может привести к проблемам недо/" +"переэкструзии материала. Если задано в процентах, то расчёт производится " +"относительно диаметра сопла." msgid "Wall transitioning threshold angle" msgstr "Пороговый угол перехода между периметрами" -msgid "When to create transitions between even and odd numbers of walls. A wedge shape with an angle greater than this setting will not have transitions and no walls will be printed in the center to fill the remaining space. Reducing this setting reduces the number and length of these center walls, but may leave gaps or overextrude" +msgid "" +"When to create transitions between even and odd numbers of walls. A wedge " +"shape with an angle greater than this setting will not have transitions and " +"no walls will be printed in the center to fill the remaining space. Reducing " +"this setting reduces the number and length of these center walls, but may " +"leave gaps or overextrude" msgstr "" -"Когда требуется создавать переходы между чётным и нечётным количеством периметров. Клиновидная форма с углом, превышающим этот параметр, не будет иметь переходов, и периметры не будут напечатаны в центре для заполнения оставшегося пространства. Уменьшение значения этого параметра позволяет сократить количество и длину этих центральных периметров, но при этом могут остаться зазоры или произойти " -"чрезмерное экструдирование." +"Когда требуется создавать переходы между чётным и нечётным количеством " +"периметров. Клиновидная форма с углом, превышающим этот параметр, не будет " +"иметь переходов, и периметры не будут напечатаны в центре для заполнения " +"оставшегося пространства. Уменьшение значения этого параметра позволяет " +"сократить количество и длину этих центральных периметров, но при этом могут " +"остаться зазоры или произойти чрезмерное экструдирование." msgid "Wall distribution count" msgstr "Счётчик распределений по периметрам" -msgid "The number of walls, counted from the center, over which the variation needs to be spread. Lower values mean that the outer walls don't change in width" -msgstr "Количество периметров, отсчитываемое от центра, на которые необходимо распространить изменения. Более низкое значение означает, что ширина внешних периметров не изменяется." +msgid "" +"The number of walls, counted from the center, over which the variation needs " +"to be spread. Lower values mean that the outer walls don't change in width" +msgstr "" +"Количество периметров, отсчитываемое от центра, на которые необходимо " +"распространить изменения. Более низкое значение означает, что ширина внешних " +"периметров не изменяется." msgid "Minimum feature size" msgstr "Минимальный размер элемента" -msgid "Minimum thickness of thin features. Model features that are thinner than this value will not be printed, while features thicker than the Minimum feature size will be widened to the Minimum wall width. It's expressed as a percentage over nozzle diameter" -msgstr "Минимальная толщина тонких элементов. Элементы модели, которые тоньше этого значения, не будут напечатаны, в то время как элементы, толщина которых превышает «Минимальный размер элемента», будут расширены до минимальной ширины периметра. Выражается в процентах от диаметра сопла." +msgid "" +"Minimum thickness of thin features. Model features that are thinner than " +"this value will not be printed, while features thicker than the Minimum " +"feature size will be widened to the Minimum wall width. It's expressed as a " +"percentage over nozzle diameter" +msgstr "" +"Минимальная толщина тонких элементов. Элементы модели, которые тоньше этого " +"значения, не будут напечатаны, в то время как элементы, толщина которых " +"превышает «Минимальный размер элемента», будут расширены до минимальной " +"ширины периметра. Выражается в процентах от диаметра сопла." msgid "First layer minimum wall width" msgstr "Минимальная ширина периметра первого слоя" -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 "Минимальная ширина периметра, используемая для печати первого слоя. Значение рекомендуется устанавливать равным диаметру сопла. Ожидается, что такая регулировка повышает адгезию." +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 "" +"Минимальная ширина периметра, используемая для печати первого слоя. Значение " +"рекомендуется устанавливать равным диаметру сопла. Ожидается, что такая " +"регулировка повышает адгезию." msgid "Minimum wall width" msgstr "Минимальная ширина периметра" -msgid "Width of the wall that will replace thin features (according to the Minimum feature size) of the model. If the Minimum wall width is thinner than the thickness of the feature, the wall will become as thick as the feature itself. It's expressed as a percentage over nozzle diameter" -msgstr "Ширина периметра, которая заменит тонкие элементы (в соответствии с минимальным размера элемента) модели. Если минимальная ширина периметра меньше толщины элемента, толщина периметра будет приведена к толщине самого элемента. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Width of the wall that will replace thin features (according to the Minimum " +"feature size) of the model. If the Minimum wall width is thinner than the " +"thickness of the feature, the wall will become as thick as the feature " +"itself. It's expressed as a percentage over nozzle diameter" +msgstr "" +"Ширина периметра, которая заменит тонкие элементы (в соответствии с " +"минимальным размера элемента) модели. Если минимальная ширина периметра " +"меньше толщины элемента, толщина периметра будет приведена к толщине самого " +"элемента. Если задано в процентах, то значение вычисляться относительно " +"диаметра сопла." msgid "Detect narrow internal solid infill" msgstr "Обнаруживать узкую область сплошного заполнения" -msgid "This option will auto detect narrow internal solid infill area. If enabled, concentric pattern will be used for the area to speed printing up. Otherwise, rectilinear pattern is used defaultly." -msgstr "Этот параметр автоматически определяет узкую внутреннюю область сплошного заполнения. Если включено, для ускорения печати будет использоваться концентрический шаблон. В противном случае по умолчанию используется прямолинейный шаблон." +msgid "" +"This option will auto detect narrow internal solid infill area. If enabled, " +"concentric pattern will be used for the area to speed printing up. " +"Otherwise, rectilinear pattern is used defaultly." +msgstr "" +"Этот параметр автоматически определяет узкую внутреннюю область сплошного " +"заполнения. Если включено, для ускорения печати будет использоваться " +"концентрический шаблон. В противном случае по умолчанию используется " +"прямолинейный шаблон." msgid "invalid value " msgstr "недопустимое значение " @@ -8601,6 +10852,12 @@ msgstr "Загрузка материалов по умолчанию" msgid "Load first filament as default for those not loaded" msgstr "Использовать первый материал по умолчанию, если не загружен другой" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "mtcpp" @@ -8617,7 +10874,9 @@ msgid "No check" msgstr "Без проверки" msgid "Do not run any validity checks, such as gcode path conflicts check." -msgstr "Не запускать никакие проверки валидности, такие как проверка на конфликт путей в G-коде." +msgstr "" +"Не запускать никакие проверки валидности, такие как проверка на конфликт " +"путей в G-коде." msgid "Normative check" msgstr "Нормативная проверка" @@ -8647,7 +10906,8 @@ msgid "Arrange Options" msgstr "Параметры расстановки" msgid "Arrange options: 0-disable, 1-enable, others-auto" -msgstr "Параметры расстановки: 0 - отключить, 1 - включить, другие - автоматически" +msgstr "" +"Параметры расстановки: 0 - отключить, 1 - включить, другие - автоматически" # ??? msgid "Repetions count" @@ -8657,14 +10917,39 @@ msgstr "Количество повторений" msgid "Repetions count of the whole model" msgstr "Количество повторений для всей модели" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "Преобразовать единицу измерения" msgid "Convert the units of model" msgstr "Преобразование единиц измерения модели" -msgid "Orient the model" -msgstr "Ориентация модели" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "Масштабирование модели с помощью коэффициента." @@ -8688,16 +10973,28 @@ msgid "Skip some objects in this print" msgstr "Пропустить некоторые модели в этом печати" msgid "load uptodate process/machine settings when using uptodate" -msgstr "Загрузить последние настройки процесса/принтера при использовании актуальной версии" +msgstr "" +"Загрузить последние настройки процесса/принтера при использовании актуальной " +"версии" -msgid "load uptodate process/machine settings from the specified file when using uptodate" -msgstr "Загружать последние настройки процесса/принтера из указанного файла при использовании актуальной версии" +msgid "" +"load uptodate process/machine settings from the specified file when using " +"uptodate" +msgstr "" +"Загружать последние настройки процесса/принтера из указанного файла при " +"использовании актуальной версии" msgid "Data directory" msgstr "Папка конфигурации пользователя" -msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." -msgstr "Загрузка и сохранение настроек будет производиться в заданную папку. Это полезно для сохранения различных профилей или конфигураций из сетевого хранилища." +msgid "" +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." +msgstr "" +"Загрузка и сохранение настроек будет производиться в заданную папку. Это " +"полезно для сохранения различных профилей или конфигураций из сетевого " +"хранилища." msgid "Output directory" msgstr "Папка для сохранения" @@ -8708,8 +11005,19 @@ msgstr "Папка для сохранения экспортируемых фа msgid "Debug level" msgstr "Уровень отладки" -msgid "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" -msgstr "Задаёт параметр чувствительности записи событий в журнал. \\\"0: Неустранимая ошибка, 1: Ошибка, 2: Предупреждение, 3: Информация, 4: Отладка, 5: Трассировка\n" +msgid "" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +"trace\n" +msgstr "" +"Задаёт параметр чувствительности записи событий в журнал. \\\"0: " +"Неустранимая ошибка, 1: Ошибка, 2: Предупреждение, 3: Информация, 4: " +"Отладка, 5: Трассировка\n" + +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" msgid "Error in zip archive" msgstr "Ошибка с zip-архивом" @@ -8742,7 +11050,9 @@ msgid "large overhangs" msgstr "большая области нависания" #, c-format, boost-format -msgid "It seems object %s has %s. Please re-orient the object or enable support generation." +msgid "" +"It seems object %s has %s. Please re-orient the object or enable support " +"generation." msgstr "" "Похоже, что у модели %s имеются замечания - %s. \n" "Переориентируйте её или включите генерацию поддержки." @@ -8751,7 +11061,9 @@ msgid "Optimizing toolpath" msgstr "Оптимизация траектории инструмента" msgid "Empty layers around bottom are replaced by nearest normal layers." -msgstr "Пустые слои обнаруженные на дне модели были заменены ближайшими нормальными слоями." +msgstr "" +"Пустые слои обнаруженные на дне модели были заменены ближайшими нормальными " +"слоями." msgid "The model has too many empty layers." msgstr "Модель имеет слишком много пустых слоев." @@ -8759,15 +11071,22 @@ msgstr "Модель имеет слишком много пустых слое msgid "Slicing mesh" msgstr "Нарезка сетки" -msgid "No layers were detected. You might want to repair your STL file(s) or check their size or thickness and retry.\n" -msgstr "Слоёв не обнаружено. Возможно, требуется починить STL файл(ы) или проверить размер/толщину и повторить попытку.\n" +msgid "" +"No layers were detected. You might want to repair your STL file(s) or check " +"their size or thickness and retry.\n" +msgstr "" +"Слоёв не обнаружено. Возможно, требуется починить STL файл(ы) или проверить " +"размер/толщину и повторить попытку.\n" msgid "" -"An object's XY size compensation will not be used because it is also color-painted.\n" +"An object's XY size compensation will not be used because it is also color-" +"painted.\n" "XY Size compensation can not be combined with color-painting." msgstr "" -"Коррекция горизонтальных размеров модели не будет действовать, поскольку для этой модели была выполнена операция окрашивания.\n" -"Коррекция горизонтальных размеров модели не может использоваться в сочетании с функцией раскрашивания." +"Коррекция горизонтальных размеров модели не будет действовать, поскольку для " +"этой модели была выполнена операция окрашивания.\n" +"Коррекция горизонтальных размеров модели не может использоваться в сочетании " +"с функцией раскрашивания." #, c-format, boost-format msgid "Support: generate toolpath at layer %d" @@ -8800,8 +11119,11 @@ msgstr "Поддержка: ремонт отверстий на слое %d" msgid "Support: propagate branches at layer %d" msgstr "Поддержка: построение ветвей на слое %d" -msgid "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "Неизвестный формат файла. Входной файл должен иметь расширение *.stl, *.obj, *.amf(.xml)." +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Неизвестный формат файла. Входной файл должен иметь расширение *.stl, *.obj, " +"*.amf(.xml)." msgid "Loading of a model file failed." msgstr "Не удалось загрузить файл модели." @@ -8810,7 +11132,9 @@ msgid "The supplied file couldn't be read because it's empty" msgstr "Предоставленный файл не может быть прочитан, так как он пуст." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." -msgstr "Неизвестный формат файла. Входной файл должен иметь расширение *.3mf или *.zip.amf." +msgstr "" +"Неизвестный формат файла. Входной файл должен иметь расширение *.3mf или *." +"zip.amf." msgid "Canceled" msgstr "Отменено" @@ -8869,8 +11193,10 @@ msgstr "Вики-сайт" msgid "How to use calibration result?" msgstr "Как использовать результаты калибровки?" -msgid "You could change the Flow Dynamics Calibration Factor in material editing" -msgstr "Коэффициент калибровки динамики потока можно изменить в настройках материала." +msgid "" +"You could change the Flow Dynamics Calibration Factor in material editing" +msgstr "" +"Коэффициент калибровки динамики потока можно изменить в настройках материала." msgid "" "The current firmware version of the printer does not support calibration.\n" @@ -8897,6 +11223,15 @@ msgstr "Введите имя, который хотите сохранить н msgid "The name cannot exceed 40 characters." msgstr "Максимальная длина имени 40 символов." +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "Имя не может быть пустым." @@ -8913,8 +11248,11 @@ msgstr "Имя совпадает с именем другого существ msgid "create new preset failed." msgstr "не удалось создать новый профиль." -msgid "Are you sure to cancel the current calibration and return to the home page?" -msgstr "Вы уверены, что хотите отменить текущую калибровку и вернуться на главную страницу?" +msgid "" +"Are you sure to cancel the current calibration and return to the home page?" +msgstr "" +"Вы уверены, что хотите отменить текущую калибровку и вернуться на главную " +"страницу?" msgid "No Printer Connected!" msgstr "Принтер не подключён!" @@ -8925,6 +11263,9 @@ msgstr "Принтер ещё не подключен." msgid "Please select filament to calibrate." msgstr "Пожалуйста, выберите пруток для калибровки." +msgid "The input value size must be 3." +msgstr "Размер входного значения должен быть равен 3." + msgid "Connecting to printer..." msgstr "Подключение к принтеру..." @@ -8943,9 +11284,6 @@ msgstr "Выберите хотя бы один пруток для калибр msgid "Flow rate calibration result has been saved to preset" msgstr "Результат калибровки динамики потока был сохранён в профиль" -msgid "The input value size must be 3." -msgstr "Размер входного значения должен быть равен 3." - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "Результат калибровки максимальной объёмной скорости сохранен в профиль" @@ -8953,15 +11291,24 @@ msgid "When do you need Flow Dynamics Calibration" msgstr "В каких случаях необходима калибровка динамики потока" msgid "" -"We now have added the auto-calibration for different filaments, which is fully automated and the result will be saved into the printer for future use. You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the filament is damp;\n" +"We now have added the auto-calibration for different filaments, which is " +"fully automated and the result will be saved into the printer for future " +"use. You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the " +"filament is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" -"3. If the max volumetric speed or print temperature is changed in the filament setting." +"3. If the max volumetric speed or print temperature is changed in the " +"filament setting." msgstr "" -"Мы добавили функцию автоматической калибровки для различных материалов, которая полностью автоматизирована, а результат калибровки сохраняется в принтере для дальнейшего использования. Калибровка требуется только в следующих ограниченных случаях:\n" -"1. При использовании нового материала другого производителя/типа или при отсыревании материала;\n" +"Мы добавили функцию автоматической калибровки для различных материалов, " +"которая полностью автоматизирована, а результат калибровки сохраняется в " +"принтере для дальнейшего использования. Калибровка требуется только в " +"следующих ограниченных случаях:\n" +"1. При использовании нового материала другого производителя/типа или при " +"отсыревании материала;\n" "2. При износе сопла или его замене на новое;\n" -"3. При изменении в настройках материала максимальной объёмной скорости или температуры печати." +"3. При изменении в настройках материала максимальной объёмной скорости или " +"температуры печати." msgid "About this calibration" msgstr "О данном виде калибровки" @@ -8969,64 +11316,129 @@ msgstr "О данном виде калибровки" msgid "" "Please find the details of Flow Dynamics Calibration from our wiki.\n" "\n" -"Usually the calibration is unnecessary. When you start a single color/material print, with the \"flow dynamics calibration\" option checked in the print start menu, the printer will follow the old way, calibrate the filament before the print; When you start a multi color/material print, the printer will use the default compensation parameter for the filament during every filament switch which " -"will have a good result in most cases.\n" +"Usually the calibration is unnecessary. When you start a single color/" +"material print, with the \"flow dynamics calibration\" option checked in the " +"print start menu, the printer will follow the old way, calibrate the " +"filament before the print; When you start a multi color/material print, the " +"printer will use the default compensation parameter for the filament during " +"every filament switch which will have a good result in most cases.\n" "\n" -"Please note there are a few cases that will make the calibration result not reliable: using a texture plate to do the calibration; the build plate does not have good adhesion (please wash the build plate or apply gluestick!) ...You can find more from our wiki.\n" +"Please note there are a few cases that will make the calibration result not " +"reliable: using a texture plate to do the calibration; the build plate does " +"not have good adhesion (please wash the build plate or apply gluestick!) ..." +"You can find more from our wiki.\n" "\n" -"The calibration results have about 10 percent jitter in our test, which may cause the result not exactly the same in each calibration. We are still investigating the root cause to do improvements with new updates." +"The calibration results have about 10 percent jitter in our test, which may " +"cause the result not exactly the same in each calibration. We are still " +"investigating the root cause to do improvements with new updates." msgstr "" -"Подробную информацию про калибровку динамики потока можно найти на нашем вики-сайте.\n" +"Подробную информацию про калибровку динамики потока можно найти на нашем " +"вики-сайте.\n" "\n" "При обычных обстоятельствах калибровка не требуется. \n" -"Если при запуске печати одним цветом/материалом в меню запуска печати отмечена опция «Калибровка динамики потока», то калибровка пластиковой нити будет производится старым способом. \n" -"При запуске печати несколькими цветами/материалами, принтер будет использовать параметр компенсации по умолчанию для материала при каждой его смене, что в большинстве случаев позволяет получить хороший результат.\n" +"Если при запуске печати одним цветом/материалом в меню запуска печати " +"отмечена опция «Калибровка динамики потока», то калибровка пластиковой нити " +"будет производится старым способом. \n" +"При запуске печати несколькими цветами/материалами, принтер будет " +"использовать параметр компенсации по умолчанию для материала при каждой его " +"смене, что в большинстве случаев позволяет получить хороший результат.\n" "\n" -"Обратите внимание, что есть несколько случаев, когда результат калибровки будет недостоверным. Это использование для калибровки текстурированной печатной пластины и когда у печатной пластины плохая адгезия с материалом. Более подробную информацию можно найти на нашем вики-сайте.\n" +"Обратите внимание, что есть несколько случаев, когда результат калибровки " +"будет недостоверным. Это использование для калибровки текстурированной " +"печатной пластины и когда у печатной пластины плохая адгезия с материалом. " +"Более подробную информацию можно найти на нашем вики-сайте.\n" "\n" -"По нашим тестам, результаты калибровки имеют погрешность примерно 10%, что может приводить к разным результатам при каждой калибровке. Мы продолжаем выяснять причину, чтобы улучшить ситуацию в новых обновлениях." +"По нашим тестам, результаты калибровки имеют погрешность примерно 10%, что " +"может приводить к разным результатам при каждой калибровке. Мы продолжаем " +"выяснять причину, чтобы улучшить ситуацию в новых обновлениях." msgid "When to use Flow Rate Calibration" msgstr "В каких случаях необходима калибровка скорости потока" 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" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top layer of the model, even when printing slowly.\n" +"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" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " +"top layer of the model, even when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be." +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " +"they should be." msgstr "" -"После проведения калибровки динамики потока всё ещё могут возникать некоторые проблемы с экструзией, такие как:\n" -"1. Избыточная экструзия. Это приводит к образованию на модели капель или сгустков, слои кажутся толще и неравномерными, чем ожидалось.\n" -"2. Недоэкструзия. Очень тонкие слои, слабая прочность заполнения или пробелы на верхнем слое модели, даже при медленной печати.\n" -"3. Низкое качество поверхности. Поверхность деталей кажется шероховатой или неровной.\n" -"4. Слабая конструкционная прочность. Напечатанное легко ломается или кажется не таким прочным, как должно быть." - -msgid "In addition, Flow Rate Calibration is crucial for foaming materials like LW-PLA used in RC planes. These materials expand greatly when heated, and calibration provides a useful reference flow rate." -msgstr "Кроме того, калибровка скорости потока крайне важна для вспенивающихся материалов, таких как LW-PLA, используемых при печати деталей для радиоуправляемых самолетов. Эти материалы сильно расширяются при нагревании, а калибровка позволяет получить эталонную скорости потока." +"После проведения калибровки динамики потока всё ещё могут возникать " +"некоторые проблемы с экструзией, такие как:\n" +"1. Избыточная экструзия. Это приводит к образованию на модели капель или " +"сгустков, слои кажутся толще и неравномерными, чем ожидалось.\n" +"2. Недоэкструзия. Очень тонкие слои, слабая прочность заполнения или пробелы " +"на верхнем слое модели, даже при медленной печати.\n" +"3. Низкое качество поверхности. Поверхность деталей кажется шероховатой или " +"неровной.\n" +"4. Слабая конструкционная прочность. Напечатанное легко ломается или кажется " +"не таким прочным, как должно быть." msgid "" -"Flow Rate Calibration measures the ratio of expected to actual extrusion volumes. The default setting works well in Bambu Lab printers and official filaments as they were pre-calibrated and fine-tuned. For a regular filament, you usually won't need to perform a Flow Rate Calibration unless you still see the listed defects after you have done other calibrations. For more details, please check " -"out the wiki article." +"In addition, Flow Rate Calibration is crucial for foaming materials like LW-" +"PLA used in RC planes. These materials expand greatly when heated, and " +"calibration provides a useful reference flow rate." msgstr "" -"Калибровка скорости потока измеряет соотношение ожидаемого и фактического объёмов экструзии. На принтерах Bambu Lab с официальными материалами, стандартные настройки работают хорошо, так как они были предварительно откалиброваны и тщательно настроены. Для обычного материала обычно не требуется выполнять калибровку скорости потока, если только после выполнения других калибровок вы всё ещё видите " -"перечисленные дефекты. Более подробную информацию можно найти на нашем вики-сайте." +"Кроме того, калибровка скорости потока крайне важна для вспенивающихся " +"материалов, таких как LW-PLA, используемых при печати деталей для " +"радиоуправляемых самолетов. Эти материалы сильно расширяются при нагревании, " +"а калибровка позволяет получить эталонную скорости потока." msgid "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly measuring the calibration patterns. However, please be advised that the efficacy and accuracy of this method may be compromised with specific types of materials. Particularly, filaments that are transparent or semi-transparent, sparkling-particled, or have a high-reflective finish may not be suitable for this " -"calibration and can produce less-than-desirable results.\n" -"\n" -"The calibration results may vary between each calibration or filament. We are still improving the accuracy and compatibility of this calibration through firmware updates over time.\n" -"\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only by those who fully understand its purpose and implications. Incorrect usage can lead to sub-par prints or printer damage. Please make sure to carefully read and understand the process before doing it." +"Flow Rate Calibration measures the ratio of expected to actual extrusion " +"volumes. The default setting works well in Bambu Lab printers and official " +"filaments as they were pre-calibrated and fine-tuned. For a regular " +"filament, you usually won't need to perform a Flow Rate Calibration unless " +"you still see the listed defects after you have done other calibrations. For " +"more details, please check out the wiki article." msgstr "" -"Автоматическая калибровка скорости потока использует технологию микролидара Bambu Lab, непосредственно измеряя калибровочные шаблоны. Однако имейте ввиду, что эффективность и точность этого метода может быть снижена при использовании определенных типов материалов. В частности, прозрачные или полупрозрачные материалы, материалы с блестящими частицами или с высокоотражающим покрытием могут не " -"подойти для данной калибровки и привести к нежелательным результатам.\n" +"Калибровка скорости потока измеряет соотношение ожидаемого и фактического " +"объёмов экструзии. На принтерах Bambu Lab с официальными материалами, " +"стандартные настройки работают хорошо, так как они были предварительно " +"откалиброваны и тщательно настроены. Для обычного материала обычно не " +"требуется выполнять калибровку скорости потока, если только после выполнения " +"других калибровок вы всё ещё видите перечисленные дефекты. Более подробную " +"информацию можно найти на нашем вики-сайте." + +msgid "" +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " +"directly measuring the calibration patterns. However, please be advised that " +"the efficacy and accuracy of this method may be compromised with specific " +"types of materials. Particularly, filaments that are transparent or semi-" +"transparent, sparkling-particled, or have a high-reflective finish may not " +"be suitable for this calibration and can produce less-than-desirable " +"results.\n" +"\n" +"The calibration results may vary between each calibration or filament. We " +"are still improving the accuracy and compatibility of this calibration " +"through firmware updates over time.\n" +"\n" +"Caution: Flow Rate Calibration is an advanced process, to be attempted only " +"by those who fully understand its purpose and implications. Incorrect usage " +"can lead to sub-par prints or printer damage. Please make sure to carefully " +"read and understand the process before doing it." +msgstr "" +"Автоматическая калибровка скорости потока использует технологию микролидара " +"Bambu Lab, непосредственно измеряя калибровочные шаблоны. Однако имейте " +"ввиду, что эффективность и точность этого метода может быть снижена при " +"использовании определенных типов материалов. В частности, прозрачные или " +"полупрозрачные материалы, материалы с блестящими частицами или с " +"высокоотражающим покрытием могут не подойти для данной калибровки и привести " +"к нежелательным результатам.\n" "\n" "\n" -"Результаты калибровки могут различаться от калибровки к калибровке или от материала к материалу. Мы продолжаем улучшать точность и совместимость этой калибровки путем обновления прошивки принтера.\n" +"Результаты калибровки могут различаться от калибровки к калибровке или от " +"материала к материалу. Мы продолжаем улучшать точность и совместимость этой " +"калибровки путем обновления прошивки принтера.\n" "\n" -"Внимание: калибровка скорости потока - это сложный процесс, к которому следует прибегать только тем, кто полностью понимает её назначение и последствия. Неправильное использование может привести к некачественной печати или повреждению принтера. Пожалуйста, внимательно прочитайте и поймите суть процесса, прежде чем приступать к его выполнению." +"Внимание: калибровка скорости потока - это сложный процесс, к которому " +"следует прибегать только тем, кто полностью понимает её назначение и " +"последствия. Неправильное использование может привести к некачественной " +"печати или повреждению принтера. Пожалуйста, внимательно прочитайте и " +"поймите суть процесса, прежде чем приступать к его выполнению." msgid "When you need Max Volumetric Speed Calibration" msgstr "В каких случаях необходима калибровка максимальной объемной скорости" @@ -9035,10 +11447,13 @@ msgid "Over-extrusion or under extrusion" msgstr "Избыточная или недостаточная экструзия" msgid "Max Volumetric Speed calibration is recommended when you print with:" -msgstr "Калибровка максимальной объёмной скорости рекомендуется при печати с использованием:" +msgstr "" +"Калибровка максимальной объёмной скорости рекомендуется при печати с " +"использованием:" msgid "material with significant thermal shrinkage/expansion, such as..." -msgstr "материалов со значительной термической усадкой/расширением, например..." +msgstr "" +"материалов со значительной термической усадкой/расширением, например..." msgid "materials with inaccurate filament diameter" msgstr "материалов с неточным диаметром пластиковой нити" @@ -9046,25 +11461,46 @@ msgstr "материалов с неточным диаметром пласти msgid "We found the best Flow Dynamics Calibration Factor" msgstr "Мы нашли лучший коэффициент калибровки динамики потока" -msgid "Part of the calibration failed! You may clean the plate and retry. The failed test result would be dropped." -msgstr "Часть калибровки выполнена неудачно! Вы можете очистить печатную пластину и повторить попытку. Результат неудачного теста будет удалён." +msgid "" +"Part of the calibration failed! You may clean the plate and retry. The " +"failed test result would be dropped." +msgstr "" +"Часть калибровки выполнена неудачно! Вы можете очистить печатную пластину и " +"повторить попытку. Результат неудачного теста будет удалён." -msgid "*We recommend you to add brand, materia, type, and even humidity level in the Name" -msgstr "*Мы рекомендуем добавить к названию материала, производителя, тип и даже уровень влажности" +msgid "" +"*We recommend you to add brand, materia, type, and even humidity level in " +"the Name" +msgstr "" +"*Мы рекомендуем добавить к названию материала, производителя, тип и даже " +"уровень влажности" msgid "Failed" msgstr "Неудачно" -msgid "Only one of the results with the same name will be saved. Are you sure you want to overrides the other results?" -msgstr "Будет сохранен только один из результатов с таким же именем. Вы уверены, что хотите перезаписать другие результаты?" +msgid "" +"Only one of the results with the same name will be saved. Are you sure you " +"want to overrides the other results?" +msgstr "" +"Будет сохранен только один из результатов с таким же именем. Вы уверены, что " +"хотите перезаписать другие результаты?" #, c-format, boost-format -msgid "There is already a historical calibration result with the same name: %s. Only one of the results with the same name is saved. Are you sure you want to overrides the historical result?" -msgstr "Результат калибровки с таким именем уже существует: %s. Будет сохранён только один результат с таким же именем. Вы уверены, что хотите перезаписать текущий результат?" +msgid "" +"There is already a historical calibration result with the same name: %s. " +"Only one of the results with the same name is saved. Are you sure you want " +"to overrides the historical result?" +msgstr "" +"Результат калибровки с таким именем уже существует: %s. Будет сохранён " +"только один результат с таким же именем. Вы уверены, что хотите перезаписать " +"текущий результат?" msgid "Please find the best line on your plate" msgstr "Пожалуйста, найдите лучшую линию на столе" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "Входное значение" @@ -9129,8 +11565,12 @@ msgstr "Точная калибровка на основе коэффициен msgid "Title" msgstr "Заголовок" -msgid "A test model will be printed. Please clear the build plate and place it back to the hot bed before calibration." -msgstr "Будет напечатана тестовая модель. Перед калибровкой очистите печатную пластину и установите её обратно на нагреваемый стол." +msgid "" +"A test model will be printed. Please clear the build plate and place it back " +"to the hot bed before calibration." +msgstr "" +"Будет напечатана тестовая модель. Перед калибровкой очистите печатную " +"пластину и установите её обратно на нагреваемый стол." msgid "Printing Parameters" msgstr "Параметры печати" @@ -9160,7 +11600,8 @@ msgid "" msgstr "" "Советы по выбору материала для калибровки: \n" "- Материалы, которые имеют близкие значения температуры нагреваемого стола\n" -"- Различные марки и семейства расходных материалов (Производитель = Bambu, семейство = Basic - базовый, Matte - матовый)" +"- Различные марки и семейства расходных материалов (Производитель = Bambu, " +"семейство = Basic - базовый, Matte - матовый)" msgid "Error desc" msgstr "Описание ошибки" @@ -9168,6 +11609,12 @@ msgstr "Описание ошибки" msgid "Extra info" msgstr "Доп. информация" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "Метод" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s не совместима с %s" @@ -9178,6 +11625,21 @@ msgstr "Автоматическая калибровка динамики по msgid "Connecting to printer" msgstr "Подключением к принтеру" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "Диаметр сопла был синхронизирован с настройками принтера" @@ -9280,14 +11742,13 @@ msgstr "Удалить исходные" msgid "Send G-Code to printer host" msgstr "Отправить G-кода на хост принтера" -msgid "Send to print" -msgstr "Отправить на печать" - msgid "Upload to Printer Host with the following filename:" msgstr "Загрузить на хост принтера со следующим именем:" msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "При необходимости используйте косую черту ( / ) в качестве разделителя каталогов." +msgstr "" +"При необходимости используйте косую черту ( / ) в качестве разделителя " +"каталогов." msgid "Upload to storage" msgstr "Загрузить в хранилище" @@ -9296,11 +11757,8 @@ msgstr "Загрузить в хранилище" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "Имя загружаемого файла не заканчивается на \"%s\". Хотите продолжить?" -msgid "Upload and Print" -msgstr "Загрузить и напечатать" - -msgid "Simulate" -msgstr "Cэмулировать" +msgid "Upload" +msgstr "Загрузить" msgid "Print host upload queue" msgstr "Очередь загрузки на хост печати" @@ -9324,9 +11782,6 @@ msgstr "Имя файла" msgid "Message" msgstr "Сообщение" -msgid "Error Message" -msgstr "Сообщение об ошибке" - msgid "Cancel selected" msgstr "Отменить выбранное" @@ -9345,9 +11800,6 @@ msgstr "Отмена" msgid "Error uploading to print host" msgstr "Ошибка при отправке на хост печати" -msgid "Error uploading to print host:" -msgstr "Ошибка при отправке на хост печати:" - msgid "PA Calibration" msgstr "Калибровка PA" @@ -9369,9 +11821,6 @@ msgstr "Линии" msgid "PA Pattern" msgstr "Шаблон" -msgid "Method" -msgstr "Метод" - msgid "Start PA: " msgstr "Начальный коэффициент PA: " @@ -9453,12 +11902,10 @@ msgstr "Шаг изменения: " msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"Введите допустимые значения:\n" -"start > 0 step >= 0\n" -"end > start + step)" msgid "VFA test" msgstr "Тест на вертикальные артефакты (VFA)" @@ -9471,12 +11918,10 @@ msgstr "Конечная скорость: " msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"Введите допустимые значения:\n" -"start > 10 step >= 0\n" -"end > start + step)" msgid "Start retraction length: " msgstr "Начальная длина отката: " @@ -9505,8 +11950,12 @@ msgstr "Успешно!" msgid "Refresh Printers" msgstr "Обновить принтеры" -msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." -msgstr "Файл корневого сертификата HTTPS не обязателен. Он необходим только при использовании HTTPS с самоподписанным сертификатом." +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"Файл корневого сертификата HTTPS не обязателен. Он необходим только при " +"использовании HTTPS с самоподписанным сертификатом." msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Файлы сертификатов (*.crt, *.pem)|*.crt;*.pem|Все файлы|*.*" @@ -9515,38 +11964,64 @@ msgid "Open CA certificate file" msgstr "Открыть файл корневого сертификата" #, c-format, boost-format -msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." -msgstr "В этой системе %s использует HTTPS сертификаты из системного хранилища сертификатов/Keychain." +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"В этой системе %s использует HTTPS сертификаты из системного хранилища " +"сертификатов/Keychain." -msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." -msgstr "Чтобы использовать пользовательский файл корневого сертификата, импортируйте его в хранилище сертификатов/Keychain." +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Чтобы использовать пользовательский файл корневого сертификата, импортируйте " +"его в хранилище сертификатов/Keychain." msgid "Connection to printers connected via the print host failed." -msgstr "Не удалось подключиться к принтерам, подключенным через через хост печати." +msgstr "" +"Не удалось подключиться к принтерам, подключенным через через хост печати." + +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" -"Did you know how to control view and object/part selection with mouse and touchpanel in the 3D scene?" +"Did you know how to control view and object/part selection with mouse and " +"touchpanel in the 3D scene?" msgstr "" "Операции с 3D-сценой\n" -"Знаете ли вы, как управлять видом и выбором модели/части с помощью мыши и сенсорной панели в 3D-сцене?" +"Знаете ли вы, как управлять видом и выбором модели/части с помощью мыши и " +"сенсорной панели в 3D-сцене?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the cutting tool?" +"Did you know that you can cut a model at any angle and position with the " +"cutting tool?" msgstr "" "Режущий инструмент\n" -"Знаете ли вы, что можно разрезать модель под любым углом с помощью режущего инструмента?" +"Знаете ли вы, что можно разрезать модель под любым углом с помощью режущего " +"инструмента?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" "Fix Model\n" -"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems?" +"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " +"problems?" msgstr "" "Починка модели\n" -"Знаете ли вы, что можно починить повреждённую модель, чтобы избежать множества проблем при нарезке?" +"Знаете ли вы, что можно починить повреждённую модель, чтобы избежать " +"множества проблем при нарезке?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -9567,140 +12042,196 @@ msgstr "" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" "Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for printing by a simple click?" +"Did you know that you can rotate objects to an optimal orientation for " +"printing by a simple click?" msgstr "" "Автоориентация\n" -"Знаете ли вы, что можно повернуть модели в оптимальную для печати ориентацию простым щелчком мыши?" +"Знаете ли вы, что можно повернуть модели в оптимальную для печати ориентацию " +"простым щелчком мыши?" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" "Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces sits on the print bed? Select the \"Place on face\" function or press the F key." +"Did you know that you can quickly orient a model so that one of its faces " +"sits on the print bed? Select the \"Place on face\" function or press the " +"F key." msgstr "" "Поверхностью на стол\n" -"Знаете ли вы, что можно быстро сориентировать модель так, чтобы одна из её граней лежала на столе? Используйте функцию «Поверхностью на стол» или нажмите клавишу F." +"Знаете ли вы, что можно быстро сориентировать модель так, чтобы одна из её " +"граней лежала на столе? Используйте функцию «Поверхностью на стол» или " +"нажмите клавишу F." #: resources/data/hints.ini: [hint:Object List] msgid "" "Object List\n" -"Did you know that you can view all objects/parts in a list and change settings for each object/part?" +"Did you know that you can view all objects/parts in a list and change " +"settings for each object/part?" msgstr "" "Список моделей\n" -"Знаете ли вы, что можно просматривать все модели/части в списке и изменять настройки для каждой из них?" +"Знаете ли вы, что можно просматривать все модели/части в списке и изменять " +"настройки для каждой из них?" #: resources/data/hints.ini: [hint:Simplify Model] msgid "" "Simplify Model\n" -"Did you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model. Read more in the documentation." +"Did you know that you can reduce the number of triangles in a mesh using the " +"Simplify mesh feature? Right-click the model and select Simplify model. Read " +"more in the documentation." msgstr "" "Упростить сетку модели\n" -"Знаете ли вы, что можно уменьшить количество треугольников в полигональной сетке, используя функцию упрощения сетки? Щелкните правой кнопкой мыши на модели и выберите «Упростить полигональную сетку». Подробнее читайте в документации." +"Знаете ли вы, что можно уменьшить количество треугольников в полигональной " +"сетке, используя функцию упрощения сетки? Щелкните правой кнопкой мыши на " +"модели и выберите «Упростить полигональную сетку». Подробнее читайте в " +"документации." #: resources/data/hints.ini: [hint:Slicing Parameter Table] msgid "" "Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change settings for each object/part?" +"Did you know that you can view all objects/parts on a table and change " +"settings for each object/part?" msgstr "" "Таблица параметров нарезки\n" -"Знаете ли вы, что можно просмотреть все модели/части в таблице и изменить параметры печати для каждой из них?" +"Знаете ли вы, что можно просмотреть все модели/части в таблице и изменить " +"параметры печати для каждой из них?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] msgid "" "Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy colorizing or printing?" +"Did you know that you can split a big object into small ones for easy " +"colorizing or printing?" msgstr "" "Разделение на модели/части\n" -"Знаете ли вы, что можно разделить большую модель на маленькие для удобства раскрашивания или печати?" +"Знаете ли вы, что можно разделить большую модель на маленькие для удобства " +"раскрашивания или печати?" #: resources/data/hints.ini: [hint:Subtract a Part] msgid "" "Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer. Read more in the documentation." +"Did you know that you can subtract one mesh from another using the Negative " +"part modifier? That way you can, for example, create easily resizable holes " +"directly in Orca Slicer. Read more in the documentation." msgstr "" "Вычитание объёмов\n" -"Знаете ли вы, что можно вычесть одну сетку из другой с помощью модификатора «Объём для вычитания»? Таким образом, например, отверстия в модели можно создавать непосредственно в Orca Slicer. Подробнее читайте в документации." +"Знаете ли вы, что можно вычесть одну сетку из другой с помощью модификатора " +"«Объём для вычитания»? Таким образом, например, отверстия в модели можно " +"создавать непосредственно в Orca Slicer. Подробнее читайте в документации." #: resources/data/hints.ini: [hint:STEP] msgid "" "STEP\n" -"Did you know that you can improve your print quality by slicing a STEP file instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" +"Did you know that you can improve your print quality by slicing a STEP file " +"instead of an STL?\n" +"Orca Slicer supports slicing STEP files, providing smoother results than a " +"lower resolution STL. Give it a try!" msgstr "" "STEP\n" -"Знаете ли вы, что можно улучшить качество печати, используя STEP файлы вместо STL?\n" -"Orca Slicer поддерживает нарезку STEP файлов, что обеспечивает более точное представление геометрии, чем при нарезке STL файлов." +"Знаете ли вы, что можно улучшить качество печати, используя STEP файлы " +"вместо STL?\n" +"Orca Slicer поддерживает нарезку STEP файлов, что обеспечивает более точное " +"представление геометрии, чем при нарезке STL файлов." #: resources/data/hints.ini: [hint:Z seam location] msgid "" "Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even paint it on your print, to have it in a less visible location? This improves the overall look of your model. Check it out!" +"Did you know that you can customize the location of the Z seam, and even " +"paint it on your print, to have it in a less visible location? This improves " +"the overall look of your model. Check it out!" msgstr "" "Позиция шва\n" -"Знаете ли вы, что можно изменить расположение шва и даже нарисовать его на модели, чтобы он был менее заметен? Это улучшает общий вид модели. Попробуйте это!" +"Знаете ли вы, что можно изменить расположение шва и даже нарисовать его на " +"модели, чтобы он был менее заметен? Это улучшает общий вид модели. " +"Попробуйте это!" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking prints? Depending on the material, you can improve the overall finish of the printed model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking " +"prints? Depending on the material, you can improve the overall finish of the " +"printed model by doing some fine-tuning." msgstr "" "Точная настройка потока\n" -"Знаете ли вы, что поток можно точно настроить для получения ещё более качественной печати? В зависимости от материала можно внести некоторые корректировки, чтобы улучшить общее качество печати." +"Знаете ли вы, что поток можно точно настроить для получения ещё более " +"качественной печати? В зависимости от материала можно внести некоторые " +"корректировки, чтобы улучшить общее качество печати." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" "Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into individual plates ready to print? This will simplify the process of keeping track of all the parts." +"Did you know that you can split a model that has a lot of parts into " +"individual plates ready to print? This will simplify the process of keeping " +"track of all the parts." msgstr "" "Распределение печатаемого на другие столы\n" -"Знаете ли вы, что модель, состоящую из большого количества частей, можно распределить на несколько столов? Это упрощает процесс отслеживания всех деталей при печати." +"Знаете ли вы, что модель, состоящую из большого количества частей, можно " +"распределить на несколько столов? Это упрощает процесс отслеживания всех " +"деталей при печати." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer +#: Height] msgid "" "Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" +"Did you know that you can print a model even faster, by using the Adaptive " +"Layer Height option? Check it out!" msgstr "" "Ускорение печати с помощью функции «Переменная высота слоёв»\n" -"Знаете ли вы, что можно печатать ещё быстрее, используя функцию «Переменная высота слоёв». Попробуйте!" +"Знаете ли вы, что можно печатать ещё быстрее, используя функцию «Переменная " +"высота слоёв». Попробуйте!" #: resources/data/hints.ini: [hint:Support painting] msgid "" "Support painting\n" -"Did you know that you can paint the location of your supports? This feature makes it easy to place the support material only on the sections of the model that actually need it." +"Did you know that you can paint the location of your supports? This feature " +"makes it easy to place the support material only on the sections of the " +"model that actually need it." msgstr "" "Рисование поддержек\n" -"Знаете ли вы, что можно прямо на модели рисовать где будет размещаться принудительная поддержка, а где поддержка будет заблокирована? Используйте для этого функцию «Рисование поддержек»." +"Знаете ли вы, что можно прямо на модели рисовать где будет размещаться " +"принудительная поддержка, а где поддержка будет заблокирована? Используйте " +"для этого функцию «Рисование поддержек»." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" "Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree supports work great for organic models, while saving filament and improving print speed. Check them out!" +"Did you know that you can choose from multiple types of supports? Tree " +"supports work great for organic models, while saving filament and improving " +"print speed. Check them out!" msgstr "" "Различные типы поддержек\n" -"Знаете ли вы, что можно выбрать один из нескольких типов поддержек? Древовидная поддержка отлично подходит для органических моделей, экономя при этом материал, уменьшая время печати." +"Знаете ли вы, что можно выбрать один из нескольких типов поддержек? " +"Древовидная поддержка отлично подходит для органических моделей, экономя при " +"этом материал, уменьшая время печати." #: resources/data/hints.ini: [hint:Printing Silk Filament] msgid "" "Printing Silk Filament\n" -"Did you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results." +"Did you know that Silk filament needs special consideration to print it " +"successfully? Higher temperature and lower speed are always recommended for " +"the best results." msgstr "" "Печать блестящей пластиковой нитью\n" -"Знаете ли вы, что блестящая пластиковая нить требует особого внимания для успешной печати? Для достижения наилучшего результата рекомендуется более высокая температура и более низкая скорость печати." +"Знаете ли вы, что блестящая пластиковая нить требует особого внимания для " +"успешной печати? Для достижения наилучшего результата рекомендуется более " +"высокая температура и более низкая скорость печати." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" "Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?" +"Did you know that when printing models have a small contact interface with " +"the printing surface, it's recommended to use a brim?" msgstr "" "Кайма для лучшей адгезии\n" -"Знаете ли вы, что при печати модели имеющей небольшой контакт с поверхностью стола, рекомендуется использовать кайму?" +"Знаете ли вы, что при печати модели имеющей небольшой контакт с поверхностью " +"стола, рекомендуется использовать кайму?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" "Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at one time?" +"Did you know that you can set slicing parameters for all selected objects at " +"one time?" msgstr "" "Задание параметров для нескольких моделей\n" -"Знаете ли вы, что можно задать параметры нарезки сразу для всех выбранных моделей?" +"Знаете ли вы, что можно задать параметры нарезки сразу для всех выбранных " +"моделей?" #: resources/data/hints.ini: [hint:Stack objects] msgid "" @@ -9708,428 +12239,510 @@ msgid "" "Did you know that you can stack objects as a whole one?" msgstr "" "Объединение моделей\n" -"Знаете ли вы, что можно объединить несколько моделей в единую? Используйте для этого команду «Объединить в сборку», выбрав несколько моделей." +"Знаете ли вы, что можно объединить несколько моделей в единую? Используйте " +"для этого команду «Объединить в сборку», выбрав несколько моделей." #: resources/data/hints.ini: [hint:Flush into support/objects/infill] msgid "" "Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?" +"Did you know that you can save the wasted filament by flushing them into " +"support/objects/infill during filament change?" msgstr "" "Очистка в поддержку/модель/заполнение\n" -"Знаете ли вы, что при смене пластиковой нити, можно сохранить материал, который иначе попал бы на черновую башню, сбросив его в поддержку/модель/заполнение?" +"Знаете ли вы, что при смене пластиковой нити, можно сохранить материал, " +"который иначе попал бы на черновую башню, сбросив его в поддержку/модель/" +"заполнение?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" "Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" +"Did you know that you can use more wall loops and higher sparse infill " +"density to improve the strength of the model?" msgstr "" "Увеличение прочности\n" -"Знаете ли вы, что для повышения прочности модели можно увеличить количество периметров и плотность заполнения?" +"Знаете ли вы, что для повышения прочности модели можно увеличить количество " +"периметров и плотность заполнения?" -msgid "Left Preset Value" -msgstr "Значение в левом профиле" +#~ msgid "AMS %s" +#~ msgstr "АСПП №%s" -msgid "Right Preset Value" -msgstr "Значение в правом профиле" +#~ msgid "Cali" +#~ msgstr "Калиб." -msgid "Undef category" -msgstr "Неопределённая категория" +#~ msgid "Calibration of extrusion" +#~ msgstr "Калибровка экструзии" -msgid "Undef group" -msgstr "Неопределённая группа" +#~ msgid "Push new filament into the extruder" +#~ msgstr "Вставка нового прутка в экструдер" -msgid "Retraction Length (Toolchange)" -msgstr "Длина отката (при смене инструмента)" +#~ msgid "Confirm whether the filament has been extruded" +#~ msgstr "Подтвердите, что пластиковая нить была выдавлена" -msgid "Flow Dynamic" -msgstr "Динамика потока" +#~ msgid "The region parameter is incorrrect" +#~ msgstr "Неправильная региональная настройка" -msgid "A fatal error occurred: %1%" -msgstr "Произошла фатальная ошибка: %1%" +#~ msgid "Failure of printer login" +#~ msgstr "Не удалось подключиться к принтеру." -msgid "Record" -msgstr "Запись" +#~ msgid "Failed to get ticket" +#~ msgstr "Не удалось получить заявку" -msgid "Report issue" -msgstr "Сообщить о проблеме" +#~ msgid "User authorization timeout" +#~ msgstr "Таймаут авторизации пользователя" -msgid "Connection to OctoPrint/Klipper works correctly." -msgstr "Соединение с OctoPrint/Klipper успешно установлено." +#~ msgid "Failure of bind" +#~ msgstr "Ошибка привязки" -msgid "Could not connect to OctoPrint/Klipper" -msgstr "Не удаётся подключиться к OctoPrint/Klipper" +#~ msgid "Print file not found, please slice again" +#~ msgstr "Файл для печати не найден, нарежьте ещё раз." -msgid "Connection to FlashAir works correctly." -msgstr "Соединение с FlashAir успешно установлено." +#~ msgid "Failed uploading print file" +#~ msgstr "Не удалось передать файл на печать." -msgid "Could not connect to FlashAir" -msgstr "Не удаётся подключиться к FlashAir" +#~ msgid "Wrong Access code" +#~ msgstr "Неправильный код доступа" -msgid "Connection to Duet works correctly." -msgstr "Соединение с Duet успешно установлено." +#~ msgid "Send to Printer failed. Please try again." +#~ msgstr "Ошибка отправки на принтер. Пожалуйста, попробуйте ещё раз." -msgid "Could not connect to Duet" -msgstr "Не удалось подключиться к Duet" +#~ msgid "No space left on Printer SD card" +#~ msgstr "На SD-карте принтера недостаточно места" -msgid "Connection to AstroBox works correctly." -msgstr "Соединение с AstroBox успешно установлено." +#~ msgid "Sending gcode file through cloud service" +#~ msgstr "Отправка файла G-кода через облачный сервис" -msgid "Could not connect to AstroBox" -msgstr "Не удалось подключиться к AstroBox" +#~ msgid "Please log out and login to the printer again." +#~ msgstr "Пожалуйста, выйдите и снова войдите в принтер." -msgid "Connection to Repetier works correctly." -msgstr "Подключение к Repetier успешно установлено." +#~ msgid "Factors of dynamic flow cali" +#~ msgstr "Коэф. калиб. динам. потока" -msgid "Could not connect to Repetier" -msgstr "Не удалось подключиться к Repetier" +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "Температура стола для последующих слоёв слишком низкая по сравнению с " +#~ "температурой первого слоя, более чем на %d градусов Цельсия.\n" +#~ "Это может привести к отрыву модели от стола во время печати." -msgid "Connection to MKS works correctly." -msgstr "Подключение к MKS успешно установлено." +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "Температура стола выше температуры стеклования этой пластиковой нити.\n" +#~ "Это может привести к засорению сопла и сбою печати.\n" +#~ "Пожалуйста, держите принтер открытым во время печати, чтобы обеспечить " +#~ "циркуляцию воздуха или снизить температуру стола." -msgid "Could not connect to MKS" -msgstr "Не удалось подключиться к MKS" +#~ msgid "Fan Speed: " +#~ msgstr "Скорость вентилятора: " -msgid "Connection to PrusaLink works correctly." -msgstr "Подключение к PrusaLink установлено." +#~ msgid "Total Time Estimation" +#~ msgstr "Оценка общего времени" -msgid "Could not connect to PrusaLink" -msgstr "Не удалось подключиться к PrusaLink" +#~ msgid "Resonance frequency identification" +#~ msgstr "Идентификация резонансной частоты" -msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "Примечание: требуется версия OctoPrint не ниже 1.1.0." +#~ msgid "Initialize failed (Not supported with LAN-only mode)!" +#~ msgstr "Ошибка инициализации (не поддерживается в режиме «Только LAN»)!" -msgid "Connection refused" -msgstr "Соединение запрещено" +#~ msgid "Initialize failed (Not supported by printer)!" +#~ msgstr "Ошибка инициализации (не поддерживается принтером)!" -msgid "Failed to connect to %s port %ld: %s" -msgstr "Не удалось подключиться к порту %s %ld: %s" +#~ msgid "Not supported by this model of printer!" +#~ msgstr "Не поддерживается этой моделью принтера!" + +#~ msgid "No files" +#~ msgstr "Файлы отсутствуют" + +#~ msgid "Not accessible in LAN-only mode!" +#~ msgstr "Недоступно в режиме «Только LAN»!" + +#~ msgid "Missing LAN ip of printer!" +#~ msgstr "Отсутствует сетевой адрес принтера!" + +#, c-format, boost-format +#~ msgid "You are going to delete %u files. Are you sure to continue?" +#~ msgstr "" +#~ "Вы собираетесь удалить файлы: %u шт. Вы уверены, что хотите это сделать?" + +#~ msgid "Immediately score" +#~ msgstr "Оценить сейчас" + +#, c-format, boost-format +#~ msgid "" +#~ "Disconnected from printer [%s] due to LAN mode disabled.Please reconnect " +#~ "the printer by logging in with your user account." +#~ msgstr "" +#~ "Соединение с принтером [%s] разорвано из-за отключения режима «Только " +#~ "LAN». Повторно подключитесь к принтеру, войдя в свою учётную запись." + +#, c-format, boost-format +#~ msgid "" +#~ "Disconnected from printer [%s] due to LAN mode enabled.Please reconnect " +#~ "the printer by inputting Access Code which can be gotten from printer " +#~ "screen." +#~ msgstr "" +#~ "Соединение с принтером [%s] разорвано из-за включения режима «Только " +#~ "LAN». Повторно подключитесь к принтеру, введя код доступа, который можно " +#~ "получить на экране принтера." + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "" +#~ "Пожалуйста, поставьте оценку вашей любимой модели в магазине Bambu Market." + +#~ msgid "Score" +#~ msgstr "Рейтинг" + +#~ msgid "Media" +#~ msgstr "Носитель" + +#~ msgid "The 3mf is not from Bambu Lab, load geometry data only." +#~ msgstr "" +#~ "Этот 3mf создан не в Bambu Lab, поэтому загрузятся только данные " +#~ "геометрии." + +#~ msgid "Dump video" +#~ msgstr "Выгрузить видео" + +#~ msgid "" +#~ "Upload task timed out. Please check the network problem and try again" +#~ msgstr "" +#~ "Истекло время ожидания отправки задания. Проверьте сетевое подключение и " +#~ "повторите попытку." + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Инженерная пластина Bamabu" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Высокотемпературная пластина Bamabu" + +#~ msgid "Can't connect to the printer" +#~ msgstr "Не удаётся подключиться к принтеру" + +#~ msgid "Recommended temperature range" +#~ msgstr "Рекомендуемый диапазон температур" + +#~ msgid "High Temp Plate" +#~ msgstr "Высокотемпературная пластина" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "Температура стола при установленной высокотемпературной печатной " +#~ "пластине. 0 означает, что пластиковая нить не поддерживает печать на этой " +#~ "печатной пластине." + +#~ msgid "Switch between Prepare/Prewview" +#~ msgstr "Переключение между окном подготовки и окном предпросмотра нарезки" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Толщина поддержки внутреннего моста" + +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges.These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "Если включено, под контурами внутренних мостов будут создаваться петли " +#~ "поддержки. Эти петли поддержки могут препятствовать выдавливанию " +#~ "внутренних мостов в воздух и улучшить качество поверхности сверху, " +#~ "особенно при низкой плотности заполнения. Это значение определяет толщину " +#~ "петель поддержки. Установите 0 для отключения." + +#~ msgid "" +#~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#~ msgstr "" +#~ "Значение Klipper-а max_accel_to_decel (ограничение ускорения зигзагов) " +#~ "будет скорректировано на данное ускорение: %" + +#~ msgid "Maximum acceleration for travel (M204 T)" +#~ msgstr "Максимальное ускорение при перемещении (M204 T)" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "Стиль и форма создаваемой поддержки.\n" +#~ "\n" +#~ "Стиль «Сетка» создаёт более устойчивые опоры. Стиль «Аккуратный» экономит " +#~ "материал и уменьшает образование дефектов на моделях.\n" +#~ "\n" +#~ "Для древовидной поддержки, при стройном стиле происходит более " +#~ "агрессивное объединение ветвей и экономия материала (по умолчанию). В то " +#~ "время как гибридный стиль создаёт структуру, схожую с обычную поддержкой " +#~ "при больших плоских нависаниях." + +#~ msgid "Target chamber temperature" +#~ msgstr "Температура, которую необходимо поддерживать внутри принтера." + +#~ msgid "Bed temperature difference" +#~ msgstr "Разница температур подогреваемого стола" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "Не рекомендуется, чтобы температура последующих слоёв была ниже " +#~ "температуры первого слоя, более чем на это пороговое значение. Слишком " +#~ "низкая температура последующих слоёв может привести к отрыву модели от " +#~ "стола." + +#~ msgid "Orient the model" +#~ msgstr "Ориентация модели" + +#~ msgid "Send to print" +#~ msgstr "Отправить на печать" + +#~ msgid "Simulate" +#~ msgstr "Cэмулировать" + +#~ msgid "Error Message" +#~ msgstr "Сообщение об ошибке" + +#~ msgid "Error uploading to print host:" +#~ msgstr "Ошибка при отправке на хост печати:" -msgid "Couldn't connect to server" -msgstr "Не удалось подключиться к серверу" +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 0 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Введите допустимые значения:\n" +#~ "start > 0 step >= 0\n" +#~ "end > start + step)" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 10 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Введите допустимые значения:\n" +#~ "start > 10 step >= 0\n" +#~ "end > start + step)" + +#~ msgid "Left Preset Value" +#~ msgstr "Значение в левом профиле" + +#~ msgid "Right Preset Value" +#~ msgstr "Значение в правом профиле" + +#~ msgid "Undef category" +#~ msgstr "Неопределённая категория" + +#~ msgid "Undef group" +#~ msgstr "Неопределённая группа" + +#~ msgid "Retraction Length (Toolchange)" +#~ msgstr "Длина отката (при смене инструмента)" + +#~ msgid "Flow Dynamic" +#~ msgstr "Динамика потока" -msgid "Couldn't resolve host '%s'" -msgstr "Не удаётся определить имя хоста '%s'" +#~ msgid "A fatal error occurred: %1%" +#~ msgstr "Произошла фатальная ошибка: %1%" -msgid "Suggestion" -msgstr "Совет" +#~ msgid "Record" +#~ msgstr "Запись" -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it." -msgstr "Компонент BambuSource неправильно зарегистрирован для воспроизведения мультимедиа! Нажмите «Да», чтобы перерегистрировать его." +#~ msgid "Report issue" +#~ msgstr "Сообщить о проблеме" -msgid "Missing BambuSource component registered for media playing! Please re-install BambuStutio or seek after-sales help." -msgstr "Отсутствует компонент BambuSource, зарегистрированный для воспроизведения мультимедиа! Пожалуйста, переустановите BambuStutio или обратитесь в поддержку." +#~ msgid "Connection to OctoPrint/Klipper works correctly." +#~ msgstr "Соединение с OctoPrint/Klipper успешно установлено." -msgid "Test storage" -msgstr "Тест накопителя" +#~ msgid "Could not connect to OctoPrint/Klipper" +#~ msgstr "Не удаётся подключиться к OctoPrint/Klipper" -msgid "Test BambuLab" -msgstr "Тест BambuLab" +#~ msgid "Connection to FlashAir works correctly." +#~ msgstr "Соединение с FlashAir успешно установлено." -msgid "Test BambuLab:" -msgstr "Тест BambuLab:" +#~ msgid "Could not connect to FlashAir" +#~ msgstr "Не удаётся подключиться к FlashAir" -msgid "Test Bing.com" -msgstr "Тест Bing.com" +#~ msgid "Connection to Duet works correctly." +#~ msgstr "Соединение с Duet успешно установлено." -msgid "Test bing.com:" -msgstr "Тест bing.com:" +#~ msgid "Could not connect to Duet" +#~ msgstr "Не удалось подключиться к Duet" -msgid "Test HTTP" -msgstr "Тест HTTP" +#~ msgid "Connection to AstroBox works correctly." +#~ msgstr "Соединение с AstroBox успешно установлено." -msgid "Test HTTP Service:" -msgstr "Тест HTTP сервера:" +#~ msgid "Could not connect to AstroBox" +#~ msgstr "Не удалось подключиться к AstroBox" -msgid "Test storage upgrade" -msgstr "Тест накопителя (обновление)" +#~ msgid "Connection to Repetier works correctly." +#~ msgstr "Подключение к Repetier успешно установлено." -msgid "Test Storage Upgrade:" -msgstr "Тест накопителя (обновление):" +#~ msgid "Could not connect to Repetier" +#~ msgstr "Не удалось подключиться к Repetier" -msgid "Test Storage Upload" -msgstr "Тест накопителя (отправка)" +#~ msgid "Connection to MKS works correctly." +#~ msgstr "Подключение к MKS успешно установлено." -msgid "Test Storage Upload:" -msgstr "Тест накопителя (отправка):" +#~ msgid "Could not connect to MKS" +#~ msgstr "Не удалось подключиться к MKS" -msgid "Test storage download" -msgstr "Тест накопителя (загрузка)" +#~ msgid "Connection to PrusaLink works correctly." +#~ msgstr "Подключение к PrusaLink установлено." -msgid "Test Storage Download:" -msgstr "Тест накопителя (загрузка):" +#~ msgid "Could not connect to PrusaLink" +#~ msgstr "Не удалось подключиться к PrusaLink" -msgid "Log Info" -msgstr "Журнал сведений" +#~ msgid "Note: OctoPrint version at least 1.1.0 is required." +#~ msgstr "Примечание: требуется версия OctoPrint не ниже 1.1.0." -msgid "Studio Version:" -msgstr "Версия программы:" +#~ msgid "Connection refused" +#~ msgstr "Соединение запрещено" -msgid "System Version:" -msgstr "Версия ОС:" +#~ msgid "Failed to connect to %s port %ld: %s" +#~ msgstr "Не удалось подключиться к порту %s %ld: %s" -msgid "Start Test Multi-Thread" -msgstr "Запуск многопоточного теста" +#~ msgid "Couldn't connect to server" +#~ msgstr "Не удалось подключиться к серверу" -msgid "Start Test Single-Thread" -msgstr "Запуск однопоточного теста" +#~ msgid "Couldn't resolve host '%s'" +#~ msgstr "Не удаётся определить имя хоста '%s'" -msgid "Network Test" -msgstr "Проверка сети" +#~ msgid "Suggestion" +#~ msgstr "Совет" -msgid "Multimaterial" -msgstr "Экструдер ММ" +#~ msgid "" +#~ "BambuSource has not correctly been registered for media playing! Press " +#~ "Yes to re-register it." +#~ msgstr "" +#~ "Компонент BambuSource неправильно зарегистрирован для воспроизведения " +#~ "мультимедиа! Нажмите «Да», чтобы перерегистрировать его." -msgid "Single extruder multimaterial setup" -msgstr "Мультиматериальный одиночный экструдер" +#~ msgid "" +#~ "Missing BambuSource component registered for media playing! Please re-" +#~ "install BambuStutio or seek after-sales help." +#~ msgstr "" +#~ "Отсутствует компонент BambuSource, зарегистрированный для воспроизведения " +#~ "мультимедиа! Пожалуйста, переустановите BambuStutio или обратитесь в " +#~ "поддержку." -msgid "Single Extruder Multi Material" -msgstr "Мультиматериальный одиночный экструдер" +#~ msgid "Test storage" +#~ msgstr "Тест накопителя" -msgid "Use single nozzle to print multi filament" -msgstr "Использование одной экструзионной головы для печати несколькими видами/цветами пластика." +#~ msgid "Test BambuLab" +#~ msgstr "Тест BambuLab" -msgid "Wipe tower" -msgstr "Черновая башня" +#~ msgid "Test BambuLab:" +#~ msgstr "Тест BambuLab:" -msgid "Purge in prime tower" -msgstr "Очистка в черновую башню" +#~ msgid "Test Bing.com" +#~ msgstr "Тест Bing.com" -msgid "Purge remaining filament into prime tower" -msgstr "Очистка сопла от остатков материала в черновую башню" +#~ msgid "Test bing.com:" +#~ msgstr "Тест bing.com:" -msgid "Enable filament ramming" -msgstr "Включить рэмминг прутка" +#~ msgid "Test HTTP" +#~ msgstr "Тест HTTP" -msgid "No sparse layers (EXPERIMENTAL)" -msgstr "Отсутствие разреженных слоёв (экспериментально)" +#~ msgid "Test HTTP Service:" +#~ msgstr "Тест HTTP сервера:" -msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Если этот параметр включён, черновая башня не будет печататься на слоях где не происходит смена инструмента. На слоях, где происходит смена инструмента, экструдер будет опускаться вниз до верхней части черновой башни, чтобы напечатать её. Эта функция помечена как экспериментальная, поэтому пользователь несёт ответственность за то, чтобы не допустить столкновения экструдера с напечатанным." +#~ msgid "Test storage upgrade" +#~ msgstr "Тест накопителя (обновление)" -msgid "Prime all printing extruders" -msgstr "Подготовка всех печатающих экструдеров" +#~ msgid "Test Storage Upgrade:" +#~ msgstr "Тест накопителя (обновление):" -msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." -msgstr "Если этот параметр включён, все печатающие экструдеры в начале печати будут подготавливаться на переднем крае стола" +#~ msgid "Test Storage Upload" +#~ msgstr "Тест накопителя (отправка)" -msgid "Single extruder multimaterial parameters" -msgstr "Параметры мультиматериального одиночного экструдера" +#~ msgid "Test Storage Upload:" +#~ msgstr "Тест накопителя (отправка):" -msgid "Cooling tube position" -msgstr "Позиция охлаждающей трубки" +#~ msgid "Test storage download" +#~ msgstr "Тест накопителя (загрузка)" -msgid "Distance of the center-point of the cooling tube from the extruder tip." -msgstr "Расстояние между центральной точкой охлаждающей трубки и кончиком экструдера." +#~ msgid "Test Storage Download:" +#~ msgstr "Тест накопителя (загрузка):" -msgid "Cooling tube length" -msgstr "Длина охлаждающей трубки" +#~ msgid "Log Info" +#~ msgstr "Журнал сведений" -msgid "Length of the cooling tube to limit space for cooling moves inside it." -msgstr "Длина охлаждающей трубки для ограничения перемещения при охлаждающих движениях." +#~ msgid "Studio Version:" +#~ msgstr "Версия программы:" -msgid "Filament parking position" -msgstr "Положение парковки прутка" +#~ msgid "System Version:" +#~ msgstr "Версия ОС:" -msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware." -msgstr "Расстояние от кончика экструдера до точки, где размещается пруток при выгрузке. Расстояние должно соответствовать значению в прошивке принтера." +#~ msgid "Start Test Multi-Thread" +#~ msgstr "Запуск многопоточного теста" -msgid "Extra loading distance" -msgstr "Дополнительная длина загрузки" +#~ msgid "Start Test Single-Thread" +#~ msgstr "Запуск однопоточного теста" -msgid "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading." -msgstr "Если установлено 0, то расстояние, которое проходит пруток при перемещении из положения парковки во время загрузки, точно такое же, как и при выгрузке. При положительном значении, она загружается дальше; при отрицательном, ход загрузки короче (по сравнению с выгрузкой)." +#~ msgid "Network Test" +#~ msgstr "Проверка сети" -msgid "High extruder current on filament swap" -msgstr "Повышение тока экструдера при замене прутка" +#~ msgid "Wipe tower - Purging volume adjustment" +#~ msgstr "Черновая башня - регулировка объёма сброса пластика" -msgid "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip." -msgstr "Это может быть полезно для увеличения тока двигателя экструдера во время замены прутка, чтобы быстро увеличить скорость подачи и преодолеть сопротивление при загрузке прутка с плохой формой кончика." +#~ msgid "" +#~ "Here you can adjust required purging volume (mm³) for any given pair of " +#~ "tools." +#~ msgstr "" +#~ "Здесь вы можете отрегулировать требуемый объём очистки (мм³) для любой " +#~ "пары инструментов." -msgid "Toolchange parameters with single extruder MM printers" -msgstr "Параметры смены инструмента в одноэкструдерных мультиматериальных принтерах" +#~ msgid "Extruder changed to" +#~ msgstr "Экструдер перешёл на - " -msgid "Toolchange parameters with multi extruder MM printers" -msgstr "Параметры смены инструмента в мультиэкструдерных мультиматериальных принтерах" +#~ msgid "Tool #" +#~ msgstr "Инструмент #" -msgid "Ramming settings" -msgstr "Настройки рэмминга" +#~ msgid "" +#~ "Total purging volume is calculated by summing two values below, depending " +#~ "on which tools are loaded/unloaded." +#~ msgstr "" +#~ "Общий объём прочистки вычисляется путём суммирования двух нижеуказанных " +#~ "значений, в зависимости от того, какие инструменты предзагружены/" +#~ "выгружены." -msgid "Loading speed" -msgstr "Скорость загрузки" +#~ msgid "Volume to purge (mm³) when the filament is being" +#~ msgstr "Объём прочистки (мм³) при выдавливании прутка" -msgid "Speed used for loading the filament on the wipe tower." -msgstr "Скорость загрузки прутка при печати черновой башни." +#~ msgid "Volumetric speed" +#~ msgstr "Объёмная скорость потока" -msgid "Loading speed at the start" -msgstr "Начальная скорость загрузки" +#~ msgid "Branch Diameter" +#~ msgstr "Диаметр ветвей" -msgid "Speed used at the very beginning of loading phase." -msgstr "Скорость в начальной фазе загрузки прутка." +#~ msgid "" +#~ "The diameter of the thinnest branches of organic support. Thicker " +#~ "branches are more sturdy. Branches towards the base will be thicker than " +#~ "this." +#~ msgstr "" +#~ "Диаметр самых тонких ветвей органической поддержки. Чем толще ветви, тем " +#~ "они крепче. Ветви, идущие к основанию, будут утолщаться." -msgid "Unloading speed" -msgstr "Скорость выгрузки" +#~ msgid "Branch Distance" +#~ msgstr "Расстояние между ветками" -msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." -msgstr "Скорость выгрузки прутка на черновую башню. (не влияет на начальную фазу выгрузки сразу после рэмминга)." - -msgid "Unloading speed at the start" -msgstr "Начальная скорость выгрузки" - -msgid "Speed used for unloading the tip of the filament immediately after ramming." -msgstr "Скорость выгрузки кончика прутка сразу после рэмминга." - -msgid "Delay after unloading" -msgstr "Задержка после выгрузки" - -msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions." -msgstr "Время ожидания после выгрузки прутка. Это может помочь вам легко сменить сопло при печати гибкими материалами, которым требуется больше времени, чтобы вернуться к своим первоначальным размерам." - -msgid "Wipe tower parameters" -msgstr "Параметры черновой башни" - -#: src/libslic3r/PrintConfig.cpp:1048 -msgid "Number of cooling moves" -msgstr "Количество охлаждающих движений" - -msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." -msgstr "Пруток охлаждается в охлаждающих трубках путём перемещения назад и вперёд. Укажите желаемое количество таких движений." - -msgid "Speed of the first cooling move" -msgstr "Скорость первого охлаждающего движения" - -msgid "Cooling moves are gradually accelerating beginning at this speed." -msgstr "Охлаждающие движения постепенно ускоряются, начиная с этой скорости." - -msgid "Speed of the last cooling move" -msgstr "Скорость последнего охлаждающего движения" - -msgid "Cooling moves are gradually accelerating towards this speed." -msgstr "Охлаждающие движения постепенно ускоряют до этой скорости." - -msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." -msgstr "Время за которое прошивка принтера (или Multi Material Unit 2.0) выгружает пруток во время смены инструмента (при выполнении кода Т). Это время добавляется к общему времени печати с помощью алгоритма оценки времени выполнения G-кода." - -msgid "Ramming parameters" -msgstr "Параметры рэмминга" - -msgid "This string is edited by RammingDialog and contains ramming specific parameters." -msgstr "Эта строка редактируется диалоговым окном рэмминга и содержит его конкретные параметры." - -msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." -msgstr "Время за которое прошивка принтера (или Multi Material Unit 2.0) выгружает пруток во время смены инструмента (при выполнении кода Т). Это время добавляется к общему времени печати с помощью алгоритма оценки времени выполнения G-кода." - -msgid "Enable ramming for multitool setups" -msgstr "Включить рэмминг для мультиинструментальных устройств" - -msgid "Perform ramming when using multitool 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 toolchange. This option is only used when the wipe tower is enabled." -msgstr "Выполнять рэмминг при использовании мультиинструментального принтера (т. е. когда в настройках принтера снят флажок «Мультиматериальный одиночный экструдер»). При включении этой опции, небольшое количество материала быстро выдавливается на черновую башню непосредственно перед сменой инструмента. Эта опция используется только в том случае, если включена черновая башня." - -msgid "Multitool ramming volume" -msgstr "Объём рэмминга мультиинструмента" - -msgid "The volume to be rammed before the toolchange." -msgstr "Объём рэмминга перед сменой инструмента." - -msgid "Multitool ramming flow" -msgstr "Поток рэмминга мультиинструмента" - -msgid "Flow used for ramming the filament before the toolchange." -msgstr "Поток рэмминга пластиковой нити перед сменой инструмента." - -msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself be reinserted later. This phase is important and different materials can require different extrusion speeds to get the good shape. For this reason, the extrusion rates " -"during ramming are adjustable.\n" -"\n" -"This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." -msgstr "" -"Рэмминг (ramming, дословно утрамбовка) означает быстрое экструдирование непосредственно перед сменой инструмента в одноэкструдерном мультиматериальном принтере. Цель процесса состоит в том, чтобы правильно сформировать конец выгружаемого прутка, чтобы он не препятствовал вставке нового прутка или этого же прутка, вставленного позже. Эта фаза важна и разные материалы могут потребовать разных " -"скоростей экструзии, чтобы получить хорошую форму. По этой причине скорость экструзии во время рэмминга регулируется.\n" -"\n" -"Эта опция для опытных пользователей, неправильная настройка может привести к замятию, протиранию прутка приводом экструдера и т.д." - -msgid "Total ramming time" -msgstr "Общее время рэмминга" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:118 -msgid "Total rammed volume" -msgstr "Общий объём при рэмминге" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:122 -msgid "Ramming line width" -msgstr "Ширина линии при рэмминге" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:124 -msgid "Ramming line spacing" -msgstr "Расстояние между линиями при рэмминге" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:175 -msgid "Wipe tower - Purging volume adjustment" -msgstr "Черновая башня - регулировка объёма сброса пластика" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:301 -msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." -msgstr "Здесь вы можете отрегулировать требуемый объём очистки (мм³) для любой пары инструментов." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:302 -msgid "Extruder changed to" -msgstr "Экструдер перешёл на - " - -#: src/slic3r/GUI/WipeTowerDialog.cpp:354 -msgid "Tool #" -msgstr "Инструмент #" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:363 -msgid "Total purging volume is calculated by summing two values below, depending on which tools are loaded/unloaded." -msgstr "Общий объём прочистки вычисляется путём суммирования двух нижеуказанных значений, в зависимости от того, какие инструменты предзагружены/выгружены." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:364 -msgid "Volume to purge (mm³) when the filament is being" -msgstr "Объём прочистки (мм³) при выдавливании прутка" - -msgid "Volumetric speed" -msgstr "Объёмная скорость потока" - -msgid "Tip Diameter" -msgstr "Диаметр кончика ветки" - -#. TRN PrintSettings: "Organic supports" > "Tip Diameter" -msgid "Branch tip diameter for organic supports." -msgstr "Диаметр кончика ветки органической поддержки." - -#: src/libslic3r/PrintConfig.cpp:2952 -msgid "Branch Diameter" -msgstr "Диаметр ветвей" - -#. TRN PrintSettings: "Organic supports" > "Branch Diameter" -msgid "The diameter of the thinnest branches of organic support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." -msgstr "Диаметр самых тонких ветвей органической поддержки. Чем толще ветви, тем они крепче. Ветви, идущие к основанию, будут утолщаться." - -msgid "Branch Diameter Angle" -msgstr "Угол изменения диаметра ветвей" - -#. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" -msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the organic support." -msgstr "Угол изменения диаметра ветвей по мере их постепенного утолщения к основанию. Если значение угла равно 0, ветви будут иметь одинаковую толщину по всей своей длине. Небольшой угол может повысить устойчивость органической поддержки." - -#: src/libslic3r/PrintConfig.cpp:2978 -msgid "Branch Diameter with double walls" -msgstr "Диаметр ветвей с двойными стенками" - -#. TRN PrintSettings: "Organic supports" > "Branch Diameter" -msgid "Branches with area larger than the area of a circle of this diameter will be printed with double walls for stability. Set this value to zero for no double walls." -msgstr "Ветви, толщина которых больше указанного диаметра, будут напечатаны с двойными стенками для прочности. Установите 0, если двойные стенки у ветвей не нужны." - -msgid "Branch Distance" -msgstr "Расстояние между ветками" - -#. TRN PrintSettings: "Organic supports" > "Branch Distance" -msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." -msgstr "Указывает, насколько далеко друг от друга должны располагаться ветви при касании модели. Если задать небольшое расстояние, то увеличится количество точек, в которых древовидная поддержка касается модели. Это улучшит печать нависаний, но при этом усложнит удаление поддержки." - -#: src/libslic3r/PrintConfig.cpp:3004 -msgid "Branch Density" -msgstr "Плотность ветвей" - -#. TRN PrintSettings: "Organic supports" > "Branch Density" -msgid "Adjusts the density of the support structure used to generate the tips of the branches. A higher value results in better overhangs but the supports are harder to remove, thus it is recommended to enable top support interfaces instead of a high branch density value if dense interfaces are needed." -msgstr "Регулирует плотность создания ветвей в месте контакта с моделью. Большее значение приводит к улучшению качества печати нависаний, но такие поддержки сложнее удалять, поэтому рекомендуется вместо высокого значения плотности ветвей включать связующие слои поддержки." +#~ msgid "" +#~ "How far apart the branches need to be when they touch the model. Making " +#~ "this distance small will cause the tree support to touch the model at " +#~ "more points, causing better overhang but making support harder to remove." +#~ msgstr "" +#~ "Указывает, насколько далеко друг от друга должны располагаться ветви при " +#~ "касании модели. Если задать небольшое расстояние, то увеличится " +#~ "количество точек, в которых древовидная поддержка касается модели. Это " +#~ "улучшит печать нависаний, но при этом усложнит удаление поддержки." diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 32841ebd6b..bb6a1b02f4 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -647,6 +647,9 @@ msgstr "Laddar modell vy" msgid "Choose one file (3mf):" msgstr "Välj en fil (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Välj en eller flera filer (3mf/step/stl/svg/obj/amf):" @@ -1499,6 +1502,9 @@ msgstr "Sammankopplar..." msgid "?" msgstr " ?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "Tom" @@ -1511,12 +1517,6 @@ msgstr "" msgid "AMS not connected" msgstr "AMS ej ansluten" -msgid "Cali" -msgstr "Kalib" - -msgid "Calibration of extrusion" -msgstr "Kalibrering av extrudering" - msgid "Load Filament" msgstr "Ladda Filament" @@ -1547,6 +1547,9 @@ msgstr "Kalibrera igen" msgid "Cancel calibration" msgstr "Avbryt kalibrering" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "Värm upp nozzle" @@ -1562,8 +1565,14 @@ msgstr "Mata in nytt filament i extrudern" msgid "Purge old filament" msgstr "Rensa gammalt filament" -msgid "Push new filament into the extruder" -msgstr "Mata nytt filament till extruder" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "Ta ett nytt filament" @@ -2400,27 +2409,6 @@ msgstr "" "Rekommenderad nozzel temperatur med denna filament typ är [%d, %d] grader " "celius" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"Byggplattans temperatur för andra lager är mindre än temperaturen för första " -"lager med mer än %d grader celsius.\n" -"Detta kan medföra att utskriften släpper ifrån byggplattan under utskriften" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"Sängtemperaturen är högre än förglasnings temperaturen för detta filament.\n" -"Detta kan orsaka blockering av nozzeln och utskriftsfel.\n" -"Håll skrivaren öppen under utskriftsprocessen för att säkerställa " -"luftcirkulationen eller minska temperaturen på den varma sängen." - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2428,6 +2416,13 @@ msgstr "" "För liten max volymhastighet.\n" "Värdet återställdes till 0,5" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2486,6 +2481,9 @@ msgstr "" "Spiralläget fungerar endast när vägg varv är 1, support är inaktiverat, top " "skalets lager är 0, gles ifyllnad är 0 och timelapse typen är traditionell." +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2613,6 +2611,36 @@ msgstr "Pausad på grund av fel i nozzle temperaturen" msgid "Paused due to heat bed temperature malfunction" msgstr "Pausad på grund av fel i byggplattans temperatur" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "MC" @@ -2649,6 +2677,24 @@ msgstr "Verifikation misslyckade." msgid "Update failed." msgstr "Uppdatering misslyckades." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "Det gick inte att starta utskriftsjobbet" @@ -2777,12 +2823,15 @@ msgstr "Rensad" msgid "Total" msgstr "Totalt" -msgid "Total Time Estimation" -msgstr "Total tidsuppskattning" +msgid "Total Estimation" +msgstr "Total Uppskattning" msgid "Total time" msgstr "Total tid" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "upp till" @@ -2870,9 +2919,6 @@ msgstr "Skrivare" msgid "Print settings" msgstr "Utskrifts inställningar" -msgid "Total Estimation" -msgstr "Total Uppskattning" - msgid "Time Estimation" msgstr "Beräknad tid" @@ -2981,6 +3027,9 @@ msgstr "Tillåt multipla material på samma byggplatta" msgid "Avoid extrusion calibration region" msgstr "Undvik kalibrerings området" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "Lägg till" @@ -3074,8 +3123,11 @@ msgstr "Micro Lidar Kalibrering" msgid "Bed leveling" msgstr "Justering av Byggplattan" -msgid "Resonance frequency identification" -msgstr "Identifiering av resonansfrekvenser" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "Kalibrerings program" @@ -3095,6 +3147,9 @@ msgstr "Kalibrerings Flöde" msgid "Start Calibration" msgstr "Starta Kalibrering" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "Slutförd" @@ -3171,9 +3226,6 @@ msgstr "Nej" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "avslutas innan en ny modell skapas. Vill du fortsätta?" -msgid "Upload" -msgstr "" - msgid "Slice plate" msgstr "Bered plattan" @@ -3836,12 +3888,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "Lager: N/A" -msgid "Immediately score" -msgstr "Omedelbar resultat" - msgid "Clear" msgstr "Rensa" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "Kamera" @@ -3907,12 +3967,6 @@ msgstr "I Moln Berednings Kön finns det %s uppgifter framför dig." msgid "Layer: %s" msgstr "Lager: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Vänligen ge ett betyg till din favorit modell från Bambu Market." - -msgid "Score" -msgstr "Resultat" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Lager: %d/%d" @@ -3954,6 +4008,97 @@ msgstr "Galet" msgid "Can't start this without SD card." msgstr "Kan inte starta utan MicroSD-kort." +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "info" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "Status" @@ -4080,6 +4225,9 @@ msgstr "Varning:" msgid "Export successfully." msgstr "Exportering lyckades" +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "" @@ -4166,6 +4314,9 @@ msgstr "Första Lager Inspektion" msgid "Auto-recovery from step loss" msgstr "Automatisk återhämtning vid stegförlust" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "Global" @@ -4319,6 +4470,11 @@ msgstr "" "nozzeln. Byt ut den härdade nozzeln eller filamentet, annars kommer nozzeln " "att slitas ner eller skadas." +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, c-format, boost-format msgid "Loading file: %s" msgstr "Laddar fil: %s" @@ -4535,6 +4691,11 @@ msgstr "laddar ner projekt ..." msgid "Project downloaded %d%%" msgstr "Projektet har laddats ned %d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "Den valda filen" @@ -4917,9 +5078,6 @@ msgstr "fel" msgid "warning" msgstr "varning" -msgid "info" -msgstr "info" - msgid "debug" msgstr "felsök" @@ -5172,11 +5330,17 @@ msgstr "Bambu Cool Plate" msgid "PLA Plate" msgstr "PLA platta" -msgid "Bamabu Engineering Plate" -msgstr "Bambu Engineering Plate" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "Bambu High Temperature Plate" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "Skicka utskriftsjobb till" @@ -5190,8 +5354,8 @@ msgstr "Justering av Byggplattan" msgid "Flow Dynamics Calibration" msgstr "" -msgid "Can't connect to the printer" -msgstr "Kan inte ansluta till skrivaren" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "Skicka komplett" @@ -5303,6 +5467,16 @@ msgstr "Det går inte att skicka ett utskriftsjobb för en tom platta." msgid "This printer does not support printing all plates" msgstr "Den här skrivaren stöder inte utskrift av alla byggplattor" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "Fel" @@ -5629,6 +5803,9 @@ msgstr "Raft" msgid "Support filament" msgstr "Support filament" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "Prime torn" @@ -5685,9 +5862,6 @@ msgstr "" "Rekommenderat nozzel temperaturs område för detta filament. 0 betyder inte " "fastställt" -msgid "Recommended temperature range" -msgstr "Rekommenderat nozzel temperaturs område" - msgid "Print temperature" msgstr "Utskrifts temperatur" @@ -5717,15 +5891,14 @@ msgstr "" "Detta är byggplattans temperatur när Engineering Plate är installerad. Ett " "värde på 0 betyder att filamentet inte stöder utskrift på Engineering Plate." -msgid "High Temp Plate" -msgstr "High Temp Plate" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"Detta är byggplattans temperatur när High Temp Plate är installerad. Värdet " -"0 betyder att filamentet inte stöder utskrift på High Temp Plate." msgid "Textured PEI Plate" msgstr "Texturerad PEI-platta" @@ -5776,6 +5949,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "Extra del kylnings fläkt" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "Filament start G-kod" @@ -5827,6 +6009,9 @@ msgstr "Före lagerskifte G-kod" msgid "Layer change G-code" msgstr "Lagerskifte G-kod" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "Byta filament G-kod" @@ -6686,6 +6871,11 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" "Misslyckades att kalkylera linjebredden av %1%. Kan inte få värdet av “%2%” " +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "Oidentifierat fel" @@ -6840,6 +7030,24 @@ msgid "" msgstr "" "Spiral Vase läge fungerar inte när objektet innehåller mer än ett material." +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "Ett Prime Torn stöds inte i \"Per objekt\" utskrift." @@ -7339,6 +7547,14 @@ msgid "Enable this option to slow printing down for different overhang degree" msgstr "" "Aktivera detta val för att sänka hastigheten för olika överhängs grader" +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "" @@ -7472,6 +7688,23 @@ msgstr "Standard process profil" msgid "Default process profile when switch to this machine profile" msgstr "Standard process profil vid byte till denna maskinens profil" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "Fläkt hastighet" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "Ingen kylning vid första" @@ -7539,17 +7772,6 @@ msgstr "" "Lägg till massiv fyllning nära sluttande ytor för att garantera den " "vertikala skal tjockleken (topp+bottenfasta lager)." -msgid "Internal bridge support thickness" -msgstr "Tjocklek på inre bridge support" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" - msgid "Top surface pattern" msgstr "Topp ytans mönster" @@ -8121,7 +8343,12 @@ msgid "accel_to_decel" msgstr "" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" msgstr "" msgid "Jerk of outer walls" @@ -8328,6 +8555,30 @@ msgstr "" msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "Aktivera detta val om maskinen har extra kylfläkt" @@ -8360,6 +8611,28 @@ msgid "" "Set to 0 to deactivate." msgstr "" +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "G-kod smak" @@ -8613,9 +8886,6 @@ msgstr "Max acceleration för förflyttning" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -msgid "Fan speed" -msgstr "Fläkt hastighet" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8633,6 +8903,55 @@ msgstr "" "Högsta utskrivbara lagerhöjd för extrudern: detta används för att begränsa " "den maximala lagerhöjden när adaptiv lagerhöjd är aktiverad" +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "Min hastighet för del kylfläkten" @@ -8918,6 +9237,22 @@ msgstr "" "den förflyttas. Att använda spirallinjer för att lyfta z kan förhindra " "strängning" +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "" @@ -9410,16 +9745,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"Supportens stil och form. För normal support skapas en regelbunden " -"rutnätsform stabilare stöd (standard), medan snäva support torn sparar " -"material och minskar ärrbildning på objektet.\n" -"För träd support kommer smal stil att sammanfoga grenar mer aggressivt och " -"spara mycket material (standard), medan hybrid stil kommer att skapa " -"liknande struktur som normalt stöd under stora platta överhäng." msgid "Snug" msgstr "Tight" @@ -9574,24 +9904,19 @@ msgstr "" msgid "Chamber temperature" msgstr "" -msgid "Target chamber temperature" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "Nozzel temperatur efter första lager" -msgid "Bed temperature difference" -msgstr "Byggplattans temperatur skillnad" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"Det rekommenderas inte att byggytans temperatur för andra lager är lägre än " -"det första lagret med mer än denna nivå. För låg byggyts temperatur på andra " -"lager kan göra att modellen lossnar från byggplattan." - msgid "Detect thin wall" msgstr "Upptäck tunna väggar" @@ -10008,6 +10333,12 @@ msgstr "" msgid "Load first filament as default for those not loaded" msgstr "" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "mtcpp" @@ -10064,14 +10395,39 @@ msgstr "" msgid "Repetions count of the whole model" msgstr "" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "Konvertera enhet" msgid "Convert the units of model" msgstr "Konvertera modellens enheter" -msgid "Orient the model" -msgstr "Orientera modellen" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "Skala modellen med en plus faktor" @@ -10127,6 +10483,12 @@ msgstr "" "Välj felsöknings nivå. 0:allvarlig, 1:fel, 2:varning, 3:info, 4:felsök, 5:" "spåra\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "Fel i zip arkiv" @@ -10323,6 +10685,15 @@ msgstr "" msgid "The name cannot exceed 40 characters." msgstr "" +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "" @@ -10352,6 +10723,9 @@ msgstr "" msgid "Please select filament to calibrate." msgstr "" +msgid "The input value size must be 3." +msgstr "" + msgid "Connecting to printer..." msgstr "" @@ -10370,9 +10744,6 @@ msgstr "" msgid "Flow rate calibration result has been saved to preset" msgstr "" -msgid "The input value size must be 3." -msgstr "" - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" @@ -10508,6 +10879,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "" @@ -10610,6 +10984,12 @@ msgstr "" msgid "Extra info" msgstr "" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "" @@ -10620,6 +11000,21 @@ msgstr "" msgid "Connecting to printer" msgstr "" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" @@ -10732,6 +11127,9 @@ msgstr "" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" +msgid "Upload" +msgstr "" + msgid "Print host upload queue" msgstr "" @@ -10793,9 +11191,6 @@ msgstr "" msgid "PA Pattern" msgstr "" -msgid "Method" -msgstr "" - msgid "Start PA: " msgstr "" @@ -10869,7 +11264,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10884,7 +11280,8 @@ msgstr "" msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10940,6 +11337,17 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "" +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -11197,3 +11605,106 @@ msgstr "" "Förbättra styrkan\n" "Visste du att du kan använda fler väggslingor och högre gles fyllningstäthet " "för att förbättra modellens styrka?" + +#~ msgid "Cali" +#~ msgstr "Kalib" + +#~ msgid "Calibration of extrusion" +#~ msgstr "Kalibrering av extrudering" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Mata nytt filament till extruder" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "Byggplattans temperatur för andra lager är mindre än temperaturen för " +#~ "första lager med mer än %d grader celsius.\n" +#~ "Detta kan medföra att utskriften släpper ifrån byggplattan under " +#~ "utskriften" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "Sängtemperaturen är högre än förglasnings temperaturen för detta " +#~ "filament.\n" +#~ "Detta kan orsaka blockering av nozzeln och utskriftsfel.\n" +#~ "Håll skrivaren öppen under utskriftsprocessen för att säkerställa " +#~ "luftcirkulationen eller minska temperaturen på den varma sängen." + +#~ msgid "Total Time Estimation" +#~ msgstr "Total tidsuppskattning" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Identifiering av resonansfrekvenser" + +#~ msgid "Immediately score" +#~ msgstr "Omedelbar resultat" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "Vänligen ge ett betyg till din favorit modell från Bambu Market." + +#~ msgid "Score" +#~ msgstr "Resultat" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bambu Engineering Plate" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bambu High Temperature Plate" + +#~ msgid "Can't connect to the printer" +#~ msgstr "Kan inte ansluta till skrivaren" + +#~ msgid "Recommended temperature range" +#~ msgstr "Rekommenderat nozzel temperaturs område" + +#~ msgid "High Temp Plate" +#~ msgstr "High Temp Plate" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "Detta är byggplattans temperatur när High Temp Plate är installerad. " +#~ "Värdet 0 betyder att filamentet inte stöder utskrift på High Temp Plate." + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Tjocklek på inre bridge support" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "Supportens stil och form. För normal support skapas en regelbunden " +#~ "rutnätsform stabilare stöd (standard), medan snäva support torn sparar " +#~ "material och minskar ärrbildning på objektet.\n" +#~ "För träd support kommer smal stil att sammanfoga grenar mer aggressivt " +#~ "och spara mycket material (standard), medan hybrid stil kommer att skapa " +#~ "liknande struktur som normalt stöd under stora platta överhäng." + +#~ msgid "Bed temperature difference" +#~ msgstr "Byggplattans temperatur skillnad" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "Det rekommenderas inte att byggytans temperatur för andra lager är lägre " +#~ "än det första lagret med mer än denna nivå. För låg byggyts temperatur på " +#~ "andra lager kan göra att modellen lossnar från byggplattan." + +#~ msgid "Orient the model" +#~ msgstr "Orientera modellen" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index b7167e0d78..af1acd557f 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -1,11577 +1,12213 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: OrcaSlicer\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 19:45+0800\n" -"PO-Revision-Date: 2023-09-16 06:41+0300\n" -"Last-Translator: Sadri Ercan\n" -"Language-Team: Türkçe\n" -"Language: tr_TR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" -"X-Generator: Poedit 3.3.2\n" -"X-Loco-Version: 2.6.4-dev; wp-6.3.1\n" - -msgid "Supports Painting" -msgstr "Destek Boyama" - -msgid "Alt + Mouse wheel" -msgstr "Alt + Fare tekerleği" - -msgid "Section view" -msgstr "Bölüm görünümü" - -msgid "Reset direction" -msgstr "Yönü sıfırla" - -msgid "Ctrl + Mouse wheel" -msgstr "Ctrl + Fare tekerleği" - -msgid "Pen size" -msgstr "Kalem boyutu" - -msgid "Left mouse button" -msgstr "Sol fare tuşu" - -msgid "Enforce supports" -msgstr "Destekleri zorunlu kılın" - -msgid "Right mouse button" -msgstr "Sağ fare tuşu" - -msgid "Block supports" -msgstr "Blok destekleri" - -msgid "Shift + Left mouse button" -msgstr "Shift + Sol fare düğmesi" - -msgid "Erase" -msgstr "Sil" - -msgid "Erase all painting" -msgstr "Tüm boyamayı sil" - -msgid "Highlight overhang areas" -msgstr "Çıkıntı alanlarını vurgulayın" - -msgid "Gap fill" -msgstr "Boşluk doldurma" - -msgid "Perform" -msgstr "Uygula" - -msgid "Gap area" -msgstr "Boşluk alanı" - -msgid "Tool type" -msgstr "Araç türü" - -msgid "Smart fill angle" -msgstr "Akıllı doldurma açısı" - -msgid "On overhangs only" -msgstr "Yalnızca çıkıntılarda" - -msgid "Auto support threshold angle: " -msgstr "Otomatik destek eşik açısı: " - -msgid "Circle" -msgstr "Daire" - -msgid "Sphere" -msgstr "Küre" - -msgid "Fill" -msgstr "Doldur" - -msgid "Gap Fill" -msgstr "Boşluk doldurma" - -#, boost-format -msgid "Allows painting only on facets selected by: \"%1%\"" -msgstr "" -"Yalnızca şu kişi tarafından seçilen yüzeylerde boyamaya izin verir: \"%1%\"" - -msgid "Highlight faces according to overhang angle." -msgstr "Yüzleri çıkıntı açısına göre vurgulayın." - -msgid "No auto support" -msgstr "Otomatik destek yok" - -msgid "Support Generated" -msgstr "Destek Oluşturuldu" - -msgid "Lay on face" -msgstr "Yüzüstü yatır" - -#, boost-format -msgid "" -"Filament count exceeds the maximum number that painting tool supports. only " -"the first %1% filaments will be available in painting tool." -msgstr "" -"Filament sayısı, boyama aracının desteklediği maksimum sayıyı aşıyor. Boyama " -"aracında yalnızca ilk %1% filament mevcut olacaktır." - -msgid "Color Painting" -msgstr "Renkli Boyama" - -msgid "Pen shape" -msgstr "Kalem şekli" - -msgid "Paint" -msgstr "Boyama" - -msgid "Key 1~9" -msgstr "Tuş 1~9" - -msgid "Choose filament" -msgstr "Filament seçin" - -msgid "Edge detection" -msgstr "Kenar algılama" - -msgid "Triangles" -msgstr "Üçgenler" - -msgid "Filaments" -msgstr "Filamentler" - -msgid "Brush" -msgstr "Fırça" - -msgid "Smart fill" -msgstr "Akıllı boyama" - -msgid "Bucket fill" -msgstr "Kova boya aracı" - -msgid "Height range" -msgstr "Yükseklik aralığı" - -msgid "Ctrl + Shift + Enter" -msgstr "Ctrl + Üst Karakter + Enter" - -msgid "Toggle Wireframe" -msgstr "Wireframe Göster/Gizle" - -msgid "Shortcut Key " -msgstr "Kısayol tuşu " - -msgid "Triangle" -msgstr "Üçgen" - -msgid "Height Range" -msgstr "Yükseklik Aralığı" - -msgid "Remove painted color" -msgstr "Boyalı rengi kaldır" - -#, boost-format -msgid "Painted using: Filament %1%" -msgstr "Şunlar kullanılarak boyanmıştır: Filament %1%" - -msgid "Move" -msgstr "Taşı" - -msgid "Rotate" -msgstr "Döndür" - -msgid "Optimize orientation" -msgstr "Yönü optimize edin" - -msgid "Apply" -msgstr "Uygula" - -msgid "Scale" -msgstr "Ölçeklendir" - -msgid "Error: Please close all toolbar menus first" -msgstr "Hata: Lütfen önce tüm araç çubuğu menülerini kapatın" - -msgid "Tool-Lay on Face" -msgstr "Yüzüstü Yatırma" - -msgid "in" -msgstr "in" - -msgid "mm" -msgstr "mm" - -msgid "Position" -msgstr "Konum" - -msgid "Rotation" -msgstr "Döndürme" - -msgid "Scale ratios" -msgstr "Ölçek oranları" - -msgid "Object Operations" -msgstr "Nesne İşlemleri" - -msgid "Volume Operations" -msgstr "Hacim İşlemleri" - -msgid "Translate" -msgstr "Çeviri" - -msgid "Group Operations" -msgstr "Grup Operasyonları" - -msgid "Set Position" -msgstr "Pozisyonu ayarla" - -msgid "Set Orientation" -msgstr "Yönü Ayarla" - -msgid "Set Scale" -msgstr "Ölçeği Ayarla" - -msgid "Reset Position" -msgstr "Konumu Sıfırla" - -msgid "Reset Rotation" -msgstr "Döndürmeyi Sıfırla" - -msgid "World coordinates" -msgstr "Dünya koordinatları" - -msgid "°" -msgstr "°" - -msgid "Size" -msgstr "Boyut" - -msgid "%" -msgstr "%" - -msgid "uniform scale" -msgstr "düzgün ölçek" - -msgid "Left click" -msgstr "Sol tık" - -msgid "Add connector" -msgstr "Bağlayıcı ekle" - -msgid "Right click" -msgstr "Sağ tık" - -msgid "Remove connector" -msgstr "Bağlayıcıyı kaldır" - -msgid "Drag" -msgstr "Sürükle" - -msgid "Move connector" -msgstr "Bağlayıcıyı taşı" - -msgid "Add connector to selection" -msgstr "Seçime bağlayıcı ekle" - -msgid "Remove connector from selection" -msgstr "Bağlayıcıyı seçimden kaldır" - -msgid "Select all connectors" -msgstr "Tüm bağlayıcıları seç" - -msgid "Cut" -msgstr "Kes" - -msgid "Connector" -msgstr "Bağlayıcı" - -msgid "Movement:" -msgstr "Hareket:" - -msgid "Movement" -msgstr "Hareket" - -msgid "Height" -msgstr "Yükseklik" - -msgid "Edit connectors" -msgstr "Bağlayıcıları düzenle" - -msgid "Add connectors" -msgstr "Bağlayıcı ekle" - -msgid "Upper part" -msgstr "Üst parça" - -msgid "Lower part" -msgstr "Alt kısım" - -msgid "Keep" -msgstr "Sakla" - -msgid "Place on cut" -msgstr "Kesime yerleştirin" - -msgid "Flip" -msgstr "Çevir" - -msgid "After cut" -msgstr "Kesildikten sonra" - -msgid "Cut to parts" -msgstr "Parçalara ayır" - -msgid "Auto Segment" -msgstr "Otomatik Segment" - -msgid "Perform cut" -msgstr "Kesimi gerçekleştir" - -msgid "Reset" -msgstr "Sıfırla" - -msgid "Connectors" -msgstr "Konektörler" - -msgid "Type" -msgstr "Tür" - -msgid "Style" -msgstr "Stil" - -msgid "Shape" -msgstr "Şekil" - -msgid "Depth ratio" -msgstr "Derinlik oranı" - -msgid "Remove connectors" -msgstr "Konektörleri kaldır" - -msgid "Prizm" -msgstr "Prizma" - -msgid "Frustum" -msgstr "Frustum" - -msgid "Square" -msgstr "Kare" - -msgid "Hexagon" -msgstr "Altıgen" - -msgid "Confirm connectors" -msgstr "Bağlayıcıları onayla" - -msgid "Cancel" -msgstr "İptal" - -msgid "Warning" -msgstr "Uyarı" - -msgid "Invalid connectors detected" -msgstr "Geçersiz bağlayıcılar algılandı" - -msgid "connector is out of cut contour" -msgstr "konnektör kesim konturunun dışında" - -msgid "connectors are out of cut contour" -msgstr "konektörler kesim konturunun dışında" - -msgid "connector is out of object" -msgstr "bağlayıcı nesnenin dışında" - -msgid "connectors is out of object" -msgstr "konektörler nesnenin dışında" - -msgid "Some connectors are overlapped" -msgstr "Bazı konektörler üst üste binmiş" - -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" -msgstr "" -"Geçersiz durum.\n" -"Kesimden sonra tutmak için hiçbir parça seçilmedi" - -msgid "Plug" -msgstr "Tak" - -msgid "Dowel" -msgstr "Dübel" - -msgid "Tolerance" -msgstr "Tolerans" - -msgid "Mesh name" -msgstr "Mesh adı" - -msgid "Detail level" -msgstr "Detay seviyesi" - -msgid "Decimate ratio" -msgstr "Oranı azalt" - -#, boost-format -msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is " -"highly recommended to simplify the model." -msgstr "" -"1 milyondan fazla üçgen içeren '%1%' modelinin işlenmesi yavaş olabilir. " -"Modelin basitleştirilmesi önemle tavsiye edilir." - -msgid "Simplify model" -msgstr "Modeli sadeleştir" - -msgid "Simplify" -msgstr "Sadeleştir" - -msgid "Simplification is currently only allowed when a single part is selected" -msgstr "" -"Sadeleştirmeye şu anda yalnızca tek bir parça seçildiğinde izin veriliyor" - -msgid "Error" -msgstr "Hata" - -msgid "Extra high" -msgstr "Ekstra yüksek" - -msgid "High" -msgstr "Yüksek" - -msgid "Medium" -msgstr "Orta" - -msgid "Low" -msgstr "Düşük" - -msgid "Extra low" -msgstr "Ekstra düşük" - -#, c-format, boost-format -msgid "%d triangles" -msgstr "%d üçgen" - -msgid "Show wireframe" -msgstr "Wireframe göster" - -#, boost-format -msgid "%1%" -msgstr "%1%" - -msgid "Can't apply when proccess preview." -msgstr "İşlem önizlemesi sırasında uygulanamaz." - -msgid "Operation already cancelling. Please wait few seconds." -msgstr "İşlem zaten iptal ediliyor. Lütfen birkaç saniye bekleyin." - -msgid "Face recognition" -msgstr "Yüz tanıma" - -msgid "Perform Recognition" -msgstr "Tanıma Gerçekleştir" - -msgid "Brush size" -msgstr "Fırça boyutu" - -msgid "Brush shape" -msgstr "Fırça şekli" - -msgid "Enforce seam" -msgstr "Dikişi uygula" - -msgid "Block seam" -msgstr "Blok dikişi" - -msgid "Seam painting" -msgstr "Dikiş boyama" - -msgid "Remove selection" -msgstr "Seçimi kaldır" - -msgid "Shift + Mouse move up or dowm" -msgstr "Shift + Fare yukarı veya aşağı hareket ettirir" - -msgid "Rotate text" -msgstr "Metni döndür" - -msgid "Text shape" -msgstr "Metin şekli" - -msgid "Font" -msgstr "Yazı tipi" - -msgid "Thickness" -msgstr "Kalınlık" - -msgid "Input text" -msgstr "Giriş metni" - -msgid "Embeded" -msgstr "Gömülü" - -msgid "Text Gap" -msgstr "Metin Boşluğu" - -msgid "Angle" -msgstr "Açı" - -msgid "" -"Embeded\n" -"depth" -msgstr "" -"Gömülü\n" -"derinlik" - -msgid "Surface" -msgstr "Yüzey" - -msgid "Horizontal text" -msgstr "Yatay metin" - -msgid "Ctrl+" -msgstr "Ctrl+" - -msgid "Notice" -msgstr "Bildirim" - -msgid "Undefined" -msgstr "Tanımsız" - -#, boost-format -msgid "%1% was replaced with %2%" -msgstr "%1%, %2% ile değiştirildi" - -msgid "The configuration may be generated by a newer version of OrcaSlicer." -msgstr "" -"Yapılandırma, OrcaSlicer'ın daha yeni bir sürümü tarafından oluşturulabilir." - -msgid "Some values have been replaced. Please check them:" -msgstr "Bazı değerler değiştirildi. Lütfen bunları kontrol edin:" - -msgid "Process" -msgstr "İşlem" - -msgid "Filament" -msgstr "Filament" - -msgid "Machine" -msgstr "Makine" - -msgid "Configuration package was loaded, but some values were not recognized." -msgstr "Yapılandırma paketi yüklendi ancak bazı değerler tanınamadı." - -#, boost-format -msgid "" -"Configuration file \"%1%\" was loaded, but some values were not recognized." -msgstr "\"%1%\" yapılandırma dosyası yüklendi ancak bazı değerler tanınamadı." - -msgid "V" -msgstr "V" - -msgid "" -"OrcaSlicer will terminate because of running out of memory.It may be a bug. " -"It will be appreciated if you report the issue to our team." -msgstr "" -"OrcaSlicer hafızasının yetersiz olması nedeniyle sonlandırılacak. Bir hata " -"olabilir. Sorunu ekibimize bildirirseniz seviniriz." - -msgid "Fatal error" -msgstr "Kritik hata" - -msgid "" -"OrcaSlicer will terminate because of a localization error. It will be " -"appreciated if you report the specific scenario this issue happened." -msgstr "" -"OrcaSlicer bir yerelleştirme hatası nedeniyle sonlandırılacak. Bu sorunun " -"gerçekleştiği spesifik senaryoyu bildirirseniz memnun oluruz." - -msgid "Critical error" -msgstr "Kritik hata" - -#, boost-format -msgid "OrcaSlicer got an unhandled exception: %1%" -msgstr "OrcaSlicer'da işlenmeyen bir istisna oluştu: %1%" - -msgid "Downloading Bambu Network Plug-in" -msgstr "Bambu Ağ Eklentisini İndirme" - -msgid "Login information expired. Please login again." -msgstr "Giriş bilgilerinin süresi doldu. Lütfen tekrar giriş yapın." - -msgid "Incorrect password" -msgstr "Yanlış parola" - -#, c-format, boost-format -msgid "Connect %s failed! [SN:%s, code=%s]" -msgstr "%s bağlantısı başarısız oldu! [SN:%s, kod=%s]" - -msgid "" -"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " -"features.\n" -"Click Yes to install it now." -msgstr "" -"Orca Slicer, belirli özellikleri çalıştırmak için Microsoft WebView2 Runtime " -"gerektirir.\n" -"Şimdi yüklemek için Evet'e tıklayın." - -msgid "WebView2 Runtime" -msgstr "WebView2 Çalışma Zamanı" - -msgid "" -"OrcaSlicer configuration file may be corrupted and is not abled to be parsed." -"Please delete the file and try again." -msgstr "" -"OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması mümkün " -"olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." - -#, c-format, boost-format -msgid "" -"%s\n" -"Do you want to continue?" -msgstr "" -"%s\n" -"Devam etmek istiyor musun?" - -msgid "Remember my choice" -msgstr "Seçimimi hatırla" - -msgid "Loading configuration" -msgstr "Yapılandırma yükleniyor" - -#, c-format, boost-format -msgid "Click to download new version in default browser: %s" -msgstr "Yeni sürümü varsayılan tarayıcıda indirmek için tıklayın: %s" - -msgid "The Orca Slicer needs an upgrade" -msgstr "Orca Dilimleyicinin yükseltilmesi gerekiyor" - -msgid "This is the newest version." -msgstr "Bu en yeni versiyondur." - -msgid "Info" -msgstr "Bilgi" - -msgid "Rebuild" -msgstr "Yeniden yükleniyor" - -msgid "Loading current presets" -msgstr "Mevcut ön ayarlar yükleniyor" - -msgid "Loading a mode view" -msgstr "Mod görünümü yükleniyor" - -msgid "Choose one file (3mf):" -msgstr "Bir dosya seçin (3mf):" - -msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" -msgstr "Bir veya daha fazla dosya seçin (3mf/step/stl/svg/obj/amf):" - -msgid "Choose one file (gcode/3mf):" -msgstr "Bir dosya seçin (gcode/3mf):" - -msgid "Some presets are modified." -msgstr "Bazı ön ayarlar değiştirildi." - -msgid "" -"You can keep the modifield presets to the new project, discard or save " -"changes as new presets." -msgstr "" -"Modifield ön ayarlarını yeni projede tutabilir, değişiklikleri atabilir veya " -"yeni ön ayarlar olarak kaydedebilirsiniz." - -msgid "User logged out" -msgstr "Kullanıcı oturumu kapattı" - -msgid "new or open project file is not allowed during the slicing process!" -msgstr "" -"dilimleme işlemi sırasında yeni veya açık proje dosyasına izin verilmez!" - -msgid "Open Project" -msgstr "Projeyi Aç" - -msgid "" -"The version of Orca Slicer is too low and needs to be updated to the latest " -"version before it can be used normally" -msgstr "" -"Orca Slicer'ın sürümü çok düşük ve normal şekilde kullanılabilmesi için en " -"son sürüme güncellenmesi gerekiyor" - -msgid "Privacy Policy Update" -msgstr "Gizlilik Politikası Güncellemesi" - -msgid "Loading" -msgstr "Yükleniyor" - -msgid "Loading user preset" -msgstr "Kullanıcı ön ayarı yükleniyor" - -msgid "Switching application language" -msgstr "Uygulama dilini değiştirme" - -msgid "Select the language" -msgstr "Dili seçin" - -msgid "Language" -msgstr "Dil" - -msgid "*" -msgstr "*" - -msgid "The uploads are still ongoing" -msgstr "Yüklemeler halen devam ediyor" - -msgid "Stop them and continue anyway?" -msgstr "Onları durdurup yine de devam etmek mi istiyorsunuz?" - -msgid "Ongoing uploads" -msgstr "Devam eden yüklemeler" - -msgid "Select a G-code file:" -msgstr "G kodu dosyası seçin:" - -msgid "Import File" -msgstr "Dosya İçe Aktar" - -msgid "Delete" -msgstr "Sil" - -msgid "Choose files" -msgstr "Dosyaları seç" - -msgid "New Folder" -msgstr "Yeni Klasör" - -msgid "Open" -msgstr "Aç" - -msgid "Rename" -msgstr "Yeniden adlandır" - -msgid "Orca Slicer GUI initialization failed" -msgstr "Orca Dilimleyici GUI'si başlatılamadı" - -#, boost-format -msgid "Fatal error, exception catched: %1%" -msgstr "Önemli hata, istisna yakalandı: %1%" - -msgid "Quality" -msgstr "Kalite" - -msgid "Shell" -msgstr "Kabuk" - -msgid "Infill" -msgstr "Dolgu" - -msgid "Support" -msgstr "Destek" - -msgid "Flush options" -msgstr "Filament Temizleme" - -msgid "Speed" -msgstr "Hız" - -msgid "Strength" -msgstr "Dayanıklılık" - -msgid "Top Solid Layers" -msgstr "Üst Katı Katmanlar" - -msgid "Top Minimum Shell Thickness" -msgstr "Üst Minimum Kabuk Kalınlığı" - -msgid "Bottom Solid Layers" -msgstr "Alt Katı Katmanlar" - -msgid "Bottom Minimum Shell Thickness" -msgstr "Alt Minimum Kabuk Kalınlığı" - -msgid "Ironing" -msgstr "Ütüleme" - -msgid "Fuzzy Skin" -msgstr "Bulanık Kaplama" - -msgid "Extruders" -msgstr "Ekstrüderler" - -msgid "Extrusion Width" -msgstr "Ekstrüzyon Genişliği" - -msgid "Wipe options" -msgstr "Temizleme seçenekleri" - -msgid "Bed adhension" -msgstr "Etek" - -msgid "Advanced" -msgstr "Gelişmiş" - -msgid "Add part" -msgstr "Parça ekle" - -msgid "Add negative part" -msgstr "Negatif kısım ekle" - -msgid "Add modifier" -msgstr "Değiştirici ekle" - -msgid "Add support blocker" -msgstr "Destek engelleyici ekle" - -msgid "Add support enforcer" -msgstr "Destek uygulayıcısı ekle" - -msgid "Select settings" -msgstr "Ayarları şeç" - -msgid "Hide" -msgstr "Gizle" - -msgid "Show" -msgstr "Göster" - -msgid "Del" -msgstr "Sil" - -msgid "Delete the selected object" -msgstr "Seçilen nesneyi sil" - -msgid "Edit Text" -msgstr "Metni düzenle" - -msgid "Load..." -msgstr "Yükle..." - -msgid "Orca Cube" -msgstr "Orca Küpü" - -msgid "3DBenchy" -msgstr "3DBenchy" - -msgid "Autodesk FDM Test" -msgstr "Autodesk FDM Testi" - -msgid "Voron Cube" -msgstr "Voron Küpü" - -msgid "Cube" -msgstr "Küp" - -msgid "Cylinder" -msgstr "Silindir" - -msgid "Cone" -msgstr "Koni" - -msgid "Height range Modifier" -msgstr "Yükseklik aralığı Değiştirici" - -msgid "Add settings" -msgstr "Ayar ekle" - -msgid "Change type" -msgstr "Türü değiştir" - -msgid "Set as an individual object" -msgstr "Ayrı bir nesne olarak ayarla" - -msgid "Set as individual objects" -msgstr "Bireysel nesneler olarak ayarla" - -msgid "Fill bed with copies" -msgstr "Yatağı kopyalarla doldurun" - -msgid "Fill the remaining area of bed with copies of the selected object" -msgstr "Yatağın kalan alanını seçilen nesnenin kopyalarıyla doldurun" - -msgid "Printable" -msgstr "Yazdırılabilir" - -msgid "Fix model" -msgstr "Modeli düzelt" - -msgid "Export as STL" -msgstr "STL olarak dışa aktar" - -msgid "Reload from disk" -msgstr "Diskten yeniden yükle" - -msgid "Reload the selected parts from disk" -msgstr "Seçilen parçaları diskten yeniden yükle" - -msgid "Replace with STL" -msgstr "STL ile değiştirin" - -msgid "Replace the selected part with new STL" -msgstr "Seçilen parçayı yeni STL ile değiştirin" - -msgid "Change filament" -msgstr "Filamenti değiştir" - -msgid "Set filament for selected items" -msgstr "Seçilen öğeler için filamenti ayarla" - -msgid "Default" -msgstr "Varsayılan" - -#, c-format, boost-format -msgid "Filament %d" -msgstr "Filament %d" - -msgid "active" -msgstr "aktif" - -msgid "Scale to build volume" -msgstr "Yapı hacmine göre ölçeklendir" - -msgid "Scale an object to fit the build volume" -msgstr "Bir nesneyi yapı hacmine uyacak şekilde ölçeklendirin" - -msgid "Flush Options" -msgstr "Hizalama Seçenekleri" - -msgid "Flush into objects' infill" -msgstr "Nesnelerin dolgusuna hizalayın" - -msgid "Flush into this object" -msgstr "Bu nesnenin içine hizala" - -msgid "Flush into objects' support" -msgstr "Nesnelerin desteğine hizalayın" - -msgid "Edit in Parameter Table" -msgstr "Parametre Tablosunda Düzenle" - -msgid "Convert from inch" -msgstr "İnçten dönüştür" - -msgid "Restore to inch" -msgstr "İnçe geri çevir" - -msgid "Convert from meter" -msgstr "Metreden dönüştür" - -msgid "Restore to meter" -msgstr "Metreye geri çevir" - -msgid "Assemble" -msgstr "Birleştir" - -msgid "Assemble the selected objects to an object with multiple parts" -msgstr "Seçilen nesneleri birden çok parçalı bir nesneyle birleştirin" - -msgid "Assemble the selected objects to an object with single part" -msgstr "Seçilen nesneleri tek parçalı bir nesneye birleştirin" - -msgid "Mesh boolean" -msgstr "Mesh bölme" - -msgid "Mesh boolean operations including union and subtraction" -msgstr "Birleştirme ve çıkarma dahil mesh bölme işlemleri" - -msgid "Along X axis" -msgstr "X ekseni boyunca" - -msgid "Mirror along the X axis" -msgstr "X ekseni boyunca aynalama" - -msgid "Along Y axis" -msgstr "Y ekseni boyunca" - -msgid "Mirror along the Y axis" -msgstr "Y ekseni boyunca aynalama" - -msgid "Along Z axis" -msgstr "Z ekseni boyunca" - -msgid "Mirror along the Z axis" -msgstr "Z ekseni boyunca aynalama" - -msgid "Mirror" -msgstr "Ayna" - -msgid "Mirror object" -msgstr "Nesneyi aynala" - -msgid "Invalidate cut info" -msgstr "Kesim bilgisini geçersiz kıl" - -msgid "Add Primitive" -msgstr "Primitif Ekle" - -msgid "Show Labels" -msgstr "Etiketleri Göster" - -msgid "To objects" -msgstr "Nesnelere" - -msgid "Split the selected object into multiple objects" -msgstr "Seçilen nesneyi birden çok nesneye bölme" - -msgid "To parts" -msgstr "Parçalara" - -msgid "Split the selected object into multiple parts" -msgstr "Seçilen nesneyi birden çok parçaya böl" - -msgid "Split" -msgstr "Böl" - -msgid "Split the selected object" -msgstr "Seçilen nesneyi böl" - -msgid "Auto orientation" -msgstr "Otomatik yönlendirme" - -msgid "Auto orient the object to improve print quality." -msgstr "Baskı kalitesini artırmak için nesneyi otomatik olarak yönlendirin." - -msgid "Split the selected object into mutiple objects" -msgstr "Seçilen nesneyi birden fazla nesneye bölme" - -msgid "Split the selected object into mutiple parts" -msgstr "Seçilen nesneyi birden fazla parçaya böl" - -msgid "Select All" -msgstr "Hepsini seç" - -msgid "select all objects on current plate" -msgstr "geçerli plakadaki tüm nesneleri seç" - -msgid "Delete All" -msgstr "Hepsini sil" - -msgid "delete all objects on current plate" -msgstr "geçerli plakadaki tüm nesneleri sil" - -msgid "Arrange" -msgstr "Hizala" - -msgid "arrange current plate" -msgstr "mevcut plakayı hizala" - -msgid "Auto Rotate" -msgstr "Otomatik döndürme" - -msgid "auto rotate current plate" -msgstr "geçerli plakayı otomatik döndürme" - -msgid "Delete Plate" -msgstr "Plakayı Sil" - -msgid "Remove the selected plate" -msgstr "Seçilen plakayı kaldır" - -msgid "Clone" -msgstr "Klon" - -msgid "Simplify Model" -msgstr "Modeli Basitleştir" - -msgid "Center" -msgstr "Merkez" - -msgid "Edit Process Settings" -msgstr "İşlem Ayarlarını Düzenle" - -msgid "Edit print parameters for a single object" -msgstr "Tek bir nesne için yazdırma parametrelerini düzenleme" - -msgid "Change Filament" -msgstr "Filamenti Değiştir" - -msgid "Set Filament for selected items" -msgstr "Seçilen öğeler için Filamenti Ayarla" - -msgid "current" -msgstr "geçerli" - -msgid "Unlock" -msgstr "Kilidi aç" - -msgid "Lock" -msgstr "Kilitle" - -msgid "Edit Plate Name" -msgstr "Plaka Adını Düzenle" - -msgid "Name" -msgstr "İsim" - -msgid "Fila." -msgstr "Fila." - -#, c-format, boost-format -msgid "%1$d error repaired" -msgid_plural "%1$d errors repaired" -msgstr[0] "%1$d hata onarıldı" -msgstr[1] "%1$d hata onarıldı" - -#, c-format, boost-format -msgid "Error: %1$d non-manifold edge." -msgid_plural "Error: %1$d non-manifold edges." -msgstr[0] "Hata: %1$d manifold olmayan kenar." -msgstr[1] "Hata: %1$d manifold olmayan kenar." - -msgid "Remaining errors" -msgstr "Kalan hatalar" - -#, c-format, boost-format -msgid "%1$d non-manifold edge" -msgid_plural "%1$d non-manifold edges" -msgstr[0] "%1$d manifold olmayan kenar" -msgstr[1] "%1$d manifold olmayan kenar" - -msgid "Right click the icon to fix model object" -msgstr "Model nesnesini düzeltmek için simgeye sağ tıklayın" - -msgid "Right button click the icon to drop the object settings" -msgstr "Nesne ayarlarını bırakmak için simgeye sağ tıklayın" - -msgid "Click the icon to reset all settings of the object" -msgstr "Nesnenin tüm ayarlarını sıfırlamak için simgeye tıklayın" - -msgid "Right button click the icon to drop the object printable property" -msgstr "Nesnenin yazdırılabilir özelliğini bırakmak için simgeye sağ tıklayın" - -msgid "Click the icon to toggle printable property of the object" -msgstr "Nesnenin yazdırılabilir özelliğini değiştirmek için simgeyi tıklayın" - -msgid "Click the icon to edit support painting of the object" -msgstr "Nesnenin destek resmini düzenlemek için simgeye tıklayın" - -msgid "Click the icon to edit color painting of the object" -msgstr "Nesnenin renk resmini düzenlemek için simgeye tıklayın" - -msgid "Click the icon to shift this object to the bed" -msgstr "Bu nesneyi yatağa taşımak için simgeye tıklayın" - -msgid "Loading file" -msgstr "Dosya yükleniyor" - -msgid "Error!" -msgstr "Hata!" - -msgid "Failed to get the model data in the current file." -msgstr "Geçerli dosyadaki model verileri alınamadı." - -msgid "Generic" -msgstr "Genel" - -msgid "Add Modifier" -msgstr "Değiştirici Ekle" - -msgid "Switch to per-object setting mode to edit modifier settings." -msgstr "Değiştirici ayarlarını düzenlemek için nesne başına ayar moduna geçin." - -msgid "" -"Switch to per-object setting mode to edit process settings of selected " -"objects." -msgstr "" -"Seçilen nesnelerin işlem ayarlarını düzenlemek için nesne başına ayar moduna " -"geçin." - -msgid "Delete connector from object which is a part of cut" -msgstr "Kesilen parçanın parçası olan nesneden bağlayıcıyı sil" - -msgid "Delete solid part from object which is a part of cut" -msgstr "Kesimin bir parçası olan nesneden katı parçayı silin" - -msgid "Delete negative volume from object which is a part of cut" -msgstr "Kesimin bir parçası olan nesneden negatif hacmi silin" - -msgid "" -"To save cut correspondence you can delete all connectors from all related " -"objects." -msgstr "" -"Kesilmiş yazışmaları kaydetmek için ilgili tüm nesnelerden tüm bağlayıcıları " -"silebilirsiniz." - -msgid "" -"This action will break a cut correspondence.\n" -"After that model consistency can't be guaranteed .\n" -"\n" -"To manipulate with solid parts or negative volumes you have to invalidate cut " -"infornation first." -msgstr "" -"Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" -"Bundan sonra model tutarlılığı garanti edilemez.\n" -"\n" -"Katı parçalarla veya negatif hacimlerle işlem yapmak için öncelikle kesim " -"bilgisini geçersiz kılmanız gerekir." - -msgid "Delete all connectors" -msgstr "Tüm bağlayıcıları sil" - -msgid "Deleting the last solid part is not allowed." -msgstr "Son katı kısmın silinmesine izin verilmez." - -msgid "The target object contains only one part and can not be splited." -msgstr "Hedef nesne yalnızca bir parça içerir ve bölünemez." - -msgid "Assembly" -msgstr "Birleştir" - -msgid "Cut Connectors information" -msgstr "Kesim Konnektörleri bilgileri" - -msgid "Object manipulation" -msgstr "Nesne manipülasyonu" - -msgid "Group manipulation" -msgstr "Grup manipülasyonu" - -msgid "Object Settings to modify" -msgstr "Değiştirilecek Nesne Ayarları" - -msgid "Part Settings to modify" -msgstr "Değiştirilecek Parça Ayarları" - -msgid "Layer range Settings to modify" -msgstr "Katman aralığı Değiştirilecek ayarlar" - -msgid "Part manipulation" -msgstr "Parça manipülasyonu" - -msgid "Instance manipulation" -msgstr "Örnek manipülasyonu" - -msgid "Height ranges" -msgstr "Yükseklik aralıkları" - -msgid "Settings for height range" -msgstr "Yükseklik aralığı ayarları" - -msgid "Object" -msgstr "Nesne" - -msgid "Part" -msgstr "Parça" - -msgid "Layer" -msgstr "Katman" - -msgid "Selection conflicts" -msgstr "Seçim çakışmaları" - -msgid "" -"If first selected item is an object, the second one should also be object." -msgstr "İlk seçilen öğe bir nesne ise ikincisi de nesne olmalıdır." - -msgid "" -"If first selected item is a part, the second one should be part in the same " -"object." -msgstr "İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." - -msgid "The type of the last solid object part is not to be changed." -msgstr "Son katı nesne parçasının tipi değiştirilNozullidir." - -msgid "Negative Part" -msgstr "Negatif Kısım" - -msgid "Modifier" -msgstr "Değiştirici" - -msgid "Support Blocker" -msgstr "Destek Engelleyici" - -msgid "Support Enforcer" -msgstr "Destek Uygulayıcısı" - -msgid "Type:" -msgstr "Tip:" - -msgid "Choose part type" -msgstr "Parça tipini seçin" - -msgid "Enter new name" -msgstr "Yeni adı girin" - -msgid "Renaming" -msgstr "Yeniden adlandırma" - -msgid "Repairing model object" -msgstr "Model nesnesini onarma" - -msgid "Following model object has been repaired" -msgid_plural "Following model objects have been repaired" -msgstr[0] "Aşağıdaki model nesnesi onarıldı" -msgstr[1] "Aşağıdaki model objeler onarıldı" - -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" -msgstr[0] "Aşağıdaki model nesnesi onarılamadı" -msgstr[1] "Aşağıdaki model nesneleri onarılamadı" - -msgid "Repairing was canceled" -msgstr "Onarım iptal edildi" - -msgid "Additional process preset" -msgstr "Ek işlem ön ayarı" - -msgid "Remove parameter" -msgstr "Parametreyi kaldır" - -msgid "to" -msgstr "ile" - -msgid "Remove height range" -msgstr "Yükseklik aralığını kaldır" - -msgid "Add height range" -msgstr "Yükseklik aralığı ekle" - -msgid "Invalid numeric." -msgstr "Geçersiz sayı." - -msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "" -"bir hücre aynı sütundaki yalnızca bir veya daha fazla hücreye kopyalanabilir" - -msgid "multiple cells copy is not supported" -msgstr "birden fazla hücre kopyalama desteklenmiyor" - -msgid "Outside" -msgstr "Dış" - -msgid " " -msgstr " " - -msgid "Layer height" -msgstr "Katman yüksekliği" - -msgid "Wall loops" -msgstr "Duvar döngüleri" - -msgid "Infill density(%)" -msgstr "Dolgu yoğunluğu (%)" - -msgid "Auto Brim" -msgstr "Otomatik Kenar" - -msgid "Auto" -msgstr "Otomatik" - -msgid "Mouse ear" -msgstr "Fare Kulağı" - -msgid "Outer brim only" -msgstr "Yalnızca dış kenar" - -msgid "Inner brim only" -msgstr "Yalnızca iç kenar" - -msgid "Outer and inner brim" -msgstr "Dış ve iç kenar" - -msgid "No-brim" -msgstr "Kenarsız" - -msgid "Outer wall speed" -msgstr "Dış duvar hızı" - -msgid "Plate" -msgstr "Plaka" - -msgid "Brim" -msgstr "Kenar" - -msgid "Object/Part Setting" -msgstr "Nesne/Parça Ayarı" - -msgid "Reset parameter" -msgstr "Parametreyi sıfırla" - -msgid "Multicolor Print" -msgstr "Çok Renkli Baskı" - -msgid "Line Type" -msgstr "Çizgi Tipi" - -msgid "More" -msgstr "Daha" - -msgid "Open Preferences." -msgstr "Tercihler'i açın." - -msgid "Open next tip." -msgstr "Sonraki ipucunu açın." - -msgid "Open Documentation in web browser." -msgstr "Belgeleri web tarayıcısında açın." - -msgid "Pause:" -msgstr "Duraklat:" - -msgid "Custom Template:" -msgstr "Özel Şablon:" - -msgid "Custom G-code:" -msgstr "Özel G kodu:" - -msgid "Custom G-code" -msgstr "Özel G kodu" - -msgid "Enter Custom G-code used on current layer:" -msgstr "Geçerli katmanda kullanılan Özel G kodunu girin:" - -msgid "OK" -msgstr "TAMAM" - -msgid "Jump to Layer" -msgstr "Katmana Atla" - -msgid "Jump to layer" -msgstr "Katmana atla" - -msgid "Please enter the layer number" -msgstr "Lütfen katman numarasını girin" - -msgid "Add Pause" -msgstr "Duraklatma Ekle" - -msgid "Insert a pause command at the beginning of this layer." -msgstr "Bu katmanın başına bir duraklatma komutu ekleyin." - -msgid "Add Custom G-code" -msgstr "Özel G Kodu Ekle" - -msgid "Insert custom G-code at the beginning of this layer." -msgstr "Bu katmanın başına özel G kodunu ekleyin." - -msgid "Add Custom Template" -msgstr "Özel Şablon Ekle" - -msgid "Insert template custom G-code at the beginning of this layer." -msgstr "Bu katmanın başlangıcına şablon özel G kodunu ekleyin." - -msgid "Filament " -msgstr "Filament " - -msgid "Change filament at the beginning of this layer." -msgstr "Bu katmanın başlangıcında filamenti değiştirin." - -msgid "Delete Pause" -msgstr "Duraklatmayı Sil" - -msgid "Delete Custom Template" -msgstr "Özel Şablonu Sil" - -msgid "Edit Custom G-code" -msgstr "Özel G Kodunu Düzenle" - -msgid "Delete Custom G-code" -msgstr "Özel G Kodunu Sil" - -msgid "Delete Filament Change" -msgstr "Filament Değişikliğini Sil" - -msgid "No printer" -msgstr "Yazıcı yok" - -msgid "..." -msgstr "..." - -msgid "Failed to connect to the server" -msgstr "Sunucuya bağlanırken hata oluştu" - -msgid "Check cloud service status" -msgstr "Bulut hizmeti durumunu kontrol edin" - -msgid "code" -msgstr "kod" - -msgid "Failed to connect to cloud service" -msgstr "Bulut hizmetine bağlanılamadı" - -msgid "Please click on the hyperlink above to view the cloud service status" -msgstr "" -"Bulut hizmeti durumunu görüntülemek için lütfen yukarıdaki köprüye tıklayın" - -msgid "Failed to connect to the printer" -msgstr "Yazıcıya bağlanılamadı" - -msgid "Connection to printer failed" -msgstr "Yazıcıya bağlantı başarısız oldu" - -msgid "Please check the network connection of the printer and Studio." -msgstr "Lütfen yazıcının ve Studio'nun ağ bağlantısını kontrol edin." - -msgid "Connecting..." -msgstr "Bağlanıyor..." - -msgid "?" -msgstr "?" - -msgid "Empty" -msgstr "Boş" - -msgid "AMS" -msgstr "AMS" - -msgid "Auto Refill" -msgstr "Otomatik Doldurma" - -msgid "AMS not connected" -msgstr "AMS bağlı değil" - -msgid "Cali" -msgstr "Cali" - -msgid "Calibration of extrusion" -msgstr "Ekstrüzyonun kalibrasyonu" - -msgid "Load Filament" -msgstr "Filament Yükle" - -msgid "Unload Filament" -msgstr "Filamenti Çıkarın" - -msgid "Ext Spool" -msgstr "Harici Makara" - -msgid "Tips" -msgstr "İpuçları" - -msgid "Guide" -msgstr "Rehber" - -msgid "Retry" -msgstr "Yeniden dene" - -msgid "Calibrating AMS..." -msgstr "AMS kalibre ediliyor..." - -msgid "A problem occured during calibration. Click to view the solution." -msgstr "" -"Kalibrasyon sırasında bir sorun oluştu. Çözümü görüntülemek için tıklayın." - -msgid "Calibrate again" -msgstr "Tekrar kalibre edin" - -msgid "Cancel calibration" -msgstr "Kalibrasyonu iptal et" - -msgid "Heat the nozzle" -msgstr "Nozulu ısıtın" - -msgid "Cut filament" -msgstr "Filamenti kes" - -msgid "Pull back current filament" -msgstr "Mevcut filamenti geri çekin" - -msgid "Push new filament into extruder" -msgstr "Yeni filamanı ekstrüdere itin" - -msgid "Purge old filament" -msgstr "Eski filamenti temizleyin" - -msgid "Push new filament into the extruder" -msgstr "Yeni filamanı ekstrüdere itin" - -msgid "Grab new filament" -msgstr "Yeni filament al" - -msgid "" -"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " -"load or unload filiament." -msgstr "" -"Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası seçin ve " -"ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." - -msgid "Edit" -msgstr "Düzenle" - -msgid "" -"All the selected objects are on the locked plate,\n" -"We can not do auto-arrange on these objects." -msgstr "" -"Seçilen tüm nesneler kilitli plaka üzerindedir,\n" -"Bu nesneler üzerinde otomatik düzenleme yapamıyoruz." - -msgid "No arrangable objects are selected." -msgstr "Düzenlenebilir hiçbir nesne seçilmedi." - -msgid "" -"This plate is locked,\n" -"We can not do auto-arrange on this plate." -msgstr "" -"Bu plaka kilitli.\n" -"Bu plaka üzerinde otomatik düzenleme yapamıyoruz." - -msgid "Arranging..." -msgstr "Hizalanıyor..." - -msgid "Arrange failed. Found some exceptions when processing object geometries." -msgstr "" -"Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar " -"bulundu." - -msgid "Arranging" -msgstr "Hizalanıyor" - -msgid "Arranging canceled." -msgstr "Hizalama iptal edildi." - -msgid "" -"Arranging is done but there are unpacked items. Reduce spacing and try again." -msgstr "" -"Hizalama yapıldı ancak paketlenmemiş ürünler var. Aralığı azaltın ve tekrar " -"deneyin." - -msgid "Arranging done." -msgstr "Hizalama tamamlandı." - -#, c-format, boost-format -msgid "" -"Arrangement ignored the following objects which can't fit into a single bed:\n" -"%s" -msgstr "" -"Hizalama tek tablaya sığmayan aşağıdaki nesneler göz ardı edildi:\n" -"%s" - -msgid "" -"All the selected objects are on the locked plate,\n" -"We can not do auto-orient on these objects." -msgstr "" -"Seçilen tüm nesneler kilitli plaka üzerindedir,\n" -"Bu nesneler üzerinde otomatik yönlendirme yapamıyoruz." - -msgid "" -"This plate is locked,\n" -"We can not do auto-orient on this plate." -msgstr "" -"Bu plaka kilitli.\n" -"Bu plaka üzerinde otomatik yönlendirme yapamıyoruz." - -msgid "Orienting..." -msgstr "Yönlendiriliyor..." - -msgid "Orienting" -msgstr "Yönlendiriliyor" - -msgid "Filling bed " -msgstr "Yatak doldurma " - -msgid "Bed filling canceled." -msgstr "Yatak dolumu iptal edildi." - -msgid "Bed filling done." -msgstr "Yatak doldurma işlemi tamamlandı." - -msgid "Error! Unable to create thread!" -msgstr "Hata! Konu oluşturulamıyor!" - -msgid "Exception" -msgstr "Hata" - -msgid "Logging in" -msgstr "Giriş Yapılıyor" - -msgid "Login failed" -msgstr "Giriş başarısız oldu" - -msgid "Please check the printer network connection." -msgstr "Lütfen yazıcının ağ bağlantısını kontrol edin." - -msgid "Abnormal print file data. Please slice again." -msgstr "Anormal yazdırma dosyası verileri. Lütfen tekrar dilimleyin." - -msgid "Task canceled." -msgstr "Görev iptal edildi." - -msgid "Upload task timed out. Please check the network status and try again." -msgstr "" -"Yükleme görevi zaman aşımına uğradı. Lütfen ağ durumunu kontrol edin ve " -"tekrar deneyin." - -msgid "Cloud service connection failed. Please try again." -msgstr "Bulut hizmeti bağlantısı başarısız oldu. Lütfen tekrar deneyin." - -msgid "Print file not found. please slice again." -msgstr "Yazdırma dosyası bulunamadı. lütfen tekrar dilimleyin." - -msgid "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the " -"model and slice again." -msgstr "" -"Yazdırma dosyası izin verilen maksimum boyutu (1 GB) aşıyor. Lütfen modeli " -"basitleştirin ve tekrar dilimleyin." - -msgid "Failed to send the print job. Please try again." -msgstr "Yazdırma işi gönderilemedi. Lütfen tekrar deneyin." - -msgid "Failed to upload file to ftp. Please try again." -msgstr "Dosya ftp'ye yüklenemedi. Lütfen tekrar deneyin." - -msgid "" -"Check the current status of the bambu server by clicking on the link above." -msgstr "" -"Yukarıdaki bağlantıya tıklayarak bambu sunucusunun mevcut durumunu kontrol " -"edin." - -msgid "" -"The size of the print file is too large. Please adjust the file size and try " -"again." -msgstr "" -"Yazdırma dosyasının boyutu çok büyük. Lütfen dosya boyutunu ayarlayıp tekrar " -"deneyin." - -msgid "Print file not found, Please slice it again and send it for printing." -msgstr "Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." - -msgid "" -"Failed to upload print file to FTP. Please check the network status and try " -"again." -msgstr "" -"Yazdırma dosyası FTP'ye yüklenemedi. Lütfen ağ durumunu kontrol edin ve " -"tekrar deneyin." - -msgid "Sending print job over LAN" -msgstr "Yazdırma işi LAN üzerinden gönderiliyor" - -msgid "Sending print job through cloud service" -msgstr "Yazdırma işini bulut hizmeti aracılığıyla gönderme" - -msgid "Service Unavailable" -msgstr "Hizmet kullanılamıyor" - -msgid "Unkown Error." -msgstr "Bilinmeyen Hata." - -msgid "Sending print configuration" -msgstr "Yazdırma yapılandırması gönderiliyor" - -#, c-format, boost-format -msgid "Successfully sent. Will automatically jump to the device page in %ss" -msgstr "Başarıyla gönderildi. %ss'de otomatik olarak cihaz sayfasına atlayacak" - -#, c-format, boost-format -msgid "Successfully sent. Will automatically jump to the next page in %ss" -msgstr "" -"Başarıyla gönderildi. %ss'de otomatik olarak bir sonraki sayfaya atlayacak" - -msgid "An SD card needs to be inserted before printing via LAN." -msgstr "LAN yoluyla yazdırmadan önce bir SD kartın takılması gerekir." - -msgid "Sending gcode file over LAN" -msgstr "LAN üzerinden gcode dosyası gönderiliyor" - -msgid "Sending gcode file to sdcard" -msgstr "Gcode dosyası sdcard'a gönderiliyor" - -#, c-format, boost-format -msgid "Successfully sent. Close current page in %s s" -msgstr "Başarıyla gönderildi. %s s'de mevcut sayfayı kapat" - -msgid "An SD card needs to be inserted before sending to printer." -msgstr "Yazıcıya göndermeden önce bir SD kartın takılması gerekir." - -msgid "Choose SLA archive:" -msgstr "SLA arşivini seçin:" - -msgid "Import file" -msgstr "Dosyayı içe aktar" - -msgid "Import model and profile" -msgstr "Modeli ve profili içe aktar" - -msgid "Import profile only" -msgstr "Yalnızca profili içe aktar" - -msgid "Import model only" -msgstr "Yalnızca modeli içe aktar" - -msgid "Accurate" -msgstr "Doğru" - -msgid "Balanced" -msgstr "Dengeli" - -msgid "Quick" -msgstr "Hızlı" - -msgid "Importing SLA archive" -msgstr "SLA arşivi içe aktarılıyor" - -msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA printer " -"preset first before importing that SLA archive." -msgstr "" -"SLA arşivi herhangi bir ön ayar içermez. Lütfen SLA arşivini içe aktarmadan " -"önce bazı SLA yazıcı ön ayarlarını etkinleştirin." - -msgid "Importing canceled." -msgstr "İçe aktarma iptal edildi." - -msgid "Importing done." -msgstr "İçe aktarma tamamlandı." - -msgid "" -"The imported SLA archive did not contain any presets. The current SLA presets " -"were used as fallback." -msgstr "" -"İçe aktarılan SLA arşivi herhangi bir ön ayar içermiyordu. Geçerli SLA ön " -"ayarları geri dönüş olarak kullanıldı." - -msgid "You cannot load SLA project with a multi-part object on the bed" -msgstr "Çok parçalı bir nesne içeren SLA projesini yatağa yükleyemezsiniz" - -msgid "Please check your object list before preset changing." -msgstr "Lütfen ön ayarı değiştirmeden önce nesne listenizi kontrol edin." - -msgid "Attention!" -msgstr "Dikkat!" - -msgid "Downloading" -msgstr "İndiriliyor" - -msgid "Download failed" -msgstr "Yükleme başarısız" - -msgid "Cancelled" -msgstr "İptal edildi" - -msgid "Install successfully." -msgstr "Yükleme başarılı." - -msgid "Installing" -msgstr "Yükleniyor" - -msgid "Install failed" -msgstr "Yükleme başarısız" - -msgid "Portions copyright" -msgstr "Bazı bölümlerin telif hakkı" - -msgid "Copyright" -msgstr "Telif hakkı" - -msgid "License" -msgstr "Lisans" - -msgid "Orca Slicer is licensed under " -msgstr "Orca Dilimleyici şu lisansa sahiptir: " - -msgid "GNU Affero General Public License, version 3" -msgstr "GNU Affero Genel Kamu Lisansı, sürüm 3" - -msgid "" -"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer by " -"Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and the " -"RepRap community" -msgstr "" -"Orca Slicer, Prusa Research'ün PrusaSlicer'ından Bambulab'ın BambuStudio'sunu " -"temel alıyor. PrusaSlicer, Alessandro Ranellucci ve RepRap topluluğu " -"tarafından hazırlanan Slic3r'dendir" - -msgid "Libraries" -msgstr "Kütüphaneler" - -msgid "" -"This software uses open source components whose copyright and other " -"proprietary rights belong to their respective owners" -msgstr "" -"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait olan " -"açık kaynaklı bileşenleri kullanır" - -#, c-format, boost-format -msgid "About %s" -msgstr "Hakkında %s" - -msgid "Orca Slicer " -msgstr "Orca Dilimleyici " - -msgid "OrcaSlicer is based on BambuStudio, PrusaSlicer, and SuperSlicer." -msgstr "OrcaSlicer, BambuStudio, PrusaSlicer ve SuperSlicer'ı temel alır." - -msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." -msgstr "" -"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel almaktadır." - -msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." -msgstr "" -"PrusaSlicer orijinal olarak Alessandro Ranellucci'nin Slic3r'sine " -"dayanmaktadır." - -msgid "" -"Slic3r was created by Alessandro Ranellucci with the help of many other " -"contributors." -msgstr "" -"Slic3r, Alessandro Ranellucci tarafından diğer birçok katkıda bulunanların " -"yardımıyla yaratıldı." - -msgid "Version" -msgstr "Sürüm" - -msgid "AMS Materials Setting" -msgstr "AMS Malzeme Ayarı" - -msgid "Confirm" -msgstr "Onayla" - -msgid "Close" -msgstr "Kapat" - -msgid "Colour" -msgstr "Renk" - -msgid "" -"Nozzle\n" -"Temperature" -msgstr "" -"Nozul\n" -"Sıcaklık" - -msgid "max" -msgstr "maks" - -msgid "min" -msgstr "min" - -#, boost-format -msgid "The input value should be greater than %1% and less than %2%" -msgstr "Giriş değeri %1%'den büyük ve %2%'den küçük olmalıdır" - -msgid "SN" -msgstr "SN" - -msgid "Setting AMS slot information while printing is not supported" -msgstr "Yazdırma sırasında AMS yuvası bilgilerinin ayarlanması desteklenmiyor" - -msgid "Factors of Flow Dynamics Calibration" -msgstr "Akış Dinamiği Kalibrasyonunun Faktörleri" - -msgid "PA Profile" -msgstr "PA Profili" - -msgid "Factor K" -msgstr "Faktör K" - -msgid "Factor N" -msgstr "Faktör N" - -msgid "Setting Virtual slot information while printing is not supported" -msgstr "Yazdırma desteklenmediğinde Sanal yuva bilgilerinin ayarlanması" - -msgid "Are you sure you want to clear the filament information?" -msgstr "Filament bilgisini temizlemek istediğinizden emin misiniz?" - -msgid "You need to select the material type and color first." -msgstr "Önce malzeme türünü ve rengini seçmeniz gerekir." - -msgid "Please input a valid value (K in 0~0.5)" -msgstr "Lütfen geçerli bir değer girin (0~0,5'te K)" - -msgid "Please input a valid value (K in 0~0.5, N in 0.6~2.0)" -msgstr "Lütfen geçerli bir değer girin (0~0,5'te K, 0,6~2,0'da N)" - -msgid "Other Color" -msgstr "Diğer renk" - -msgid "Custom Color" -msgstr "Özel renk" - -msgid "Dynamic flow calibration" -msgstr "Dinamik akış kalibrasyonu" - -msgid "" -"The nozzle temp and max volumetric speed will affect the calibration results. " -"Please fill in the same values as the actual printing. They can be auto-" -"filled by selecting a filament preset." -msgstr "" -"Nozul sıcaklığı ve maksimum hacimsel hız kalibrasyon sonuçlarını " -"etkileyecektir. Lütfen gerçek yazdırmayla aynı değerleri girin. Bir filament " -"ön ayarı seçilerek otomatik olarak doldurulabilirler." - -msgid "Nozzle Diameter" -msgstr "Nozul Çapı" - -msgid "Bed Type" -msgstr "Yatak Tipi" - -msgid "Nozzle temperature" -msgstr "Nozzle sıcaklığı" - -msgid "Bed Temperature" -msgstr "Yatak Sıcaklığı" - -msgid "Max volumetric speed" -msgstr "Maksimum hacimsel hız" - -msgid "℃" -msgstr "°C" - -msgid "Bed temperature" -msgstr "Yatak sıcaklığı" - -msgid "mm³" -msgstr "mm³" - -msgid "Start calibration" -msgstr "Kalibrasyonu başlat" - -msgid "Next" -msgstr "Sonraki" - -msgid "" -"Calibration completed. Please find the most uniform extrusion line on your " -"hot bed like the picture below, and fill the value on its left side into the " -"factor K input box." -msgstr "" -"Kalibrasyon tamamlandı. Lütfen sıcak yatağınızdaki en düzgün ekstrüzyon " -"hattını aşağıdaki resimdeki gibi bulun ve sol tarafındaki değeri K faktörü " -"giriş kutusuna girin." - -msgid "Save" -msgstr "Kaydet" - -msgid "Last Step" -msgstr "Son adım" - -msgid "Example" -msgstr "Örnek" - -#, c-format, boost-format -msgid "Calibrating... %d%%" -msgstr "Kalibre ediliyor... %d%%" - -msgid "Calibration completed" -msgstr "Kalibrasyon tamamlandı" - -#, c-format, boost-format -msgid "%s does not support %s" -msgstr "%s, %s'yi desteklemiyor" - -msgid "Dynamic flow Calibration" -msgstr "Dinamik akış kalibrasyonu" - -msgid "Step" -msgstr "Adım" - -msgid "AMS Slots" -msgstr "AMS Yuvaları" - -msgid "" -"Note: Only the AMS slots loaded with the same material type can be selected." -msgstr "Not: Yalnızca aynı malzeme türüne sahip AMS yuvaları seçilebilir." - -msgid "Enable AMS" -msgstr "AMS'yi etkinleştir" - -msgid "Print with filaments in the AMS" -msgstr "AMS'deki filamentlerle yazdırma" - -msgid "Disable AMS" -msgstr "AMS'yi devre dışı bırak" - -msgid "Print with the filament mounted on the back of chassis" -msgstr "Şasinin arkasına monte edilmiş filamanla yazdırma" - -msgid "Cabin humidity" -msgstr "Kabin nemi" - -msgid "" -"Green means that AMS humidity is normal, orange represent humidity is high, " -"red represent humidity is too high.(Hygrometer: lower the better.)" -msgstr "" -"Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, kırmızı " -"ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar düşükse o kadar " -"iyidir.)" - -msgid "Desiccant status" -msgstr "Kurutucu durumu" - -msgid "" -"A desiccant status lower than two bars indicates that desiccant may be " -"inactive. Please change the desiccant.(The bars: higher the better.)" -msgstr "" -"İki çubuktan daha düşük bir kurutucu durumu, kurutucunun etkin olmadığını " -"gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa o " -"kadar iyidir.)" - -msgid "" -"Note: When the lid is open or the desiccant pack is changed, it can take " -"hours or a night to absorb the moisture. Low temperatures also slow down the " -"process. During this time, the indicator may not represent the chamber " -"accurately." -msgstr "" -"Not: Kapak açıkken veya kurutucu paketi değiştirildiğinde, nemin emilmesi " -"saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. Bu " -"süre zarfında gösterge hazneyi doğru şekilde temsil etmeyebilir." - -msgid "" -"Config which AMS slot should be used for a filament used in the print job" -msgstr "" -"Yazdırma işinde kullanılan filament için hangi AMS yuvasının kullanılması " -"gerektiğini yapılandırma" - -msgid "Filament used in this print job" -msgstr "Bu yazdırma işinde kullanılan filament" - -msgid "AMS slot used for this filament" -msgstr "Bu filament için kullanılan AMS yuvası" - -msgid "Click to select AMS slot manually" -msgstr "AMS yuvasını manuel olarak seçmek için tıklayın" - -msgid "Do not Enable AMS" -msgstr "AMS'yi Etkinleştirme" - -msgid "Print using materials mounted on the back of the case" -msgstr "Kasanın arkasına monte edilen malzemeleri kullanarak yazdırma" - -msgid "Print with filaments in ams" -msgstr "Ams içerisindeki filamentlerle yazdırma" - -msgid "Print with filaments mounted on the back of the chassis" -msgstr "Kasanın arkasına monte edilmiş filamentler ile yazdırma" - -msgid "" -"When the current material run out, the printer will continue to print in the " -"following order." -msgstr "" -"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam edecektir." - -msgid "Group" -msgstr "Grup" - -msgid "" -"There are currently no identical spare consumables available, and automatic " -"replenishment is currently not possible. \n" -"(Currently supporting automatic supply of consumables with the same brand, " -"material type, and color)" -msgstr "" -"Şu anda aynı yedek sarf malzemesi mevcut değildir ve otomatik yenileme şu " -"anda mümkün değildir.\n" -"(Şu anda aynı marka, malzeme türü ve renkte sarf malzemelerinin otomatik " -"olarak tedarik edilmesi desteklenmektedir)" - -msgid "AMS Settings" -msgstr "AMS Ayarları" - -msgid "Insertion update" -msgstr "Ekleme güncellemesi" - -msgid "" -"The AMS will automatically read the filament information when inserting a new " -"Bambu Lab filament. This takes about 20 seconds." -msgstr "" -"AMS, yeni bir Bambu Lab filamanı takıldığında filament bilgilerini otomatik " -"olarak okuyacaktır. Bu yaklaşık 20 saniye sürer." - -msgid "" -"Note: if new filament is inserted during printing, the AMS will not " -"automatically read any information until printing is completed." -msgstr "" -"Not: Yazdırma sırasında yeni filament takılırsa AMS, yazdırma tamamlanana " -"kadar herhangi bir bilgiyi otomatik olarak okumayacaktır." - -msgid "" -"When inserting a new filament, the AMS will not automatically read its " -"information, leaving it blank for you to enter manually." -msgstr "" -"Yeni bir filament yerleştirirken AMS, bilgileri otomatik olarak okumaz ve " -"manuel olarak girmeniz için boş bırakır." - -msgid "Power on update" -msgstr "Güncellemeyi aç" - -msgid "" -"The AMS will automatically read the information of inserted filament on start-" -"up. It will take about 1 minute.The reading process will roll filament spools." -msgstr "" -"AMS, başlangıçta takılan filamanın bilgilerini otomatik olarak okuyacaktır. " -"Yaklaşık 1 dakika sürecektir. Okuma işlemi filament makaralarını saracaktır." - -msgid "" -"The AMS will not automatically read information from inserted filament during " -"startup and will continue to use the information recorded before the last " -"shutdown." -msgstr "" -"AMS, başlatma sırasında takılan filamandan bilgileri otomatik olarak okumaz " -"ve son kapatmadan önce kaydedilen bilgileri kullanmaya devam eder." - -msgid "Update remaining capacity" -msgstr "Kalan kapasiteyi güncelle" - -msgid "" -"The AMS will estimate Bambu filament's remaining capacity after the filament " -"info is updated. During printing, remaining capacity will be updated " -"automatically." -msgstr "" -"AMS, filament bilgisi güncellendikten sonra Bambu filamanının kalan " -"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik olarak " -"güncellenecektir." - -msgid "AMS filament backup" -msgstr "AMS filament yedeklemesi" - -msgid "" -"AMS will continue to another spool with the same properties of filament " -"automatically when current filament runs out" -msgstr "" -"AMS, mevcut filament bittiğinde otomatik olarak aynı özelliklere sahip başka " -"bir makaraya devam edecektir" - -msgid "File" -msgstr "Dosya" - -msgid "Calibration" -msgstr "Kalibrasyon" - -msgid "" -"Failed to download the plug-in. Please check your firewall settings and vpn " -"software, check and retry." -msgstr "" -"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn yazılımınızı " -"kontrol edin, kontrol edip yeniden deneyin." - -msgid "" -"Failed to install the plug-in. Please check whether it is blocked or deleted " -"by anti-virus software." -msgstr "" -"Eklenti yüklenemedi. Lütfen anti-virüs yazılımı tarafından engellenip " -"engellenmediğini veya silinip silinmediğini kontrol edin." - -msgid "click here to see more info" -msgstr "daha fazla bilgi görmek için burayı tıklayın" - -msgid "Please home all axes (click " -msgstr "Lütfen tüm eksenleri hizalayın (tıklayın) " - -msgid "" -") to locate the toolhead's position. This prevents device moving beyond the " -"printable boundary and causing equipment wear." -msgstr "" -") takım kafasının konumunu bulmak için. Bu, cihazın yazdırılabilir sınırın " -"dışına çıkmasını ve ekipmanın aşınmasına neden olmasını önler." - -msgid "Go Home" -msgstr "Anasayfaya Git" - -msgid "" -"A error occurred. Maybe memory of system is not enough or it's a bug of the " -"program" -msgstr "" -"Bir hata oluştu. Belki sistemin hafızası yeterli değildir veya programın bir " -"hatasıdır" - -msgid "Please save project and restart the program. " -msgstr "Lütfen projeyi kaydedin ve programı yeniden başlatın. " - -msgid "Processing G-Code from Previous file..." -msgstr "Önceki dosyadan G Kodu işleniyor..." - -msgid "Slicing complete" -msgstr "Dilimleme tamamlandı" - -msgid "Access violation" -msgstr "Erişim ihlali" - -msgid "Illegal instruction" -msgstr "Yasa dışı talimat" - -msgid "Divide by zero" -msgstr "Devide By Zero Hatası" - -msgid "Overflow" -msgstr "Yüksek Akış" - -msgid "Underflow" -msgstr "Düşük Akış" - -msgid "Floating reserved operand" -msgstr "Floating reserved operand" - -msgid "Stack overflow" -msgstr "Stack overflow" - -msgid "Unknown error when export G-code." -msgstr "G kodunu dışa aktarırken bilinmeyen hata." - -#, boost-format -msgid "" -"Failed to save gcode file.\n" -"Error message: %1%.\n" -"Source file %2%." -msgstr "" -"Gcode dosyası kaydedilemedi.\n" -"Hata mesajı: %1%.\n" -"Kaynak dosya %2%." - -#, boost-format -msgid "Succeed to export G-code to %1%" -msgstr "G kodunu %1%'e aktarmayı başardınız" - -msgid "Running post-processing scripts" -msgstr "İşlem sonrası komut dosyalarını çalıştırma" - -msgid "Notes" -msgstr "Notlar" - -msgid "Copying of the temporary G-code to the output G-code failed" -msgstr "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu" - -#, boost-format -msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" -msgstr "" -"\"%1%\" hedefine yükleme planlanıyor. Bkz. Pencere -> Ana Bilgisayar Yükleme " -"Sırasını Yazdır" - -msgid "Origin" -msgstr "Menşei" - -msgid "Diameter" -msgstr "Çap" - -msgid "Size in X and Y of the rectangular plate." -msgstr "Dikdörtgen plakanın X ve Y boyutları." - -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." -msgstr "0,0 G kodu koordinatının dikdörtgenin sol ön köşesinden uzaklığı." - -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." -msgstr "Baskı yatağının çapı. Orjinin (0,0) merkezde olduğu varsayılmaktadır." - -msgid "Rectangular" -msgstr "Dikdörtgen" - -msgid "Circular" -msgstr "Dairesel" - -msgid "Custom" -msgstr "Özel" - -msgid "Load shape from STL..." -msgstr "Şekli STL'den yükle..." - -msgid "Settings" -msgstr "Ayarlar" - -msgid "Texture" -msgstr "Doku" - -msgid "Remove" -msgstr "Kaldır" - -msgid "Not found:" -msgstr "Bulunamadı:" - -msgid "Model" -msgstr "Model" - -msgid "Choose an STL file to import bed shape from:" -msgstr "Yatak şeklini içe aktarmak için bir STL dosyası seçin:" - -msgid "Invalid file format." -msgstr "Geçersiz dosya formatı." - -msgid "Error! Invalid model" -msgstr "Hata! Geçersiz model" - -msgid "The selected file contains no geometry." -msgstr "Seçilen dosya geometri içermiyor." - -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "Seçilen dosya birkaç ayrık alan içeriyor. Bu desteklenmiyor." - -msgid "Choose a file to import bed texture from (PNG/SVG):" -msgstr "Yatak dokusunu içe aktarmak için bir dosya seçin (PNG/SVG):" - -msgid "Choose an STL file to import bed model from:" -msgstr "Yatak modelini içe aktarmak için bir STL dosyası seçin:" - -msgid "Bed Shape" -msgstr "Yatak Şekli" - -msgid "" -"Nozzle may be blocked when the temperature is out of recommended range.\n" -"Please make sure whether to use the temperature to print.\n" -"\n" -msgstr "" -"Sıcaklık önerilen aralığın dışında olduğunda nozül tıkanmış olabilir.\n" -"Lütfen yazdırmak için sıcaklığı kullanıp kullanmayacağınızdan emin olun.\n" -"\n" - -#, c-format, boost-format -msgid "" -"Recommended nozzle temperature of this filament type is [%d, %d] degree " -"centigrade" -msgstr "" -"Bu filament tipinin tavsiye edilen Nozul sıcaklığı [%d, %d] derece " -"santigrattır" - -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial layer " -"for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"Diğer katmanın yatak sıcaklığı, ilk katmanın yatak sıcaklığından %d santigrat " -"dereceden daha düşük.\n" -"Bu, yazdırma sırasında modelin baskı plakasından kopmasına neden olabilir" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"Yatak sıcaklığı bu filamentin vitrifikasyon sıcaklığından daha yüksektir.\n" -"Bu, püskürtme ucunun tıkanmasına ve yazdırma hatasına neden olabilir\n" -"Hava sirkülasyonunu sağlamak veya sıcak yatağın sıcaklığını azaltmak için " -"lütfen yazdırma işlemi sırasında yazıcıyı açık tutun" - -msgid "" -"Too small max volumetric speed.\n" -"Reset to 0.5" -msgstr "" -"Maksimum hacimsel hız çok küçük.\n" -"0,5'e sıfırla" - -msgid "" -"Too small layer height.\n" -"Reset to 0.2" -msgstr "" -"Katman yüksekliği çok küçük.\n" -"0,2'ye sıfırla" - -msgid "" -"Too small ironing spacing.\n" -"Reset to 0.1" -msgstr "" -"Çok küçük ütüleme aralığı.\n" -"0,1'e sıfırla" - -msgid "" -"Zero initial layer height is invalid.\n" -"\n" -"The first layer height will be reset to 0.2." -msgstr "" -"Sıfır başlangıç katman yüksekliği geçersiz.\n" -"\n" -"İlk katmanın yüksekliği 0,2'ye sıfırlanacaktır." - -msgid "" -"This setting is only used for model size tunning with small value in some " -"cases.\n" -"For example, when model size has small error and hard to be assembled.\n" -"For large size tuning, please use model scale function.\n" -"\n" -"The value will be reset to 0." -msgstr "" -"Bu ayar yalnızca bazı durumlarda küçük değere sahip model boyutu ayarı için " -"kullanılır.\n" -"Örneğin, model boyutunda hata küçük olduğunda ve montajı zor olduğunda.\n" -"Büyük boyutlu ayarlama için lütfen model ölçeği işlevini kullanın.\n" -"\n" -"Değer 0'a sıfırlanacaktır." - -msgid "" -"Too large elefant foot compensation is unreasonable.\n" -"If really have serious elephant foot effect, please check other settings.\n" -"For example, whether bed temperature is too high.\n" -"\n" -"The value will be reset to 0." -msgstr "" -"Çok büyük fil ayağı telafisi mantıksızdır.\n" -"Gerçekten fil ayağı etkisi ciddi ise lütfen diğer ayarları kontrol edin.\n" -"Örneğin yatak sıcaklığının çok yüksek olup olmadığı.\n" -"\n" -"Değer 0'a sıfırlanacaktır." - -msgid "" -"Spiral mode only works when wall loops is 1, support is disabled, top shell " -"layers is 0, sparse infill density is 0 and timelapse type is traditional." -msgstr "" -"Spiral mod yalnızca duvar döngüleri 1 olduğunda, destek devre dışı " -"bırakıldığında, üst kabuk katmanları 0 olduğunda, seyrek dolgu yoğunluğu 0 " -"olduğunda ve timelapse türü geleneksel olduğunda çalışır." - -msgid "" -"Change these settings automatically? \n" -"Yes - Change these settings and enable spiral mode automatically\n" -"No - Give up using spiral mode this time" -msgstr "" -"Bu ayarlar otomatik olarak değiştirilsin mi?\n" -"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" -"Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" - -msgid "" -"Prime tower does not work when Adaptive Layer Height or Independent Support " -"Layer Height is on.\n" -"Which do you want to keep?\n" -"YES - Keep Prime Tower\n" -"NO - Keep Adaptive Layer Height and Independent Support Layer Height" -msgstr "" -"Prime tower, Uyarlanabilir Katman Yüksekliği veya Bağımsız Destek Katmanı " -"Yüksekliği açıkken çalışmaz.\n" -"Hangisini saklamak istiyorsun?\n" -"EVET - Prime Tower'ı Koruyun\n" -"HAYIR - Uyarlanabilir Katman Yüksekliğini ve Bağımsız Destek Katmanı " -"Yüksekliğini Koruyun" - -msgid "" -"Prime tower does not work when Adaptive Layer Height is on.\n" -"Which do you want to keep?\n" -"YES - Keep Prime Tower\n" -"NO - Keep Adaptive Layer Height" -msgstr "" -"Uyarlanabilir Katman Yüksekliği açıkken Prime tower çalışmıyor.\n" -"Hangisini saklamak istiyorsun?\n" -"EVET - Prime Tower'ı Koruyun\n" -"HAYIR - Uyarlanabilir Katman Yüksekliğini Koruyun" - -msgid "" -"Prime tower does not work when Independent Support Layer Height is on.\n" -"Which do you want to keep?\n" -"YES - Keep Prime Tower\n" -"NO - Keep Independent Support Layer Height" -msgstr "" -"Prime tower, Bağımsız Destek Katmanı Yüksekliği açıkken çalışmaz.\n" -"Hangisini saklamak istiyorsun?\n" -"EVET - Prime Tower'ı Koruyun\n" -"HAYIR - Bağımsız Destek Katmanı Yüksekliğini Koruyun" - -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "%1% dolgu deseni 100%% yoğunluğu desteklemiyor." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Doğrusal desene geçilsin mi?\n" -"Evet - otomatik olarak doğrusal desene geçin\n" -"Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere sıfırlayın" - -msgid "" -"While printing by Object, the extruder may collide skirt.\n" -"Thus, reset the skirt layer to 1 to avoid that." -msgstr "" -"Nesne ile yazdırma sırasında ekstruder etekle çarpışabilir.\n" -"Bu durumu önlemek için etek katmanını 1'e sıfırlayın." - -msgid "Auto bed leveling" -msgstr "Otomatik yatak tesviyesi" - -msgid "Heatbed preheating" -msgstr "Isıtma yatağı ön ısıtması" - -msgid "Sweeping XY mech mode" -msgstr "Süpürme XY mekanik modu" - -msgid "Changing filament" -msgstr "Filament Değişimi" - -msgid "M400 pause" -msgstr "M400 duraklatma" - -msgid "Paused due to filament runout" -msgstr "Filament bittiği için duraklatıldı" - -msgid "Heating hotend" -msgstr "Hotend ısıtılıyor" - -msgid "Calibrating extrusion" -msgstr "Ekstrüzyon kalibre ediliyor" - -msgid "Scanning bed surface" -msgstr "Yatak yüzeyi taranıyor" - -msgid "Inspecting first layer" -msgstr "İlk katmanın incelenmesi" - -msgid "Identifying build plate type" -msgstr "Yapı plakası türünü belirleme" - -msgid "Calibrating Micro Lidar" -msgstr "Mikro Lidar'ın Kalibre Ediliyor" - -msgid "Homing toolhead" -msgstr "Baskı Kafası Home Pozisyonuna Getiriliyor" - -msgid "Cleaning nozzle tip" -msgstr "Nozul temizleme ipucu" - -msgid "Checking extruder temperature" -msgstr "Ekstruder sıcaklığının kontrol edilmesi" - -msgid "Printing was paused by the user" -msgstr "Yazdırma kullanıcı tarafından duraklatıldı" - -msgid "Pause of front cover falling" -msgstr "Ön kapağın düşmesinin duraklaması" - -msgid "Calibrating the micro lida" -msgstr "Mikro Lida'nın kalibre edilmesi" - -msgid "Calibrating extrusion flow" -msgstr "Ekstrüzyon akışını kalibre et" - -msgid "Paused due to nozzle temperature malfunction" -msgstr "Nozül sıcaklığı arızası nedeniyle duraklatıldı" - -msgid "Paused due to heat bed temperature malfunction" -msgstr "Isıtma yatağı sıcaklığı arızası nedeniyle duraklatıldı" - -msgid "MC" -msgstr "MC" - -msgid "MainBoard" -msgstr "Anakart" - -msgid "TH" -msgstr "TH" - -msgid "XCam" -msgstr "XCam" - -msgid "Unknown" -msgstr "Bilinmeyen" - -msgid "Fatal" -msgstr "Kritik" - -msgid "Serious" -msgstr "Ciddi" - -msgid "Common" -msgstr "Yaygın" - -msgid "Update successful." -msgstr "Güncelleme başarılı." - -msgid "Downloading failed." -msgstr "İndirme başarısız oldu." - -msgid "Verification failed." -msgstr "Doğrulama başarısız oldu." - -msgid "Update failed." -msgstr "Güncelleme başarısız oldu." - -msgid "Failed to start printing job" -msgstr "Yazdırma işi başlatılamadı" - -msgid "Invalid nozzle diameter" -msgstr "Geçersiz nozul çapı" - -msgid "Calibration error" -msgstr "Kalibrasyon hatası" - -msgid "TPU is not supported by AMS." -msgstr "TPU, AMS tarafından desteklenmez." - -msgid "Bambu PET-CF/PA6-CF is not supported by AMS." -msgstr "Bambu PET-CF/PA6-CF, AMS tarafından desteklenNozulktedir." - -msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to " -"dry it before use." -msgstr "" -"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan önce " -"kurutmaya dikkat edin." - -msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, " -"please use with caution." -msgstr "" -"CF/GF filamentleri sert ve kırılgandır. AMS'de kırılması veya sıkışması " -"kolaydır, lütfen dikkatli kullanın." - -msgid "default" -msgstr "varsayılan" - -msgid "parameter name" -msgstr "parametre adı" - -msgid "N/A" -msgstr "N/A" - -msgid "%s can't be percentage" -msgstr "%s yüzde olamaz" - -#, c-format, boost-format -msgid "Value %s is out of range, continue?" -msgstr "Değer %s aralık dışında, devam edilsin mi?" - -msgid "Parameter validation" -msgstr "Parametre doğrulama" - -msgid "Value is out of range." -msgstr "Değer aralık dışında." - -msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." -msgstr "" -"%s%% mi yoksa %s %s mi?\n" -"%s%% için EVET,\n" -"%s %s için HAYIR." - -#, boost-format -msgid "Invalid format. Expected vector format: \"%1%\"" -msgstr "Geçersiz format. Beklenen vektör formatı: \"%1%\"" - -msgid "Layer Height" -msgstr "Katman Yüksekliği" - -msgid "Line Width" -msgstr "Katman Genişliği" - -msgid "Fan Speed" -msgstr "Fan hızı" - -msgid "Temperature" -msgstr "Sıcaklık" - -msgid "Flow" -msgstr "Akış" - -msgid "Tool" -msgstr "Araç" - -msgid "Layer Time" -msgstr "Katman Süresi" - -msgid "Layer Time (log)" -msgstr "Katman Süresi (günlük)" - -msgid "Height: " -msgstr "Yükseklik: " - -msgid "Width: " -msgstr "Genişlik: " - -msgid "Speed: " -msgstr "Hız: " - -msgid "Flow: " -msgstr "Akış: " - -msgid "Layer Time: " -msgstr "Katman Süresi: " - -msgid "Fan: " -msgstr "Fan: " - -msgid "Temperature: " -msgstr "Sıcaklık: " - -msgid "Loading G-codes" -msgstr "G kodları yükleniyor" - -msgid "Generating geometry vertex data" -msgstr "Geometri köşe verileri oluşturma" - -msgid "Generating geometry index data" -msgstr "Geometri indeksi verileri oluşturuluyor" - -msgid "Statistics of All Plates" -msgstr "Tüm Plakaların İstatistikleri" - -msgid "Display" -msgstr "Ekran" - -msgid "Flushed" -msgstr "Temizlenmiş" - -msgid "Total" -msgstr "Toplam" - -msgid "Total Time Estimation" -msgstr "Toplam Süre Tahmini" - -msgid "Total time" -msgstr "Toplam Süre" - -msgid "up to" -msgstr "kadar" - -msgid "above" -msgstr "üstünde" - -msgid "from" -msgstr "itibaren" - -msgid "Color Scheme" -msgstr "Renk Şeması" - -msgid "Time" -msgstr "Zaman" - -msgid "Percent" -msgstr "Yüzde" - -msgid "Layer Height (mm)" -msgstr "Katman Yüksekliği (mm)" - -msgid "Line Width (mm)" -msgstr "Çizgi Genişliği (mm)" - -msgid "Speed (mm/s)" -msgstr "Hız (mm/s)" - -msgid "Fan Speed (%)" -msgstr "Fan hızı (%)" - -msgid "Temperature (°C)" -msgstr "Sıcaklık (°C)" - -msgid "Volumetric flow rate (mm³/s)" -msgstr "Hacimsel akış hızı (mm³/s)" - -msgid "Used filament" -msgstr "Kullanılan filament" - -msgid "Travel" -msgstr "Seyahat" - -msgid "Seams" -msgstr "Dikişler" - -msgid "Retract" -msgstr "Geri çekme" - -msgid "Unretract" -msgstr "İleri İtme" - -msgid "Filament Changes" -msgstr "Filament Değişiklikleri" - -msgid "Wipe" -msgstr "Temizleme" - -msgid "Options" -msgstr "Seçenekler" - -msgid "travel" -msgstr "seyahat" - -msgid "Extruder" -msgstr "Ekstruder" - -msgid "Filament change times" -msgstr "Filament değişim süreleri" - -msgid "Cost" -msgstr "Maliyet" - -msgid "Color change" -msgstr "Renk değişimi" - -msgid "Print" -msgstr "Yazdır" - -msgid "Pause" -msgstr "Duraklat" - -msgid "Printer" -msgstr "Yazıcı" - -msgid "Print settings" -msgstr "Yazdırma ayarları" - -msgid "Total Estimation" -msgstr "Toplam Tahmin" - -msgid "Time Estimation" -msgstr "Zaman Tahmini" - -msgid "Normal mode" -msgstr "Normal mod" - -msgid "Prepare time" -msgstr "Hazırlık süresi" - -msgid "Model printing time" -msgstr "Model yazdırma süresi" - -msgid "Switch to silent mode" -msgstr "Sessiz moda geç" - -msgid "Switch to normal mode" -msgstr "Normal moda geç" - -msgid "Variable layer height" -msgstr "Değişken katman yüksekliği" - -msgid "Adaptive" -msgstr "Uyarlanabilir" - -msgid "Quality / Speed" -msgstr "Kalite / Hız" - -msgid "Smooth" -msgstr "Pürüzsüz" - -msgid "Radius" -msgstr "Yarıçap" - -msgid "Keep min" -msgstr "Min. tut" - -msgid "Left mouse button:" -msgstr "Sol fare tuşu:" - -msgid "Add detail" -msgstr "Ayrıntı ekle" - -msgid "Right mouse button:" -msgstr "Sağ fare tuşu:" - -msgid "Remove detail" -msgstr "Ayrıntıyı kaldır" - -msgid "Shift + Left mouse button:" -msgstr "Shift + Sol fare düğmesi:" - -msgid "Reset to base" -msgstr "Tabana sıfırla" - -msgid "Shift + Right mouse button:" -msgstr "Shift + Sağ fare düğmesi:" - -msgid "Smoothing" -msgstr "Pürüzsüzleştirme" - -msgid "Mouse wheel:" -msgstr "Fare tekerleği:" - -msgid "Increase/decrease edit area" -msgstr "Düzenleme alanını artır/azalt" - -msgid "Sequence" -msgstr "Sekans" - -msgid "Mirror Object" -msgstr "Nesneyi Aynala" - -msgid "Tool Move" -msgstr "Araç Taşıma" - -msgid "Tool Rotate" -msgstr "Araç Döndürme" - -msgid "Move Object" -msgstr "Nesneyi Taşı" - -msgid "Auto Orientation options" -msgstr "Otomatik Yönlendirme seçenekleri" - -msgid "Enable rotation" -msgstr "Döndürmeyi etkinleştir" - -msgid "Optimize support interface area" -msgstr "Destek arayüzü alanını optimize edin" - -msgid "Orient" -msgstr "Yön" - -msgid "Arrange options" -msgstr "Hizalama seçenekleri" - -msgid "Spacing" -msgstr "Boşluk" - -msgid "Auto rotate for arrangement" -msgstr "Düzenleme için otomatik döndür" - -msgid "Allow multiple materials on same plate" -msgstr "Aynı plaka üzerinde birden fazla malzemeye izin ver" - -msgid "Avoid extrusion calibration region" -msgstr "Ekstrüzyon kalibrasyon bölgesinden kaçının" - -msgid "Add" -msgstr "Ekle" - -msgid "Add plate" -msgstr "Plaka ekle" - -msgid "Auto orient" -msgstr "Otomatik yönlendir" - -msgid "Arrange all objects" -msgstr "Tüm nesneleri hizala" - -msgid "Arrange objects on selected plates" -msgstr "Seçilen plakalardaki nesneleri hizala" - -msgid "Split to objects" -msgstr "Nesnelere böl" - -msgid "Split to parts" -msgstr "Parçalara bölme" - -msgid "Assembly View" -msgstr "Montaj Görünümü" - -msgid "Select Plate" -msgstr "Plaka Seç" - -msgid "Assembly Return" -msgstr "Montaj İptali" - -msgid "return" -msgstr "geri dön" - -msgid "Paint Toolbar" -msgstr "Boyama Araç Çubuğu" - -msgid "Explosion Ratio" -msgstr "Patlama Oranı" - -msgid "Section View" -msgstr "Bölüm Görünümü" - -msgid "Assemble Control" -msgstr "Montaj Kontrolü" - -msgid "Total Volume:" -msgstr "Toplam Hacim:" - -msgid "Assembly Info" -msgstr "Montaj Bilgisi" - -msgid "Volume:" -msgstr "Hacim:" - -msgid "Size:" -msgstr "Boyut:" - -#, c-format, boost-format -msgid "" -"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " -"separate the conflicted objects farther (%s <-> %s)." -msgstr "" -"%d katmanında gcode yollarında çakışmalar bulundu, z = %.2lf mm. Lütfen " -"çakışan nesneleri daha uzağa ayırın (%s <-> %s)." - -msgid "An object is layed over the boundary of plate." -msgstr "Plakanın sınırına bir nesne serilir." - -msgid "A G-code path goes beyond the max print height." -msgstr "Bir G kodu yolu maksimum baskı yüksekliğinin ötesine geçer." - -msgid "A G-code path goes beyond the boundary of plate." -msgstr "Bir G kodu yolu plakanın sınırlarının ötesine geçer." - -msgid "Only the object being edit is visible." -msgstr "Yalnızca düzenlenen nesne görünür." - -msgid "" -"An object is laid over the boundary of plate or exceeds the height limit.\n" -"Please solve the problem by moving it totally on or off the plate, and " -"confirming that the height is within the build volume." -msgstr "" -"Plaka sınırının üzerine bir nesne döşenir veya yükseklik sınırını aşar.\n" -"Lütfen sorunu tamamen plakanın üzerine veya dışına hareket ettirerek ve " -"yüksekliğin yapım hacmi dahilinde olduğunu doğrulayarak çözün." - -msgid "Calibration step selection" -msgstr "Kalibrasyon adımı seçimi" - -msgid "Micro lidar calibration" -msgstr "Mikro lidar kalibrasyonu" - -msgid "Bed leveling" -msgstr "Yatak tesviye" - -msgid "Resonance frequency identification" -msgstr "Rezonans frekansı tanımlama" - -msgid "Calibration program" -msgstr "Kalibrasyon programı" - -msgid "" -"The calibration program detects the status of your device automatically to " -"minimize deviation.\n" -"It keeps the device performing optimally." -msgstr "" -"Kalibrasyon programı, sapmayı en aza indirmek için cihazınızın durumunu " -"otomatik olarak algılar.\n" -"Cihazın en iyi şekilde çalışmasını sağlar." - -msgid "Calibration Flow" -msgstr "Kalibrasyon Akışı" - -msgid "Start Calibration" -msgstr "Kalibrasyonu Başlat" - -msgid "Completed" -msgstr "Tamamlandı" - -msgid "Calibrating" -msgstr "Kalibre ediliyor" - -msgid "Auto-record Monitoring" -msgstr "Otomatik Kayıt İzleme" - -msgid "Go Live" -msgstr "Canlı Yayına Geçin" - -msgid "Resolution" -msgstr "Çözünürlük" - -msgid "Show \"Live Video\" guide page." -msgstr "\"Canlı Video\" kılavuz sayfasını gösterin." - -msgid "720p" -msgstr "720p" - -msgid "1080p" -msgstr "1080p" - -msgid "ConnectPrinter(LAN)" -msgstr "ConnectPrinter(LAN)" - -msgid "Please input the printer access code:" -msgstr "Lütfen yazıcı erişim kodunu girin:" - -msgid "" -"You can find it in \"Settings > Network > Connection code\"\n" -"on the printer, as shown in the figure:" -msgstr "" -"Bunu \"Ayarlar > Ağ > Bağlantı kodu\" bölümünde bulabilirsiniz.\n" -"şekilde gösterildiği gibi yazıcıda:" - -msgid "Invalid input." -msgstr "Geçersiz Giriş." - -msgid "New Window" -msgstr "Yeni Pencere" - -msgid "Open a new window" -msgstr "Yeni pencere aç" - -msgid "Application is closing" -msgstr "Uygulama kapanıyor" - -msgid "Closing Application while some presets are modified." -msgstr "Bazı ön ayarlar değiştirilirken Uygulama kapatılıyor." - -msgid "Logging" -msgstr "Günlük kaydı" - -msgid "Prepare" -msgstr "Hazırlık" - -msgid "Preview" -msgstr "Ön İzleme" - -msgid "Device" -msgstr "Yazıcı" - -msgid "Project" -msgstr "Proje" - -msgid "Yes" -msgstr "Evet" - -msgid "No" -msgstr "HAYIR" - -msgid "will be closed before creating a new model. Do you want to continue?" -msgstr "" -"yeni bir model oluşturulmadan önce kapatılacaktır. Devam etmek istiyor musun?" - -msgid "Upload" -msgstr "Yükle" - -msgid "Slice plate" -msgstr "Plakayı dilimle" - -msgid "Print plate" -msgstr "Plakayı Yazdır" - -msgid "Slice all" -msgstr "Hepsini dilimle" - -msgid "Export G-code file" -msgstr "G-kod dosyasını dışa aktar" - -msgid "Send" -msgstr "Gönder" - -msgid "Export plate sliced file" -msgstr "Dilimlenmiş plaka dosyasını dışa aktar" - -msgid "Export all sliced file" -msgstr "Tüm dilimlenmiş dosyayı dışa aktar" - -msgid "Print all" -msgstr "Tümünü yazdır" - -msgid "Send all" -msgstr "Hepsini gönder" - -msgid "Keyboard Shortcuts" -msgstr "Klavye kısayolları" - -msgid "Show the list of the keyboard shortcuts" -msgstr "Klavye kısayollarının listesini göster" - -msgid "Setup Wizard" -msgstr "Kurulum sihirbazı" - -msgid "Show Configuration Folder" -msgstr "Yapılandırma Klasörünü Göster" - -msgid "Show Tip of the Day" -msgstr "Günün İpucunu Göster" - -msgid "Check for Update" -msgstr "Güncellemeleri kontrol et" - -msgid "Open Network Test" -msgstr "Ağ Testini Aç" - -#, c-format, boost-format -msgid "&About %s" -msgstr "&Hakkında %s" - -msgid "Upload Models" -msgstr "Modelleri Yükle" - -msgid "Download Models" -msgstr "Modelleri İndir" - -msgid "Default View" -msgstr "Varsayılan görünüm" - -#. TRN To be shown in the main menu View->Top -msgid "Top" -msgstr "Üst" - -msgid "Top View" -msgstr "Üstten görünüm" - -#. TRN To be shown in the main menu View->Bottom -msgid "Bottom" -msgstr "Alt" - -msgid "Bottom View" -msgstr "Alttan görünüm" - -msgid "Front" -msgstr "Ön" - -msgid "Front View" -msgstr "Önden görünüm" - -msgid "Rear" -msgstr "Arka" - -msgid "Rear View" -msgstr "Arkadan Görünüm" - -msgid "Left" -msgstr "Sol" - -msgid "Left View" -msgstr "Soldan Görünüm" - -msgid "Right" -msgstr "Sağ" - -msgid "Right View" -msgstr "Sağdan Görünüm" - -msgid "Start a new window" -msgstr "Yeni pencere" - -msgid "New Project" -msgstr "Yeni proje" - -msgid "Start a new project" -msgstr "Yeni bir proje başlat" - -msgid "Open a project file" -msgstr "Proje dosyasını aç" - -msgid "Recent projects" -msgstr "Son Projeler" - -msgid "Save Project" -msgstr "Projeyi Kaydet" - -msgid "Save current project to file" -msgstr "Mevcut projeyi dosyaya kaydet" - -msgid "Save Project as" -msgstr "Projeyi farklı kaydet" - -msgid "Shift+" -msgstr "Shift+" - -msgid "Save current project as" -msgstr "Mevcut projeyi farklı kaydet" - -msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" -msgstr "3MF/STL/STEP/SVG/OBJ/AMF'yi içe aktar" - -msgid "Load a model" -msgstr "Model yükle" - -msgid "Import Configs" -msgstr "Yapılandırmaları İçe Aktar" - -msgid "Load configs" -msgstr "Yapılandırmaları yükle" - -msgid "Import" -msgstr "İçe aktar" - -msgid "Export all objects as STL" -msgstr "Tüm nesneleri STL olarak dışa aktar" - -msgid "Export Generic 3MF" -msgstr "Genel 3MF olarak dışa aktar" - -msgid "Export 3mf file without using some 3mf-extensions" -msgstr "3mf dosyasını bazı 3mf uzantılarını kullanmadan dışa aktarın" - -msgid "Export current sliced file" -msgstr "Geçerli dilimlenmiş dosyayı dışa aktar" - -msgid "Export all plate sliced file" -msgstr "Dilimlenmiş tüm plaka dosyalarını dışa aktar" - -msgid "Export G-code" -msgstr "G-kodunu dışa aktar" - -msgid "Export current plate as G-code" -msgstr "Geçerli plakayı G kodu olarak dışa aktar" - -msgid "Export &Configs" -msgstr "Yapılandırmaları Dışa Aktar" - -msgid "Export current configuration to files" -msgstr "Geçerli yapılandırmayı dosyalara aktar" - -msgid "Export" -msgstr "Dışa Aktar" - -msgid "Quit" -msgstr "Çıkış" - -msgid "Undo" -msgstr "Geri al" - -msgid "Redo" -msgstr "İleri Al" - -msgid "Cut selection to clipboard" -msgstr "Seçimi panoya kes" - -msgid "Copy" -msgstr "Kopyala" - -msgid "Copy selection to clipboard" -msgstr "Seçimi panoya kopyala" - -msgid "Paste" -msgstr "Yapıştır" - -msgid "Paste clipboard" -msgstr "Panoyu yapıştır" - -msgid "Delete selected" -msgstr "Seçileni sil" - -msgid "Deletes the current selection" -msgstr "Geçerli seçimi sil" - -msgid "Delete all" -msgstr "Hepsini sil" - -msgid "Deletes all objects" -msgstr "Tüm nesneleri sil" - -msgid "Clone selected" -msgstr "Seçili olanı klonla" - -msgid "Clone copies of selections" -msgstr "Seçimlerin kopyalarını kopyala" - -msgid "Select all" -msgstr "Hepsini seç" - -msgid "Selects all objects" -msgstr "Tüm nesneleri seç" - -msgid "Deselect all" -msgstr "Hiçbirini seçme" - -msgid "Deselects all objects" -msgstr "Tüm nesnelerin seçimini kaldırır" - -msgid "Use Perspective View" -msgstr "Perspektif Görünüm" - -msgid "Use Orthogonal View" -msgstr "Ortogonal Görünüm" - -msgid "Show &Labels" -msgstr "Etiketleri Göster" - -msgid "Show object labels in 3D scene" -msgstr "3B sahnede nesne etiketlerini göster" - -msgid "Show &Overhang" -msgstr "Çıkıntıyı Göster" - -msgid "Show object overhang highlight in 3D scene" -msgstr "3B sahnede nesne çıkıntısı vurgusunu göster" - -msgid "Preferences" -msgstr "Tercihler" - -msgid "View" -msgstr "Görünüm" - -msgid "Help" -msgstr "Yardım" - -msgid "Temperature Calibration" -msgstr "Sıcaklık Kalibrasyonu" - -msgid "Pass 1" -msgstr "Geçiş 1" - -msgid "Flow rate test - Pass 1" -msgstr "Akış hızı testi - Başarılı 1" - -msgid "Pass 2" -msgstr "Geçiş 2" - -msgid "Flow rate test - Pass 2" -msgstr "Akış hızı testi - Geçiş 2" - -msgid "Flow rate" -msgstr "Akış hızı" - -msgid "Pressure advance" -msgstr "Basınç avansı" - -msgid "Retraction test" -msgstr "Geri çekme testi" - -msgid "Orca Tolerance Test" -msgstr "Orca Tolerans Testi" - -msgid "Max flowrate" -msgstr "Maksimum akış hızı" - -msgid "VFA" -msgstr "VFA" - -msgid "More..." -msgstr "Daha fazla..." - -msgid "Tutorial" -msgstr "Öğretici" - -msgid "Calibration help" -msgstr "Kalibrasyon yardımı" - -msgid "More calibrations" -msgstr "Daha fazla kalibrasyon" - -msgid "&Open G-code" -msgstr "&G kodunu aç" - -msgid "Open a G-code file" -msgstr "G kodu dosyası aç" - -msgid "Re&load from Disk" -msgstr "Diskten yeniden yükle" - -msgid "Reload the plater from disk" -msgstr "Plakalayıcıyı diskten yeniden yükle" - -msgid "Export &Toolpaths as OBJ" -msgstr "&Takımyollarını OBJ olarak dışa aktar" - -msgid "Export toolpaths as OBJ" -msgstr "Takımyollarını OBJ olarak dışa aktar" - -msgid "Open &Studio" -msgstr "&Stüdyo'yu aç" - -msgid "Open Studio" -msgstr "Stüdyoyu Aç" - -msgid "&Quit" -msgstr "&Çıkış" - -#, c-format, boost-format -msgid "Quit %s" -msgstr "%s'den çık" - -msgid "&File" -msgstr "&Dosya" - -msgid "&View" -msgstr "&Görünüm" - -msgid "&Help" -msgstr "&Yardım" - -#, c-format, boost-format -msgid "A file exists with the same name: %s, do you want to override it." -msgstr "Aynı adda bir dosya var: %s, üzerine yazmak istiyor musunuz." - -#, c-format, boost-format -msgid "A config exists with the same name: %s, do you want to override it." -msgstr "Aynı adda bir yapılandırma mevcut: %s, üzerine yazmak istiyor musunuz." - -msgid "Overwrite file" -msgstr "Dosyanın üzerine yaz" - -msgid "Yes to All" -msgstr "Tümüne evet" - -msgid "No to All" -msgstr "Tümüne hayır" - -msgid "Choose a directory" -msgstr "Dizin seç" - -#, c-format, boost-format -msgid "There is %d config exported. (Only non-system configs)" -msgid_plural "There are %d configs exported. (Only non-system configs)" -msgstr[0] "" -"Dışa aktarılan %d yapılandırma var. (Yalnızca sistem dışı yapılandırmalar)" -msgstr[1] "" -"Dışa aktarılan %d yapılandırma var. (Yalnızca sistem dışı yapılandırmalar)" - -msgid "Export result" -msgstr "Sonucu dışa aktar" - -msgid "Select profile to load:" -msgstr "Yüklenecek profili seç:" - -#, c-format, boost-format -msgid "There is %d config imported. (Only non-system and compatible configs)" -msgid_plural "" -"There are %d configs imported. (Only non-system and compatible configs)" -msgstr[0] "" -"İçe aktarılan %d yapılandırma var. (Yalnızca sistem dışı ve uyumlu " -"yapılandırmalar)" -msgstr[1] "" -"İçe aktarılan %d yapılandırma var. (Yalnızca sistem dışı ve uyumlu " -"yapılandırmalar)" - -msgid "Import result" -msgstr "Sonucu içe aktar" - -msgid "File is missing" -msgstr "Dosya eksik" - -msgid "The project is no longer available." -msgstr "Proje artık mevcut değil." - -msgid "Filament Settings" -msgstr "Filament Ayarları" - -msgid "" -"Do you want to synchronize your personal data from Bambu Cloud? \n" -"It contains the following information:\n" -"1. The Process presets\n" -"2. The Filament presets\n" -"3. The Printer presets" -msgstr "" -"Kişisel verilerinizi Bambu Cloud'dan senkronize etmek ister misiniz?\n" -"Aşağıdaki bilgileri içerir:\n" -"1. Süreç ön ayarları\n" -"2. Filament ön ayarları\n" -"3. Yazıcı ön ayarları" - -msgid "Synchronization" -msgstr "Senkronizasyon" - -msgid "Initialize failed (No Device)!" -msgstr "Başlatma başarısız (Cihaz Yok)!" - -msgid "Initialize failed (Device connection not ready)!" -msgstr "Başlatma başarısız oldu (Cihaz bağlantısı hazır değil)!" - -msgid "Initialize failed (No Camera Device)!" -msgstr "Başlatma başarısız oldu (Kamera Cihazı Yok)!" - -msgid "Printer is busy downloading, Please wait for the downloading to finish." -msgstr "" -"Yazıcı indirme işlemiyle meşgul. Lütfen indirme işleminin bitmesini bekleyin." - -msgid "Loading..." -msgstr "Yükleniyor..." - -msgid "Initialize failed (Not supported on the current printer version)!" -msgstr "Başlatma başarısız oldu (Geçerli yazıcı sürümünde desteklenmiyor)!" - -msgid "Initialize failed (Not accessible in LAN-only mode)!" -msgstr "Başlatma başarısız oldu (Yalnızca LAN modunda erişilemez)!" - -msgid "Initialize failed (Missing LAN ip of printer)!" -msgstr "Başlatma başarısız oldu (Yazıcının LAN ip'si eksik)!" - -msgid "Initializing..." -msgstr "Başlatılıyor..." - -#, c-format, boost-format -msgid "Initialize failed (%s)!" -msgstr "Başlatma başarısız oldu (%s)!" - -msgid "Network unreachable" -msgstr "Ağa ulaşılamıyor" - -msgid "Stopped [%d]!" -msgstr "[%d] durduruldu!" - -msgid "Stopped." -msgstr "Durdu." - -msgid "LAN Connection Failed (Failed to start liveview)" -msgstr "LAN Bağlantısı Başarısız Oldu (Canlı izleme başlatılamadı)" - -msgid "" -"Virtual Camera Tools is required for this task!\n" -"Do you want to install them?" -msgstr "" -"Bu görev için Sanal Kamera Araçları gereklidir!\n" -"Bunları yüklemek istiyor musunuz?" - -msgid "Downloading Virtual Camera Tools" -msgstr "Sanal Kamera Araçlarını İndirme" - -msgid "" -"Another virtual camera is running.\n" -"Bambu Studio supports only a single virtual camera.\n" -"Do you want to stop this virtual camera?" -msgstr "" -"Başka bir sanal kamera çalışıyor.\n" -"Bambu Studio yalnızca tek bir sanal kamerayı destekler.\n" -"Bu sanal kamerayı durdurmak istiyor musunuz?" - -#, c-format, boost-format -msgid "Virtual camera initialize failed (%s)!" -msgstr "Sanal kameranın başlatılması başarısız oldu (%s)!" - -msgid "Information" -msgstr "Bilgi" - -msgid "Playing..." -msgstr "Oynatılıyor..." - -msgid "Load failed [%d]!" -msgstr "Yükleme başarısız [%d]!" - -msgid "Year" -msgstr "Yıl" - -msgid "Month" -msgstr "Ay" - -msgid "All Files" -msgstr "Tüm dosyalar" - -msgid "Group files by year, recent first." -msgstr "Dosyaları yıllara göre gruplandırın, en yenisi önce olsun." - -msgid "Group files by month, recent first." -msgstr "Dosyaları aya göre gruplandırın, en yenisi önce olsun." - -msgid "Show all files, recent first." -msgstr "Tüm dosyaları göster, en yenisi önce." - -msgid "Timelapse" -msgstr "Timelapse" - -msgid "Switch to timelapse files." -msgstr "Timelapse dosyalarına geç." - -msgid "Video" -msgstr "Video" - -msgid "Switch to video files." -msgstr "Video dosyalarına geç." - -msgid "Switch to 3mf model files." -msgstr "3mf model dosyalarına geçin." - -msgid "Delete selected files from printer." -msgstr "Seçilen dosyaları yazıcıdan silin." - -msgid "Download" -msgstr "İndir" - -msgid "Download selected files from printer." -msgstr "Seçilen dosyaları yazıcıdan indirin." - -msgid "Select" -msgstr "Seç" - -msgid "Batch manage files." -msgstr "Dosyaları toplu olarak yönet." - -msgid "No printers." -msgstr "Yazıcı yok." - -#, c-format, boost-format -msgid "Connect failed [%d]!" -msgstr "Bağlantı başarısız oldu [%d]!" - -msgid "Loading file list..." -msgstr "Dosya listesi yükleniyor..." - -msgid "No files [%d]" -msgstr "Dosya yok [%d]" - -msgid "Load failed [%d]" -msgstr "Yükleme başarısız [%d]" - -#, c-format, boost-format -msgid "You are going to delete %u file from printer. Are you sure to continue?" -msgid_plural "" -"You are going to delete %u files from printer. Are you sure to continue?" -msgstr[0] "" -"%u dosyasını yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" -msgstr[1] "%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" - -msgid "Delete files" -msgstr "Dosyaları sil" - -#, c-format, boost-format -msgid "Do you want to delete the file '%s' from printer?" -msgstr "'%s' dosyasını yazıcıdan silmek istiyor musunuz?" - -msgid "Delete file" -msgstr "Dosyayı sil" - -msgid "Fetching model infomations ..." -msgstr "Model bilgileri alınıyor..." - -msgid "Failed to fetching model infomations from printer." -msgstr "Model bilgileri yazıcıdan alınamadı." - -msgid "Failed to parse model infomations." -msgstr "Model bilgileri ayrıştırılamadı." - -msgid "" -"The .gcode.3mf file contains no G-code data.Please slice it whthBambu Studio " -"and export a new .gcode.3mf file." -msgstr "" -".gcode.3mf dosyası hiçbir G kodu verisi içermiyor. Lütfen dosyayı Bambu " -"Studio ile dilimleyin ve yeni bir .gcode.3mf dosyasını dışa aktarın." - -#, c-format, boost-format -msgid "File '%s' was lost! Please download it again." -msgstr "'%s' dosyası kayboldu! Lütfen tekrar indirin." - -msgid "Download waiting..." -msgstr "İndirme bekleniyor..." - -msgid "Play" -msgstr "Oynat" - -msgid "Open Folder" -msgstr "Klasörü Aç" - -msgid "Download finished" -msgstr "İndirme tamamlandı" - -msgid "Downloading %d%%..." -msgstr "%d%% indiriliyor..." - -msgid "Not supported on the current printer version." -msgstr "Geçerli yazıcı sürümünde desteklenmiyor." - -msgid "Storage unavailable, insert SD card." -msgstr "Depolama alanı kullanılamıyor, SD kartı takın." - -msgid "Speed:" -msgstr "Hız:" - -msgid "Deadzone:" -msgstr "Ölü bölge:" - -msgid "Options:" -msgstr "Seçenekler:" - -msgid "Zoom" -msgstr "Yakınlaştır" - -msgid "Translation/Zoom" -msgstr "Çeviri/Yakınlaştırma" - -msgid "3Dconnexion settings" -msgstr "3D bağlantı ayarları" - -msgid "Swap Y/Z axes" -msgstr "Y/Z eksenlerini değiştirin" - -msgid "Invert X axis" -msgstr "X eksenini ters çevir" - -msgid "Invert Y axis" -msgstr "Y eksenini ters çevir" - -msgid "Invert Z axis" -msgstr "Z eksenini ters çevir" - -msgid "Invert Yaw axis" -msgstr "Sapma eksenini ters çevir" - -msgid "Invert Pitch axis" -msgstr "Pitch eksenini ters çevir" - -msgid "Invert Roll axis" -msgstr "Silindir eksenini ters çevir" - -msgid "Printing Progress" -msgstr "Yazdırma İlerlemesi" - -msgid "Resume" -msgstr "Sürdür" - -msgid "Stop" -msgstr "Durdur" - -msgid "0" -msgstr "0" - -msgid "Layer: N/A" -msgstr "Katman: Yok" - -msgid "Immediately score" -msgstr "Hemen puanlayın" - -msgid "Clear" -msgstr "Temizle" - -msgid "Camera" -msgstr "Kamera" - -msgid "SD Card" -msgstr "Hafıza kartı" - -msgid "Camera Setting" -msgstr "Kamera Ayarı" - -msgid "Control" -msgstr "Kontrol" - -msgid "Print Options" -msgstr "Yazdırma Seçenekleri" - -msgid "100%" -msgstr "100%" - -msgid "Lamp" -msgstr "Lamba" - -msgid "Aux" -msgstr "Yardımcı" - -msgid "Cham" -msgstr "Cham" - -msgid "Bed" -msgstr "Yatak" - -msgid "Unload" -msgstr "Boşalt" - -msgid "Debug Info" -msgstr "Hata Ayıklama Bilgisi" - -msgid "No SD Card" -msgstr "SD Kart Yok" - -msgid "SD Card Abnormal" -msgstr "SD Kart Anormal" - -msgid "Cancel print" -msgstr "Yazdırmayı iptal et" - -msgid "Are you sure you want to cancel this print?" -msgstr "Bu yazdırmayı iptal etmek istediğinizden emin misiniz?" - -msgid "Done" -msgstr "Tamamlandı" - -msgid "Downloading..." -msgstr "İndiriliyor..." - -msgid "Cloud Slicing..." -msgstr "Bulut Dilimleme..." - -#, c-format, boost-format -msgid "In Cloud Slicing Queue, there are %s tasks ahead." -msgstr "Bulut Dilimleme Sırasında önünüzde %s görev var." - -#, c-format, boost-format -msgid "Layer: %s" -msgstr "Katman: %s" - -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Lütfen favori Bambu Market modelinize puan verin." - -msgid "Score" -msgstr "Skor" - -msgid "Layer: %d/%d" -msgstr "Katman: %d/%d" - -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "Filamenti yüklemeden önce lütfen Nozulu 170 derecenin üzerine ısıtın." - -msgid "Still unload" -msgstr "Daha Fazla Boşalt" - -msgid "Still load" -msgstr "Daha Fazla Yükle" - -msgid "Please select an AMS slot before calibration" -msgstr "Lütfen kalibrasyondan önce bir AMS yuvası seçin" - -msgid "" -"Cannot read filament info: the filament is loaded to the tool head,please " -"unload the filament and try again." -msgstr "" -"Filament bilgisi okunamıyor: Filament alet kafasına yüklenmiştir, lütfen " -"filamanı boşaltın ve tekrar deneyin." - -msgid "This only takes effect during printing" -msgstr "Bu yalnızca yazdırma sırasında etkili olur" - -msgid "Silent" -msgstr "Sessiz" - -msgid "Standard" -msgstr "Standart" - -msgid "Sport" -msgstr "Spor" - -msgid "Ludicrous" -msgstr "Gülünç" - -msgid "Can't start this without SD card." -msgstr "SD kart olmadan bunu başlatamıyorum." - -msgid "Status" -msgstr "Durum" - -msgid "Update" -msgstr "Güncelle" - -msgid "HMS" -msgstr "HMS" - -msgid "Don't show again" -msgstr "Bir daha gösterme" - -msgid "%s error" -msgstr "%s hata" - -#, c-format, boost-format -msgid "%s has encountered an error" -msgstr "%s bir hatayla karşılaştı" - -msgid "%s warning" -msgstr "%s uyarı" - -msgid "%s has a warning" -msgstr "%s'de uyarı var" - -msgid "%s info" -msgstr "%s bilgi" - -#, c-format, boost-format -msgid "%s information" -msgstr "%s bilgisi" - -msgid "Skip" -msgstr "Atla" - -msgid "3D Mouse disconnected." -msgstr "3D Fare bağlantısı kesildi." - -msgid "Configuration can update now." -msgstr "Yapılandırma şimdi güncellenebilir." - -msgid "Detail." -msgstr "Detay." - -msgid "Integration was successful." -msgstr "Entegrasyon başarılı oldu." - -msgid "Integration failed." -msgstr "Entegrasyon başarısız oldu." - -msgid "Undo integration was successful." -msgstr "Entegrasyonun geri alınması başarılı oldu." - -msgid "New network plug-in available." -msgstr "Yeni ağ eklentisi mevcut." - -msgid "Details" -msgstr "Detaylar" - -msgid "Undo integration failed." -msgstr "Entegrasyon geri alınamadı." - -msgid "Exporting." -msgstr "Dışa Aktarılıyor." - -msgid "Software has New version." -msgstr "Yazılımın Yeni sürümü var." - -msgid "Goto download page." -msgstr "İndirme sayfasına gidin." - -msgid "Open Folder." -msgstr "Klasörü Aç." - -msgid "Safely remove hardware." -msgstr "Donanımı Güvenle Kaldır." - -#, c-format, boost-format -msgid "%1$d Object has custom supports." -msgid_plural "%1$d Objects have custom supports." -msgstr[0] "%1$d Nesnenin özel destekleri var." -msgstr[1] "%1$d Nesnelerin özel destekleri var." - -#, c-format, boost-format -msgid "%1$d Object has color painting." -msgid_plural "%1$d Objects have color painting." -msgstr[0] "%1$d Nesnenin renkli resmi var." -msgstr[1] "%1$d Nesnelerin renkli boyaması var." - -#, c-format, boost-format -msgid "%1$d object was loaded as a part of cut object." -msgid_plural "%1$d objects were loaded as parts of cut object" -msgstr[0] "%1$d nesne, kesme nesnesinin bir parçası olarak yüklendi." -msgstr[1] "%1$d nesne, kesme nesnesinin parçaları olarak yüklendi" - -msgid "ERROR" -msgstr "HATA" - -msgid "CANCELED" -msgstr "İPTAL EDİLDİ" - -msgid "COMPLETED" -msgstr "TAMAMLANDI" - -msgid "Cancel upload" -msgstr "Yüklemeyi iptal et" - -msgid "Slice ok." -msgstr "Dilimleme tamam." - -msgid "Jump to" -msgstr "Git" - -msgid "Error:" -msgstr "Hata:" - -msgid "Warning:" -msgstr "Uyarı:" - -msgid "Export successfully." -msgstr "Başarıyla dışa aktarıldı." - -msgid "Serious warning:" -msgstr "Ciddi uyarı:" - -msgid " (Repair)" -msgstr " (Onar)" - -msgid " Click here to install it." -msgstr " Yüklemek için tıklayın." - -msgid "WARNING:" -msgstr "UYARI:" - -msgid "Your model needs support ! Please make support material enable." -msgstr "" -"Modelinizin desteğe ihtiyacı var! Lütfen destek materyalini etkinleştirin." - -msgid "Gcode path overlap" -msgstr "Gcode yolu çakışması" - -msgid "Support painting" -msgstr "Destek boyama" - -msgid "Color painting" -msgstr "Renkli boyama" - -msgid "Cut connectors" -msgstr "Konektörleri kes" - -msgid "Layers" -msgstr "Katmanlar" - -msgid "Range" -msgstr "Aralık" - -msgid "" -"The application cannot run normally because OpenGL version is lower than " -"2.0.\n" -msgstr "" -"OpenGL sürümü 2.0'dan düşük olduğundan uygulama normal şekilde çalışamıyor.\n" - -msgid "Please upgrade your graphics card driver." -msgstr "Lütfen grafik kartı sürücünüzü yükseltin." - -msgid "Unsupported OpenGL version" -msgstr "Desteklenmeyen OpenGL sürümü" - -#, c-format, boost-format -msgid "" -"Unable to load shaders:\n" -"%s" -msgstr "" -"Gölgelendiriciler yüklenemiyor:\n" -"%s" - -msgid "Error loading shaders" -msgstr "Gölgelendiriciler yüklenirken hata oluştu" - -msgctxt "Layers" -msgid "Top" -msgstr "Üst" - -msgctxt "Layers" -msgid "Bottom" -msgstr "Alt" - -msgid "Enable AI monitoring of printing" -msgstr "Yazdırmanın AI izlemesini etkinleştirin" - -msgid "Sensitivity of pausing is" -msgstr "Duraklatma hassasiyeti" - -msgid "Enable detection of build plate position" -msgstr "Yapı plakası konumunun algılanmasını etkinleştir" - -msgid "" -"The localization tag of build plate is detected, and printing is paused if " -"the tag is not in predefined range." -msgstr "" -"Baskı plakasının yerelleştirme etiketi algılanır ve etiket önceden " -"tanımlanmış aralıkta değilse yazdırma duraklatılır." - -msgid "First Layer Inspection" -msgstr "Birinci Katman Denetimi" - -msgid "Auto-recovery from step loss" -msgstr "Adım kaybından otomatik kurtarma" - -msgid "Global" -msgstr "Genel" - -msgid "Objects" -msgstr "Nesneler" - -msgid "Advance" -msgstr "Gelişmiş" - -msgid "Compare presets" -msgstr "Ön ayarları karşılaştır" - -msgid "View all object's settings" -msgstr "Nesnenin tüm ayarları" - -msgid "Filament settings" -msgstr "Filament ayarları" - -msgid "Printer settings" -msgstr "Yazıcı ayarları" - -msgid "Untitled" -msgstr "İsimsiz" - -msgid " plate %1%:" -msgstr " plaka %1%:" - -msgid "Invalid name, the following characters are not allowed:" -msgstr "Geçersiz ad, aşağıdaki karakterlere izin verilmiyor:" - -msgid "Sliced Info" -msgstr "Dilimleme bilgisi" - -msgid "Used Filament (m)" -msgstr "Kullanılan Filament (m)" - -msgid "Used Filament (mm³)" -msgstr "Kullanılan Filament (mm³)" - -msgid "Used Filament (g)" -msgstr "Kullanılan Filament (g)" - -msgid "Used Materials" -msgstr "Kullanılan Malzemeler" - -msgid "Estimated time" -msgstr "Tahmini süresi" - -msgid "Filament changes" -msgstr "Filament değişiklikleri" - -msgid "Click to edit preset" -msgstr "Ön ayarı düzenlemek için tıklayın" - -msgid "Connection" -msgstr "Bağlantı" - -msgid "Bed type" -msgstr "Yatak türü" - -msgid "Flushing volumes" -msgstr "Yıkama hacimleri" - -msgid "Add one filament" -msgstr "Bir filament ekle" - -msgid "Remove last filament" -msgstr "Son filamenti kaldır" - -msgid "Synchronize filament list from AMS" -msgstr "Filament listesini AMS'den senkronize edin" - -msgid "Set filaments to use" -msgstr "Kullanılacak filamentleri ayarla" - -msgid "" -"No AMS filaments. Please select a printer in 'Device' page to load AMS info." -msgstr "" -"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' sayfasında " -"bir yazıcı seçin." - -msgid "Sync filaments with AMS" -msgstr "Filamentleri AMS ile senkronize et" - -msgid "" -"Sync filaments with AMS will drop all current selected filament presets and " -"colors. Do you want to continue?" -msgstr "" -"Filamentleri AMS ile senkronize etmek, seçili tüm mevcut filament ön " -"ayarlarını ve renklerini kaldıracaktır. Devam etmek istiyor musun?" - -msgid "" -"Already did a synchronization, do you want to sync only changes or resync all?" -msgstr "" -"Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek " -"mi yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" - -msgid "Sync" -msgstr "Senkronizasyon" - -msgid "Resync" -msgstr "Yeniden eşitleme" - -msgid "There are no compatible filaments, and sync is not performed." -msgstr "Uyumlu filament yok ve senkronizasyon gerçekleştirilmiyor." - -msgid "" -"There are some unknown filaments mapped to generic preset. Please update Orca " -"Slicer or restart Orca Slicer to check if there is an update to system " -"presets." -msgstr "" -"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön ayarlarında " -"bir güncelleme olup olmadığını kontrol etmek için lütfen Orca Slicer'ı " -"güncelleyin veya Orca Slicer'ı yeniden başlatın." - -#, boost-format -msgid "Do you want to save changes to \"%1%\"?" -msgstr "\"%1%\" dosyasındaki değişiklikleri kaydetmek istiyor musunuz?" - -#, c-format, boost-format -msgid "" -"Successfully unmounted. The device %s(%s) can now be safely removed from the " -"computer." -msgstr "" -"Başarıyla kaldırıldı. %s(%s) aygıtı artık bilgisayardan güvenli bir şekilde " -"kaldırılabilir." - -#, c-format, boost-format -msgid "Ejecting of device %s(%s) has failed." -msgstr "%s(%s) aygıtının çıkarılması başarısız oldu." - -msgid "Previous unsaved project detected, do you want to restore it?" -msgstr "Önceki kaydedilmemiş proje algılandı, geri yüklemek istiyor musunuz?" - -msgid "Restore" -msgstr "Geri Yükleme" - -msgid "" -"The bed temperature exceeds filament's vitrification temperature. Please open " -"the front door of printer before printing to avoid nozzle clog." -msgstr "" -"Yatak sıcaklığı filamanın vitrifikasyon sıcaklığını aşıyor. Püskürtme ucunun " -"tıkanmasını önlemek için lütfen yazdırmadan önce yazıcının ön kapısını açın." - -msgid "" -"The nozzle hardness required by the filament is higher than the default " -"nozzle hardness of the printer. Please replace the hardened nozzle or " -"filament, otherwise, the nozzle will be attrited or damaged." -msgstr "" -"Filamentin gerektirdiği nozul sertliği, yazıcının varsayılan nozul " -"sertliğinden daha yüksektir. Lütfen sertleşmiş nozülü veya filamanı " -"değiştirin, aksi takdirde nozül aşınır veya hasar görür." - -msgid "Loading file: %s" -msgstr "Dosya yükleniyor: %s" - -msgid "The 3mf is not from Bambu Lab, load geometry data only." -msgstr "3mf, Bambu Lab'den değildir, yalnızca geometri verilerini yükleyin." - -msgid "Load 3mf" -msgstr "3mf yükle" - -msgid "The Config can not be loaded." -msgstr "Yapılandırma yüklenemiyor." - -msgid "The 3mf is generated by old Orca Slicer, load geometry data only." -msgstr "" -"3mf, eski Orca Slicer tarafından oluşturulmuştur, yalnızca geometri " -"verilerini yükleyin." - -#, c-format, boost-format -msgid "" -"The 3mf's version %s is newer than %s's version %s, Found following keys " -"unrecognized:" -msgstr "" -"3mf'nin %s sürümü, %s'in %s sürümünden daha yeni, Aşağıdaki anahtarlar " -"tanınmadan bulundu:" - -msgid "You'd better upgrade your software.\n" -msgstr "Yazılımınızı yükseltseniz iyi olur.\n" - -msgid "Newer 3mf version" -msgstr "Daha yeni 3mf sürümü" - -#, c-format, boost-format -msgid "" -"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " -"software." -msgstr "" -"3mf'nin %s sürümü, %s'in %s sürümünden daha yeni, Yazılımınızı yükseltmenizi " -"öneririz." - -msgid "Invalid values found in the 3mf:" -msgstr "3mf'de geçersiz değerler bulundu:" - -msgid "Please correct them in the param tabs" -msgstr "Lütfen bunları parametre sekmelerinde düzeltin" - -msgid "The 3mf is not compatible, load geometry data only!" -msgstr "3mf uyumlu değil, yalnızca geometri verilerini yükleyin!" - -msgid "Incompatible 3mf" -msgstr "Uyumsuz 3mf" - -msgid "Name of components inside step file is not UTF8 format!" -msgstr "Adım dosyasındaki bileşenlerin adı UTF8 formatında değil!" - -msgid "The name may show garbage characters!" -msgstr "İsimde çöp karakterler görünebilir!" - -#, boost-format -msgid "Failed loading file \"%1%\". An invalid configuration was found." -msgstr "\"%1%\" dosyası yüklenemedi. Geçersiz bir yapılandırma bulundu." - -msgid "Objects with zero volume removed" -msgstr "Sıfır hacimli nesneler kaldırıldı" - -msgid "The volume of the object is zero" -msgstr "Cismin hacmi sıfır" - -#, c-format, boost-format -msgid "" -"The object from file %s is too small, and maybe in meters or inches.\n" -" Do you want to scale to millimeters?" -msgstr "" -"%s dosyasındaki nesne çok küçük; metre veya inç cinsinden olabilir.\n" -" Milimetreye ölçeklendirmek istiyor musunuz?" - -msgid "Object too small" -msgstr "Nesne çok küçük" - -msgid "" -"This file contains several objects positioned at multiple heights.\n" -"Instead of considering them as multiple objects, should \n" -"the file be loaded as a single object having multiple parts?" -msgstr "" -"Bu dosya birden fazla yükseklikte konumlandırılmış birkaç nesne içerir.\n" -"Bunları birden fazla nesne olarak düşünmek yerine,\n" -"dosya birden fazla parçaya sahip tek bir nesne olarak mı yüklenecek?" - -msgid "Multi-part object detected" -msgstr "Çok parçalı nesne algılandı" - -msgid "Load these files as a single object with multiple parts?\n" -msgstr "" -"Bu dosyalar birden fazla parçadan oluşan tek bir nesne olarak mı yüklensin?\n" - -msgid "Object with multiple parts was detected" -msgstr "Birden fazla parçaya sahip nesne algılandı" - -msgid "The file does not contain any geometry data." -msgstr "Dosya herhangi bir geometri verisi içermiyor." - -msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" -msgstr "" -"Nesneniz çok büyük görünüyor. Isı yatağına sığacak şekilde otomatik olarak " -"küçültmek istiyor musunuz?" - -msgid "Object too large" -msgstr "Nesne çok büyük" - -msgid "Export STL file:" -msgstr "STL dosyasını dışa aktar:" - -msgid "Save file as:" -msgstr "Farklı kaydet:" - -msgid "Delete object which is a part of cut object" -msgstr "Kesilen nesnenin bir parçası olan nesneyi silin" - -msgid "" -"You try to delete an object which is a part of a cut object.\n" -"This action will break a cut correspondence.\n" -"After that model consistency can't be guaranteed." -msgstr "" -"Kesilmiş bir nesnenin parçası olan bir nesneyi silmeye çalışıyorsunuz.\n" -"Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" -"Bundan sonra model tutarlılığı garanti edilemez." - -msgid "The selected object couldn't be split." -msgstr "Seçilen nesne bölünemedi." - -msgid "Another export job is running." -msgstr "Başka bir ihracat işi yürütülüyor." - -msgid "Select a new file" -msgstr "Yeni dosya seç" - -msgid "File for the replace wasn't selected" -msgstr "Değiştirme dosyası seçilmedi" - -msgid "Error during replace" -msgstr "Değiştirme sırasında hata" - -msgid "Please select a file" -msgstr "Dosya seçin" - -msgid "Slicing" -msgstr "Dilimleniyor" - -msgid "There are warnings after slicing models:" -msgstr "Modellerin dilimlenmesinden sonra uyarılar vardır:" - -msgid "warnings" -msgstr "uyarılar" - -msgid "Invalid data" -msgstr "Geçersiz veri" - -msgid "Slicing Canceled" -msgstr "Dilimleme İptal Edildi" - -msgid "Slicing Plate %d" -msgstr "Plaka %d dilimleniyor" - -msgid "Please resolve the slicing errors and publish again." -msgstr "Lütfen dilimleme hatalarını giderip tekrar yayınlayın." - -msgid "" -"Network Plug-in is not detected. Network related features are unavailable." -msgstr "Ağ Eklentisi algılanmadı. Ağla ilgili özellikler kullanılamıyor." - -msgid "" -"Preview only mode:\n" -"The loaded file contains gcode only, Can not enter the Prepare page" -msgstr "" -"Yalnızca önizleme modu:\n" -"Yüklenen dosya yalnızca gcode içeriyor, Hazırlama sayfasına girilemiyor" - -msgid "You can keep the modified presets to the new project or discard them" -msgstr "Değiştirilen ön ayarları yeni projede tutabilir veya silebilirsiniz" - -msgid "Creating a new project" -msgstr "Yeni bir proje oluşturma" - -msgid "Load project" -msgstr "Projeyi Aç" - -msgid "" -"Failed to save the project.\n" -"Please check whether the folder exists online or if other programs open the " -"project file." -msgstr "" -"Proje kaydedilemedi.\n" -"Lütfen klasörün çevrimiçi olup olmadığını veya proje dosyasını başka " -"programların açıp açmadığını kontrol edin." - -msgid "Save project" -msgstr "Projeyi kaydet" - -msgid "Importing Model" -msgstr "Model İçe aktarılıyor" - -msgid "prepare 3mf file..." -msgstr "3mf dosyasını hazırla..." - -msgid "downloading project ..." -msgstr "proje indiriliyor..." - -msgid "Project downloaded %d%%" -msgstr "Proje %d%% indirildi" - -msgid "The selected file" -msgstr "Seçili dosya" - -msgid "does not contain valid gcode." -msgstr "geçerli gcode içermiyor." - -msgid "Error occurs while loading G-code file" -msgstr "G kodu dosyası yüklenirken hata oluşuyor" - -msgid "Drop project file" -msgstr "Proje dosyasını sürükle" - -msgid "Please select an action" -msgstr "İşlem seçin" - -msgid "Open as project" -msgstr "Proje olarak aç" - -msgid "Import geometry only" -msgstr "Yalnızca geometriyi içe aktar" - -msgid "Only one G-code file can be opened at the same time." -msgstr "Aynı anda yalnızca bir G kodu dosyası açılabilir." - -msgid "G-code loading" -msgstr "G-kod yükleniyor" - -msgid "G-code files can not be loaded with models together!" -msgstr "G kodu dosyaları modellerle birlikte yüklenemez!" - -msgid "Can not add models when in preview mode!" -msgstr "Önizleme modundayken model eklenemiyor!" - -msgid "Add Models" -msgstr "Model Ekle" - -msgid "All objects will be removed, continue?" -msgstr "Tüm nesneler kaldırılacak, devam edilsin mi?" - -msgid "The current project has unsaved changes, save it before continue?" -msgstr "" -"Mevcut projede kaydedilmemiş değişiklikler var. Devam etmeden önce " -"kaydedilsin mi?" - -msgid "Remember my choice." -msgstr "Seçimimi hatırla." - -msgid "Number of copies:" -msgstr "Kopya sayısı:" - -msgid "Copies of the selected object" -msgstr "Seçilen nesnenin kopyaları" - -msgid "Save G-code file as:" -msgstr "G-kod dosyasını şu şekilde kaydedin:" - -msgid "Save Sliced file as:" -msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" - -#, c-format, boost-format -msgid "" -"The file %s has been sent to the printer's storage space and can be viewed on " -"the printer." -msgstr "" -"%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda " -"görüntülenebiliyor." - -msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts will " -"be exported." -msgstr "" -"Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca pozitif parçalar " -"ihraç edilecektir." - -msgid "Is the printer ready? Is the print sheet in place, empty and clean?" -msgstr "Yazıcı hazır mı? Baskı plakası takılı, boş ve temiz mi?" - -msgid "" -"Print By Object: \n" -"Suggest to use auto-arrange to avoid collisions when printing." -msgstr "" -"Nesneye Göre Yazdır:\n" -"Yazdırma sırasında çarpışmaları önlemek için otomatik düzenlemeyi " -"kullanmanızı önerin." - -msgid "Send G-code" -msgstr "G-kodu gönder" - -msgid "Send to printer" -msgstr "Yazıcıya gönder" - -msgid "Custom supports and color painting were removed before repairing." -msgstr "Tamir edilmeden önce özel destekler ve renkli boyalar kaldırıldı." - -msgid "Invalid number" -msgstr "Geçersiz numara" - -msgid "Plate Settings" -msgstr "Plaka Ayarları" - -#, boost-format -msgid "Number of currently selected parts: %1%\n" -msgstr "Şu anda seçili parça sayısı: %1%\n" - -#, boost-format -msgid "Number of currently selected objects: %1%\n" -msgstr "Şu anda seçili nesnelerin sayısı: %1%\n" - -msgid "Part name: %1%\n" -msgstr "Parça adı: %1%\n" - -msgid "Object name: %1%\n" -msgstr "Nesne adı: %1%\n" - -#, boost-format -msgid "Size: %1% x %2% x %3% in\n" -msgstr "Boyut: %1% x %2% x %3%\n" - -#, boost-format -msgid "Size: %1% x %2% x %3% mm\n" -msgstr "Boyut: %1% x %2% x %3% mm\n" - -msgid "Volume: %1% in³\n" -msgstr "Hacim: %1% in³\n" - -msgid "Volume: %1% mm³\n" -msgstr "Hacim: %1% mm³\n" - -msgid "Triangles: %1%\n" -msgstr "Üçgenler: %1%\n" - -msgid "Tips:" -msgstr "İpuçları:" - -msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model " -"on Orca Slicer(windows) or CAD softwares." -msgstr "" -"\"Modeli Onar\" özelliği şu anda yalnızca Windows'ta bulunmaktadır. Lütfen " -"modeli Orca Slicer (windows) veya CAD yazılımlarında onarın." - -#, c-format, boost-format -msgid "" -"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature to " -"non zero." -msgstr "" -"Plaka% d: %s'nin %s(%s) filamanını yazdırmak için kullanılması önerilmez. " -"Eğer yine de bu baskıyı yapmak istiyorsanız, lütfen bu filamanın yatak " -"sıcaklığını sıfır olmayan bir değere ayarlayın." - -msgid "Switching the language requires application restart.\n" -msgstr "Dili değiştirmek uygulamanın yeniden başlatılmasını gerektirir.\n" - -msgid "Do you want to continue?" -msgstr "Devam etmek istiyor musun?" - -msgid "Language selection" -msgstr "Dil seçimi" - -msgid "Switching application language while some presets are modified." -msgstr "Bazı ön ayarlar değiştirilirken uygulama dilinin değiştirilmesi." - -msgid "Changing application language" -msgstr "Dil değiştiriliyor" - -msgid "Changing the region will log out your account.\n" -msgstr "Bölgeyi değiştirmek hesabınızdan çıkış yapmanıza neden olacaktır.\n" - -msgid "Region selection" -msgstr "Bölge seçimi" - -msgid "Second" -msgstr "Saniye" - -msgid "Browse" -msgstr "Aç" - -msgid "Choose Download Directory" -msgstr "İndirme Dizini seçin" - -msgid "General Settings" -msgstr "Genel Ayarlar" - -msgid "Asia-Pacific" -msgstr "Asya Pasifik" - -msgid "China" -msgstr "Çin" - -msgid "Europe" -msgstr "Avrupa" - -msgid "North America" -msgstr "Kuzey Amerika" - -msgid "Others" -msgstr "Diğer" - -msgid "Login Region" -msgstr "Giriş Bölgesi" - -msgid "Stealth Mode" -msgstr "Gizli mod" - -msgid "Metric" -msgstr "Metrik" - -msgid "Imperial" -msgstr "Imperial" - -msgid "Units" -msgstr "Birimler" - -msgid "Zoom to mouse position" -msgstr "Fare konumuna yakınlaştır" - -msgid "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the " -"2D window center." -msgstr "" -"2B pencere merkezi yerine, 3B görünümde fare işaretçisinin konumuna doğru " -"yakınlaştırın." - -msgid "Show \"Tip of the day\" notification after start" -msgstr "Başlangıçtan sonra \"Günün ipucu\" bildirimini göster" - -msgid "If enabled, useful hints are displayed at startup." -msgstr "Etkinleştirilirse başlangıçta faydalı ipuçları görüntülenir." - -msgid "Show g-code window" -msgstr "G kodu penceresini göster" - -msgid "If enabled, g-code window will be displayed." -msgstr "Etkinleştirilirse g kodu penceresi görüntülenecektir." - -msgid "Presets" -msgstr "Ön ayarlar" - -msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "Kullanıcı ön ayarları otomatik senkronizasyon (Yazıcı/Filament/İşlem)" - -msgid "User Sync" -msgstr "Kullanıcı Senkronizasyonu" - -msgid "Update built-in Presets automatically." -msgstr "Yerleşik Ön Ayarları otomatik olarak güncelleyin." - -msgid "System Sync" -msgstr "Sistem Senkronizasyonu" - -msgid "Clear my choice on the unsaved presets." -msgstr "Kaydedilmemiş ön ayarlardaki seçimimi temizle." - -msgid "Associate files to OrcaSlicer" -msgstr "Dosyaları OrcaSlicer ile ilişkilendirin" - -msgid "Associate .3mf files to OrcaSlicer" -msgstr ".3mf dosyalarını OrcaSlicer ile ilişkilendirin" - -msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" -msgstr "" -"Etkinleştirilirse, OrcaSlicer'ı .3mf dosyalarını açacak varsayılan uygulama " -"olarak ayarlar" - -msgid "Associate .stl files to OrcaSlicer" -msgstr ".stl dosyalarını OrcaSlicer ile ilişkilendirin" - -msgid "If enabled, sets OrcaSlicer as default application to open .stl files" -msgstr "" -"Etkinleştirilirse OrcaSlicer'ı .stl dosyalarını açmak için varsayılan " -"uygulama olarak ayarlar" - -msgid "Associate .step/.stp files to OrcaSlicer" -msgstr ".step/.stp dosyalarını OrcaSlicer ile ilişkilendirin" - -msgid "If enabled, sets OrcaSlicer as default application to open .step files" -msgstr "" -"Etkinleştirilirse, OrcaSlicer'ı .step dosyalarını açmak için varsayılan " -"uygulama olarak ayarlar" - -msgid "Online Models" -msgstr "Çevrimiçi Modeller" - -msgid "Show online staff-picked models on the home page" -msgstr "Personelin çevrimiçi olarak seçtiği modelleri ana sayfada göster" - -msgid "Maximum recent projects" -msgstr "Maksimum yeni proje" - -msgid "Maximum count of recent projects" -msgstr "Maksimum yeni proje sayısı" - -msgid "Clear my choice on the unsaved projects." -msgstr "Kaydedilmemiş projelerdeki seçimimi temizle." - -msgid "Auto-Backup" -msgstr "Otomatik yedekleme" - -msgid "" -"Backup your project periodically for restoring from the occasional crash." -msgstr "" -"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi düzenli " -"aralıklarla yedekleyin." - -msgid "every" -msgstr "her" - -msgid "The peroid of backup in seconds." -msgstr "Saniye cinsinden yedekleme periyodu." - -msgid "Downloads" -msgstr "İndirilenler" - -msgid "Dark Mode" -msgstr "Karanlık Mod" - -msgid "Enable Dark mode" -msgstr "Karanlık modu etkinleştir" - -msgid "Develop mode" -msgstr "Geliştirici Modu" - -msgid "Skip AMS blacklist check" -msgstr "AMS kara liste kontrolünü atla" - -msgid "Home page and daily tips" -msgstr "Ana sayfa ve günlük ipuçları" - -msgid "Show home page on startup" -msgstr "Başlangıçta ana sayfayı göster" - -msgid "Sync settings" -msgstr "Ayarları senkronize et" - -msgid "User sync" -msgstr "Kullanıcı senkronizasyonu" - -msgid "Preset sync" -msgstr "Ön ayar senkronizasyonu" - -msgid "Preferences sync" -msgstr "Tercihler senkronizasyonu" - -msgid "View control settings" -msgstr "Kontrol ayarlarını görüntüle" - -msgid "Rotate of view" -msgstr "Görünümü döndür" - -msgid "Move of view" -msgstr "Görüşün taşınması" - -msgid "Zoom of view" -msgstr "Görünümü yakınlaştır" - -msgid "Other" -msgstr "Diğer" - -msgid "Mouse wheel reverses when zooming" -msgstr "Yakınlaştırma sırasında fare tekerleği ters dönüyor" - -msgid "Enable SSL(MQTT)" -msgstr "SSL'yi etkinleştir(MQTT)" - -msgid "Enable SSL(FTP)" -msgstr "SSL'yi (FTP) etkinleştir" - -msgid "Internal developer mode" -msgstr "Dahili geliştirici modu" - -msgid "Log Level" -msgstr "Günlük Düzeyi" - -msgid "fatal" -msgstr "kritik" - -msgid "error" -msgstr "hata" - -msgid "warning" -msgstr "uyarı" - -msgid "info" -msgstr "bilgi" - -msgid "debug" -msgstr "hata ayıklama" - -msgid "trace" -msgstr "iz" - -msgid "Host Setting" -msgstr "Yazıcı Ayarı" - -msgid "DEV host: api-dev.bambu-lab.com/v1" -msgstr "DEV ana bilgisayarı: api-dev.bambu-lab.com/v1" - -msgid "QA host: api-qa.bambu-lab.com/v1" -msgstr "QA ana bilgisayarı: api-qa.bambu-lab.com/v1" - -msgid "PRE host: api-pre.bambu-lab.com/v1" -msgstr "ÖN ana bilgisayar: api-pre.bambu-lab.com/v1" - -msgid "Product host" -msgstr "Ürün ana bilgisayarı" - -msgid "debug save button" -msgstr "hata ayıklama kaydet düğmesi" - -msgid "save debug settings" -msgstr "hata ayıklama ayarlarını kaydet" - -msgid "DEBUG settings have saved successfully!" -msgstr "DEBUG ayarları başarıyla kaydedildi!" - -msgid "Switch cloud environment, Please login again!" -msgstr "Bulut ortamını değiştirin, lütfen tekrar giriş yapın!" - -msgid "System presets" -msgstr "Sistem ön ayarları" - -msgid "User presets" -msgstr "Kullanıcı ön ayarları" - -msgid "Incompatible presets" -msgstr "Uyumsuz ön ayarlar" - -msgid "AMS filaments" -msgstr "AMS filamentler" - -msgid "Click to pick filament color" -msgstr "Filament rengini seçmek için tıklayın" - -msgid "Please choose the filament colour" -msgstr "Lütfen filament rengini seçin" - -msgid "Add/Remove presets" -msgstr "Ön ayarları ekle/kaldır" - -msgid "Edit preset" -msgstr "Ön ayarı düzenle" - -msgid "Project-inside presets" -msgstr "Proje içi ön ayarlar" - -msgid "Add/Remove filaments" -msgstr "Filament Ekle/Kaldır" - -msgid "Add/Remove materials" -msgstr "Materyal Ekle/Kaldır" - -msgid "Add/Remove printers" -msgstr "Yazıcı Ekle/Kaldır" - -msgid "Incompatible" -msgstr "Uyumsuz" - -msgid "The selected preset is null!" -msgstr "Seçilen ön ayar boş!" - -msgid "Plate name" -msgstr "Plaka adı" - -msgid "Same as Global Print Sequence" -msgstr "Global Yazdırma Sırasıyla aynı" - -msgid "Print sequence" -msgstr "Yazdırma sırası" - -msgid "Customize" -msgstr "Özelleştirmek" - -msgid "First layer filament sequence" -msgstr "İlk katman filament dizisi" - -msgid "Same as Global Plate Type" -msgstr "Global Plaka Tipi ile aynı" - -msgid "Same as Global Bed Type" -msgstr "Global Yatak Tipi ile aynı" - -msgid "By Layer" -msgstr "Katmana göre" - -msgid "By Object" -msgstr "Nesneye göre" - -msgid "Accept" -msgstr "Kabul etmek" - -msgid "Log Out" -msgstr "Çıkış" - -msgid "Slice all plate to obtain time and filament estimation" -msgstr "Zaman ve filament tahminini elde etmek için tüm plakayı dilimleyin" - -msgid "Packing project data into 3mf file" -msgstr "Proje verilerini 3mf dosyasına paketleme" - -msgid "Uploading 3mf" -msgstr "3mf yükleniyor" - -msgid "Jump to model publish web page" -msgstr "Model yayınlama web sayfasına git" - -msgid "Note: The preparation may takes several minutes. Please be patiant." -msgstr "Not: Hazırlık birkaç dakika sürebilir. Lütfen sabırlı olun." - -msgid "Publish" -msgstr "Yayınla" - -msgid "Publish was cancelled" -msgstr "Yayınlama iptal edildi" - -msgid "Slicing Plate 1" -msgstr "Dilimleme Plakası 1" - -msgid "Packing data to 3mf" -msgstr "Verileri 3mf'ye paketle" - -msgid "Jump to webpage" -msgstr "Web sayfasına atla" - -#, c-format, boost-format -msgid "Save %s as" -msgstr "%s'yi farklı kaydet" - -msgid "User Preset" -msgstr "Kullanıcı Ön Ayarı" - -msgid "Project Inside Preset" -msgstr "Ön ayar içerisinde proje" - -msgid "Name is invalid;" -msgstr "Geçersiz isim;" - -msgid "illegal characters:" -msgstr "yasadışı karakterler:" - -msgid "illegal suffix:" -msgstr "yasadışı sonek:" - -msgid "Name is unavailable." -msgstr "Ad kullanılamıyor." - -msgid "Overwrite a system profile is not allowed" -msgstr "Sistem profilinin üzerine yazmaya izin verilmiyor" - -#, boost-format -msgid "Preset \"%1%\" already exists." -msgstr "\"%1%\" ön ayarı zaten mevcut." - -#, boost-format -msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "\"%1%\" ön ayarı zaten mevcut ve mevcut yazıcıyla uyumlu değil." - -msgid "Please note that saving action will replace this preset" -msgstr "Kaydetme eyleminin bu ön ayarın yerini alacağını lütfen unutmayın" - -msgid "The name is not allowed to be empty." -msgstr "Ad alanı boş bırakılamaz." - -msgid "The name is not allowed to start with space character." -msgstr "Adın boşluk karakteriyle başlamasına izin verilmez." - -msgid "The name is not allowed to end with space character." -msgstr "Adın boşluk karakteriyle bitmesine izin verilmez." - -msgid "The name cannot be the same as a preset alias name." -msgstr "Ad, önceden ayarlanmış bir takma adla aynı olamaz." - -msgid "Save preset" -msgstr "Ön ayarı kaydet" - -msgctxt "PresetName" -msgid "Copy" -msgstr "Kopyala" - -#, boost-format -msgid "Printer \"%1%\" is selected with preset \"%2%\"" -msgstr "\"%1%\" yazıcısı \"%2%\" ön ayarıyla seçildi" - -#, boost-format -msgid "Please choose an action with \"%1%\" preset after saving." -msgstr "Lütfen kaydettikten sonra \"%1%\" ön ayarına sahip bir eylem seçin." - -msgid "For \"%1%\", change \"%2%\" to \"%3%\" " -msgstr "\"%1%\" için \"%2%\"yi \"%3%\" olarak değiştirin " - -#, boost-format -msgid "For \"%1%\", add \"%2%\" as a new preset" -msgstr "\"%1%\" için \"%2%\"yi yeni ön ayar olarak ekleyin" - -msgid "Simply switch to \"%1%\"" -msgstr "Kolayca \"%1%\"e geçin" - -msgid "Task canceled" -msgstr "Görev iptal edildi" - -msgid "(LAN)" -msgstr "(LAN)" - -msgid "My Device" -msgstr "Cihazım" - -msgid "Other Device" -msgstr "Diğer Cihaz" - -msgid "Online" -msgstr "Çevrimiçi" - -msgid "Input access code" -msgstr "Erişim kodunu girin" - -msgid "Can't find my devices?" -msgstr "Cihazlarımı bulamıyor musunuz?" - -msgid "Log out successful." -msgstr "Çıkış Başarılı." - -msgid "Offline" -msgstr "Çevrimdışı" - -msgid "Busy" -msgstr "Meşgul" - -msgid "Bambu Cool Plate" -msgstr "Bambu Soğuk Plaka" - -msgid "PLA Plate" -msgstr "PLA Plaka" - -msgid "Bamabu Engineering Plate" -msgstr "Bamabu Mühendislik Plakası" - -msgid "Bamabu High Temperature Plate" -msgstr "Bamabu Yüksek Sıcaklık Plakası" - -msgid "Send print job to" -msgstr "Yazdırma işini şuraya gönder" - -msgid "Refresh" -msgstr "Yenile" - -msgid "Bed Leveling" -msgstr "Yatak Tesviyesi" - -msgid "Flow Dynamics Calibration" -msgstr "Akış Dinamiği Kalibrasyonu" - -msgid "Can't connect to the printer" -msgstr "Yazıcıya bağlanılamıyor" - -msgid "send completed" -msgstr "gönderme tamamlandı" - -msgid "Error code" -msgstr "Hata kodu" - -msgid "Check the status of current system services" -msgstr "Mevcut sistem hizmetlerinin durumunu kontrol edin" - -msgid "Printer local connection failed, please try again." -msgstr "Yazıcının yerel bağlantısı başarısız oldu, lütfen tekrar deneyin." - -msgid "No login account, only printers in LAN mode are displayed" -msgstr "Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" - -msgid "Connecting to server" -msgstr "Sunucuya baglanıyor" - -msgid "Synchronizing device information" -msgstr "Cihaz bilgileri senkronize ediliyor" - -msgid "Synchronizing device information time out" -msgstr "Cihaz bilgilerinin senkronize edilmesi zaman aşımı" - -msgid "Cannot send the print job when the printer is updating firmware" -msgstr "Yazıcı ürün yazılımını güncellerken yazdırma işi gönderilemiyor" - -msgid "" -"The printer is executing instructions. Please restart printing after it ends" -msgstr "" -"Yazıcı talimatları yürütüyor. Lütfen bittikten sonra yazdırmayı yeniden " -"başlatın" - -msgid "The printer is busy on other print job" -msgstr "Yazıcı başka bir yazdırma işiyle meşgul" - -#, c-format, boost-format -msgid "" -"Filament %s exceeds the number of AMS slots. Please update the printer " -"firmware to support AMS slot assignment." -msgstr "" -"%s filamanı AMS yuvası sayısını aşıyor. AMS yuvası atamasını desteklemek için " -"lütfen yazıcının ürün yazılımını güncelleyin." - -msgid "" -"Filament exceeds the number of AMS slots. Please update the printer firmware " -"to support AMS slot assignment." -msgstr "" -"Filament, AMS yuvalarının sayısını aşıyor. AMS yuvası atamasını desteklemek " -"için lütfen yazıcının ürün yazılımını güncelleyin." - -msgid "" -"Filaments to AMS slots mappings have been established. You can click a " -"filament above to change its mapping AMS slot" -msgstr "" -"AMS slot eşlemelerine yönelik filamanlar oluşturulmuştur. Eşleme AMS yuvasını " -"değiştirmek için yukarıdaki filamentlerden birine tıklayabilirsiniz" - -msgid "" -"Please click each filament above to specify its mapping AMS slot before " -"sending the print job" -msgstr "" -"Yazdırma işini göndermeden önce eşleme AMS yuvasını belirtmek için lütfen " -"yukarıdaki her filamente tıklayın" - -#, c-format, boost-format -msgid "" -"Filament %s does not match the filament in AMS slot %s. Please update the " -"printer firmware to support AMS slot assignment." -msgstr "" -"%s filamanı, %s AMS yuvasındaki filamanla eşleşmiyor. AMS yuvası atamasını " -"desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." - -msgid "" -"Filament does not match the filament in AMS slot. Please update the printer " -"firmware to support AMS slot assignment." -msgstr "" -"Filament, AMS yuvasındaki filamanla eşleşmiyor. AMS yuvası atamasını " -"desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." - -msgid "" -"The printer firmware only supports sequential mapping of filament => AMS slot." -msgstr "" -"Yazıcı ürün yazılımı yalnızca filament => AMS yuvasının sıralı eşlemesini " -"destekler." - -msgid "An SD card needs to be inserted before printing." -msgstr "Yazdırmadan önce bir SD kartın takılması gerekir." - -msgid "The selected printer is incompatible with the chosen printer presets." -msgstr "Seçilen yazıcı, seçilen yazıcı ön ayarlarıyla uyumlu değil." - -msgid "An SD card needs to be inserted to record timelapse." -msgstr "Hızlandırılmış çekim kaydetmek için bir SD kartın takılması gerekir." - -msgid "" -"Cannot send the print job to a printer whose firmware is required to get " -"updated." -msgstr "" -"Yazdırma işi, ürün yazılımının güncellenmesi gereken bir yazıcıya " -"gönderilemiyor." - -msgid "Cannot send the print job for empty plate" -msgstr "Boş kalıp için yazdırma işi gönderilemiyor" - -msgid "This printer does not support printing all plates" -msgstr "Bu yazıcı tüm kalıpların yazdırılmasını desteklemiyor" - -msgid "Errors" -msgstr "Hatalar" - -msgid "Please check the following:" -msgstr "Lütfen aşağıdakileri kontrol edin:" - -msgid "" -"The printer type selected when generating G-Code is not consistent with the " -"currently selected printer. It is recommended that you use the same printer " -"type for slicing." -msgstr "" -"G Kodu oluşturulurken seçilen yazıcı türü mevcut seçili yazıcıyla tutarlı " -"değil. Dilimleme için aynı yazıcı tipini kullanmanız tavsiye edilir." - -msgid "%s is not supported by AMS." -msgstr "%s AMS tarafından desteklenmiyor." - -msgid "" -"There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to start " -"printing." -msgstr "" -"AMS eşlemelerinde bazı bilinmeyen filamentler var. Lütfen bunların gerekli " -"filamentler olup olmadığını kontrol edin. Sorun yoksa, yazdırmayı başlatmak " -"için \"Onayla\"ya basın." - -msgid "" -"Please click the confirm button if you still want to proceed with printing." -msgstr "" -"Hala yazdırma işlemine devam etmek istiyorsanız lütfen onayla düğmesine " -"tıklayın." - -msgid "" -"Connecting to the printer. Unable to cancel during the connection process." -msgstr "Yazıcıya bağlanılıyor. Bağlantı işlemi sırasında iptal edilemiyor." - -msgid "Preparing print job" -msgstr "Yazdırma için hazırlanıyor" - -msgid "Abnormal print file data. Please slice again" -msgstr "Anormal yazdırma dosyası verileri. Lütfen tekrar dilimleyin" - -msgid "The name length exceeds the limit." -msgstr "Ad uzunluğu sınırı aşıyor." - -msgid "" -"Caution to use! Flow calibration on Textured PEI Plate may fail due to the " -"scattered surface." -msgstr "" -"Kullanmaya dikkat edin! Dokulu PEI Plakasındaki akış kalibrasyonu, dağınık " -"yüzey nedeniyle başarısız olabilir." - -msgid "Automatic flow calibration using Micro Lidar" -msgstr "Mikro Lidar kullanarak otomatik akış kalibrasyonu" - -msgid "Modifying the device name" -msgstr "Cihaz adını değiştir" - -msgid "Send to Printer SD card" -msgstr "Yazıcı SD kartına gönder" - -msgid "Cannot send the print task when the upgrade is in progress" -msgstr "Yükseltme devam ederken yazdırma görevi gönderilemiyor" - -msgid "An SD card needs to be inserted before send to printer SD card." -msgstr "Yazıcı SD kartına gönderilmeden önce bir SD kartın takılması gerekir." - -msgid "The printer is required to be in the same LAN as Bambu Studio." -msgstr "Yazıcının Bambu Studio ile aynı LAN'da olması gerekir." - -msgid "The printer does not support sending to printer SD card." -msgstr "Yazıcı, yazıcı SD kartına gönderimi desteklemiyor." - -msgid "Failed to create socket" -msgstr "Soket oluşturulamadı" - -msgid "Failed to connect socket" -msgstr "Soket bağlanamadı" - -msgid "Failed to publish login request" -msgstr "Giriş isteği yayınlanamadı" - -msgid "Get ticket from device timeout" -msgstr "Cihaz zaman aşımından bilet al" - -msgid "Get ticket from server timeout" -msgstr "Sunucu zaman aşımından bilet al" - -msgid "Failed to post ticket to server" -msgstr "Sunucuya bilet gönderilemedi" - -msgid "Failed to parse login report reason" -msgstr "Giriş raporu nedeni ayrıştırılamadı" - -msgid "Receive login report timeout" -msgstr "Giriş raporu alma zaman aşımı" - -msgid "Unknown Failure" -msgstr "Bilinmeyen Arıza" - -msgid "Log in printer" -msgstr "Yazıcıda oturum aç" - -msgid "Would you like to log in this printer with current account?" -msgstr "Bu yazıcıda geçerli hesapla oturum açmak ister misiniz?" - -msgid "Check the reason" -msgstr "Sebebini kontrol edin" - -msgid "Read and accept" -msgstr "Oku ve kabul et" - -msgid "Terms and Conditions" -msgstr "Şartlar ve koşullar" - -msgid "" -"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " -"device, please read the termsand conditions.By clicking to agree to use your " -"Bambu Lab device, you agree to abide by the Privacy Policyand Terms of " -"Use(collectively, the \"Terms\"). If you do not comply with or agree to the " -"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." -msgstr "" -"Bir Bambu Lab cihazı satın aldığınız için teşekkür ederiz.Bambu Lab " -"cihazınızı kullanmadan önce lütfen şartlar ve koşulları okuyun.Bambu Lab " -"cihazınızı kullanmayı kabul etmek için tıklayarak, Gizlilik Politikasına ve " -"Kullanım Koşullarına (topluca \"Şartlar\" olarak anılacaktır) uymayı kabul " -"etmiş olursunuz. \"). Bambu Lab Gizlilik Politikasına uymuyorsanız veya bu " -"Politikayı kabul etmiyorsanız lütfen Bambu Lab ekipmanlarını ve hizmetlerini " -"kullanmayın." - -msgid "and" -msgstr "ve" - -msgid "Privacy Policy" -msgstr "Gizlilik Politikası" - -msgid "We ask for your help to improve everyone's printer" -msgstr "Herkesin yazıcısını geliştirmek için yardımınızı istiyoruz" - -msgid "Statement about User Experience Improvement Program" -msgstr "Kullanıcı Deneyimini İyileştirme Programına İlişkin Açıklama" - -#, c-format, boost-format -msgid "" -"In the 3D Printing community, we learn from each other's successes and " -"failures to adjust our own slicing parameters and settings. %s follows the " -"same principle and uses machine learning to improve its performance from the " -"successes and failures of the vast number of prints by our users. We are " -"training %s to be smarter by feeding them the real-world data. If you are " -"willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will not " -"collect any Personal Data by which an individual can be identified directly " -"or indirectly, including without limitation names, addresses, payment " -"information, or phone numbers. By enabling this service, you agree to these " -"terms and the statement about Privacy Policy." -msgstr "" -"3D Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı " -"düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. " -"%s aynı prensibi takip ediyor ve kullanıcılarımızın yaptığı çok sayıda " -"baskının başarı ve başarısızlıklarından performansını artırmak için " -"yazıcıöğrenimini kullanıyor. %s'yi gerçek dünya verileriyle besleyerek daha " -"akıllı olmaları için eğitiyoruz. İsterseniz bu hizmet, hata günlüklerinizden " -"ve kullanım günlüklerinizden, Gizlilik Politikasında açıklanan bilgileri de " -"içerebilecek bilgilere erişecektir. İsimler, adresler, ödeme bilgileri veya " -"telefon numaraları dahil ancak bunlarla sınırlı olmamak üzere, bir bireyin " -"doğrudan veya dolaylı olarak tanımlanmasını sağlayacak hiçbir Kişisel Veri " -"toplamayacağız. Bu hizmeti etkinleştirerek bu şartları ve Gizlilik " -"Politikasına ilişkin beyanı kabul etmiş olursunuz." - -msgid "Statement on User Experience Improvement Plan" -msgstr "Kullanıcı Deneyimi İyileştirme Planına İlişkin Açıklama" - -msgid "Log in successful." -msgstr "Giriş başarılı." - -msgid "Log out printer" -msgstr "Yazıcıdan çıkış yap" - -msgid "Would you like to log out the printer?" -msgstr "Yazıcıdaki oturumu kapatmak ister misiniz?" - -msgid "Please log in first." -msgstr "Lütfen önce giriş yapın." - -msgid "There was a problem connecting to the printer. Please try again." -msgstr "Yazıcıya bağlanırken bir sorun oluştu. Lütfen tekrar deneyin." - -msgid "Failed to log out." -msgstr "Oturum kapatılamadı." - -#. TRN "Save current Settings" -msgid "Save current %s" -msgstr "Mevcut %s kaydet" - -msgid "Delete this preset" -msgstr "Bu ön ayarı sil" - -msgid "Search in preset" -msgstr "Ön ayarda ara" - -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." - -msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the model " -"without prime tower. Are you sure you want to disable prime tower?" -msgstr "" -"Sorunsuz timeplace için Prime Tower gereklidir. Prime tower olmayan modelde " -"kusurlar olabilir. Prime tower'ı devre dışı bırakmak istediğinizden emin " -"misiniz?" - -msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the model " -"without prime tower. Do you want to enable prime tower?" -msgstr "" -"Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower " -"olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor " -"musunuz?" - -msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller " -"support volume but weaker strength.\n" -"We recommend using it with: 0 interface layers, 0 top distance, 2 walls." -msgstr "" -"Daha küçük destek hacmine ancak daha zayıf güce sahip deneysel bir tarz olan " -"\"Tree Slim\" ekledik.\n" -"Şunlarla kullanmanızı öneririz: 0 arayüz katmanı, 0 üst mesafe, 2 duvar." - -msgid "" -"Change these settings automatically? \n" -"Yes - Change these settings automatically\n" -"No - Do not change these settings for me" -msgstr "" -"Bu ayarlar otomatik olarak değiştirilsin mi?\n" -"Evet - Bu ayarları otomatik olarak değiştir\n" -"Hayır - Bu ayarları benim için değiştirme" - -msgid "" -"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or using " -"support materials on interface." -msgstr "" -"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en az " -"2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " -"malzemeleri kullanılması." - -msgid "" -"When using support material for the support interface, We recommend the " -"following settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable " -"independent support layer height" -msgstr "" -"Destek arayüzü için destek materyali kullanırken aşağıdaki ayarları " -"öneriyoruz:\n" -"0 üst z mesafesi, 0 arayüz aralığı, eş merkezli desen ve bağımsız destek " -"katmanı yüksekliğini devre dışı bırakma" - -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 "" -"Araç başlığı olmadan timelapse kaydederken, bir \"Timelapse Wipe Tower\" " -"eklenmesi önerilir.\n" -"Yapı plakasının boş konumuna sağ tıklayın ve \"İlkel Ekle\" -> \"Timelapse " -"Temizleme Kulesi\" seçeneğini seçin." - -msgid "Line width" -msgstr "Katman Genişliği" - -msgid "Seam" -msgstr "Dikiş (Seam)" - -msgid "Precision" -msgstr "Hassasiyet" - -msgid "Wall generator" -msgstr "Duvarlar" - -msgid "Walls" -msgstr "Duvarlar" - -msgid "Top/bottom shells" -msgstr "Alt / Üst Katmanlar" - -msgid "Initial layer speed" -msgstr "Başlangıç Katmanı" - -msgid "Other layers speed" -msgstr "Diğer Katmanlar" - -msgid "Overhang speed" -msgstr "Çıkıntılar (Overhang)" - -msgid "" -"This is the speed for various overhang degrees. Overhang degrees are " -"expressed as a percentage of line width. 0 speed means no slowing down for " -"the overhang degree range and wall speed is used" -msgstr "" -"Bu, çeşitli sarkma dereceleri için hızdır. Çıkıntı dereceleri çizgi " -"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı için " -"yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" - -msgid "Bridge" -msgstr "Köprü" - -msgid "Set speed for external and internal bridges" -msgstr "Harici ve dahili köprüler için hızı ayarlayın" - -msgid "Travel speed" -msgstr "Seyahat hızı" - -msgid "Acceleration" -msgstr "Hızlanma" - -msgid "Jerk(XY)" -msgstr "Jerk(XY)" - -msgid "Raft" -msgstr "Raft" - -msgid "Support filament" -msgstr "Destek filamenti" - -msgid "Prime tower" -msgstr "Prime kulesi" - -msgid "Special mode" -msgstr "Özel mod" - -msgid "G-code output" -msgstr "G kodu çıktısı" - -msgid "Post-processing Scripts" -msgstr "İşlem Sonrası Komut Dosyaları" - -msgid "Frequent" -msgstr "Sıklıkla" - -#, c-format, boost-format -msgid "" -"Following line %s contains reserved keywords.\n" -"Please remove it, or will beat G-code visualization and printing time " -"estimation." -msgid_plural "" -"Following lines %s contain reserved keywords.\n" -"Please remove them, or will beat G-code visualization and printing time " -"estimation." -msgstr[0] "" -"Aşağıdaki %s satırı ayrılmış anahtar kelimeler içeriyor.\n" -"Lütfen onu kaldırın, aksi takdirde G kodu görselleştirmesini ve yazdırma " -"süresi tahminini geçeceksiniz." -msgstr[1] "" -"Aşağıdaki satırlar %s ayrılmış anahtar sözcükler içeriyor.\n" -"Lütfen bunları kaldırın, aksi takdirde G kodu görselleştirmesini ve yazdırma " -"süresi tahminini geçeceksiniz." - -msgid "Reserved keywords found" -msgstr "Ayrılmış anahtar kelimeler bulundu" - -msgid "Setting Overrides" -msgstr "Ayarların Üzerine Yazma" - -msgid "Retraction" -msgstr "Geri çekme" - -msgid "Basic information" -msgstr "Temel bilgiler" - -msgid "Recommended nozzle temperature" -msgstr "Önerilen Nozul sıcaklığı" - -msgid "Recommended nozzle temperature range of this filament. 0 means no set" -msgstr "" -"Bu filamentin önerilen Nozul sıcaklığı aralığı. 0 ayar yok anlamına gelir" - -msgid "Recommended temperature range" -msgstr "Önerilen sıcaklık aralığı" - -msgid "Print temperature" -msgstr "Yazdırma sıcaklığı" - -msgid "Nozzle" -msgstr "Nozul" - -msgid "Nozzle temperature when printing" -msgstr "Yazdırma sırasında nozul sıcaklığı" - -msgid "Cool plate" -msgstr "Soğuk plaka" - -msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament does " -"not support to print on the Cool Plate" -msgstr "" -"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool Plate " -"üzerine yazdırmayı desteklemediği anlamına gelir" - -msgid "Engineering plate" -msgstr "Mühendislik plakası" - -msgid "" -"Bed temperature when engineering plate is installed. Value 0 means the " -"filament does not support to print on the Engineering Plate" -msgstr "" -"Mühendislik plakası takıldığında yatak sıcaklığı. Değer 0, filamentin " -"Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" - -msgid "High Temp Plate" -msgstr "Tabla" - -msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" -msgstr "" -"Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin " -"Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" - -msgid "Textured PEI Plate" -msgstr "Dokulu PEI Plaka" - -msgid "" -"Bed temperature when Textured PEI Plate is installed. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" -msgstr "" -"Dokulu PEI Plaka takıldığında yatak sıcaklığı. 0 Değeri, filamentin Dokulu " -"PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" - -msgid "Volumetric speed limitation" -msgstr "Hacimsel hız sınırlaması" - -msgid "Cooling" -msgstr "Soğutma" - -msgid "Cooling for specific layer" -msgstr "Belirli katman için soğutma" - -msgid "Part cooling fan" -msgstr "Parça soğutma fanı" - -msgid "Min fan speed threshold" -msgstr "Minimum fan hızı" - -msgid "" -"Part cooling fan speed will start to run at min speed when the estimated " -"layer time is no longer than the layer time in setting. When layer time is " -"shorter than threshold, fan speed is interpolated between the minimum and " -"maximum fan speed according to layer printing time" -msgstr "" -"Tahmini katman süresi ayardaki katman süresinden uzun olmadığında parça " -"soğutma fanı hızı minimum hızda çalışmaya başlayacaktır. Katman süresi " -"eşikten kısa olduğunda fan hızı, katman yazdırma süresine göre minimum ve " -"maksimum fan hızı arasında enterpole edilir" - -msgid "Max fan speed threshold" -msgstr "Maksimum fan hızı" - -msgid "" -"Part cooling fan speed will be max when the estimated layer time is shorter " -"than the setting value" -msgstr "" -"Tahmini katman süresi ayar değerinden kısa olduğunda parça soğutma fanı hızı " -"maksimum olacaktır" - -msgid "Auxiliary part cooling fan" -msgstr "Yardımcı parça soğutma fanı" - -msgid "Filament start G-code" -msgstr "Filament başlangıç G kodu" - -msgid "Filament end G-code" -msgstr "Filament bitiş G kodu" - -msgid "Multimaterial" -msgstr "Çoklu Malzeme" - -msgid "Wipe tower parameters" -msgstr "Silme kulesi parametreleri" - -msgid "Toolchange parameters with single extruder MM printers" -msgstr "Tek ekstrüderli MM yazıcılarda araç değiştirme parametreleri" - -msgid "Ramming settings" -msgstr "Sıkıştırma ayarları" - -msgid "Toolchange parameters with multi extruder MM printers" -msgstr "Çoklu ekstrüder MM yazıcılarda araç değiştirme parametreleri" - -msgid "Printable space" -msgstr "Tabla Ayarı" - -msgid "Cooling Fan" -msgstr "Soğutucu fan" - -msgid "Fan speed-up time" -msgstr "Fan hızlanma süresi" - -msgid "Extruder Clearance" -msgstr "Ekstrüder Boşluğu" - -msgid "Accessory" -msgstr "Aksesuar" - -msgid "Machine gcode" -msgstr "YazıcıG-kod" - -msgid "Machine start G-code" -msgstr "Yazıcı başlangıç G-kod" - -msgid "Machine end G-code" -msgstr "Yazıcı bitiş G-kod" - -msgid "Before layer change G-code" -msgstr "Katman değişimi öncesi G-kod" - -msgid "Layer change G-code" -msgstr "Katman değişimi G-kod" - -msgid "Change filament G-code" -msgstr "Filament değişimi G-kod" - -msgid "Pause G-code" -msgstr "Duraklatma G-Kod" - -msgid "Template Custom G-code" -msgstr "Şablon Özel G-kod" - -msgid "Motion ability" -msgstr "Hareket" - -msgid "Normal" -msgstr "Normal" - -msgid "Speed limitation" -msgstr "Hız sınırlaması" - -msgid "Acceleration limitation" -msgstr "Hızlanma sınırlaması" - -msgid "Jerk limitation" -msgstr "Jerk sınırlaması" - -msgid "Single extruder multimaterial setup" -msgstr "Tek ekstrüder çoklu malzeme kurulumu" - -msgid "Wipe tower" -msgstr "Silme kulesi" - -msgid "Single extruder multimaterial parameters" -msgstr "Tek ekstrüder çoklu malzeme parametreleri" - -msgid "Layer height limits" -msgstr "Katman yüksekliği sınırları" - -msgid "Lift Z Enforcement" -msgstr "Z Kaldırma Uygulaması" - -msgid "Retraction when switching material" -msgstr "Malzemeyi değiştirirken geri çekme" - -msgid "" -"The Wipe option is not available when using the Firmware Retraction mode.\n" -"\n" -"Shall I disable it in order to enable Firmware Retraction?" -msgstr "" -"Firmware Geri Çekme modunu kullanırken Temizleme seçeneği kullanılamaz.\n" -"\n" -"Firmware Geri Çekmeyi etkinleştirmek için bunu devre dışı bırakmalı mıyım?" - -msgid "Firmware Retraction" -msgstr "Firmware Geri Çekme" - -msgid "Detached" -msgstr "Söküldü" - -msgid "Following preset will be deleted too." -msgid_plural "Following presets will be deleted too." -msgstr[0] "Aşağıdaki ön ayar da silinecektir." -msgstr[1] "Aşağıdaki ön ayarlar da silinecektir." - -#, boost-format -msgid "Are you sure to %1% the selected preset?" -msgstr "Seçilen ön ayarı %1% yaptığınızdan emin misiniz?" - -#. TRN Remove/Delete -msgid "%1% Preset" -msgstr "%1% Ön Ayar" - -msgid "All" -msgstr "Tümü" - -msgid "Set" -msgstr "Ayarla" - -msgid "Click to reset current value and attach to the global value." -msgstr "Geçerli değeri sıfırlamak ve genel değere eklemek için tıklayın." - -msgid "Click to drop current modify and reset to saved value." -msgstr "" -"Geçerli değişikliği bırakmak ve kaydedilen değere sıfırlamak için tıklayın." - -msgid "Process Settings" -msgstr "İşlem Ayarları" - -msgid "Undef" -msgstr "Tanımsız" - -msgid "Unsaved Changes" -msgstr "Kaydedilmemiş Değişiklikler" - -msgid "Discard or Keep changes" -msgstr "Değişiklikleri Çıkart veya Sakla" - -msgid "Old Value" -msgstr "Eski Değer" - -msgid "New Value" -msgstr "Yeni değer" - -msgid "Transfer" -msgstr "Aktar" - -msgid "Don't save" -msgstr "Kaydetme" - -msgid "Discard" -msgstr "Çıkart" - -msgid "Click the right mouse button to display the full text." -msgstr "Tam metni görüntülemek için farenin sağ tuşuna tıklayın." - -msgid "All changes will not be saved" -msgstr "Tüm değişiklikler kaydedilmeyecek" - -msgid "All changes will be discarded." -msgstr "Tüm değişiklikler iptal edilecek." - -msgid "Save the selected options." -msgstr "Seçilen seçenekleri kaydedin." - -msgid "Keep the selected options." -msgstr "Seçilen seçenekleri sakla." - -msgid "Transfer the selected options to the newly selected preset." -msgstr "Seçilen seçenekleri yeni seçilen ön ayara aktarın." - -#, boost-format -msgid "" -"Save the selected options to preset \n" -"\"%1%\"." -msgstr "" -"Seçilen seçenekleri ön ayara kaydedin\n" -"\"%1%\"." - -#, boost-format -msgid "" -"Transfer the selected options to the newly selected preset \n" -"\"%1%\"." -msgstr "" -"Seçilen seçenekleri yeni seçilen ön ayara aktarın\n" -"\"%1%\"." - -#, boost-format -msgid "Preset \"%1%\" contains the following unsaved changes:" -msgstr "\"%1%\" ön ayarı aşağıdaki kaydedilmemiş değişiklikleri içeriyor:" - -#, boost-format -msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it contains " -"the following unsaved changes:" -msgstr "" -"Ön ayar \"%1%\", yeni yazıcı profiliyle uyumlu değil ve aşağıdaki " -"kaydedilmemiş değişiklikleri içeriyor:" - -#, boost-format -msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it contains " -"the following unsaved changes:" -msgstr "" -"Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki " -"kaydedilmemiş değişiklikleri içeriyor:" - -#, boost-format -msgid "" -"You have changed some settings of preset \"%1%\". \n" -"Would you like to keep these changed settings (new value) after switching " -"preset?" -msgstr "" -"\"%1%\" ön ayarının bazı ayarlarını değiştirdiniz.\n" -"Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) korumak " -"ister misiniz?" - -msgid "" -"You have changed some preset settings. \n" -"Would you like to keep these changed settings (new value) after switching " -"preset?" -msgstr "" -"Bazı ön ayar ayarlarını değiştirdiniz.\n" -"Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) korumak " -"ister misiniz?" - -msgid "Extruders count" -msgstr "Ekstruder sayısı" - -msgid "General" -msgstr "Genel" - -msgid "Capabilities" -msgstr "Yetenekler" - -msgid "Select presets to compare" -msgstr "Karşılaştırılacak ön ayarları seçin" - -msgid "Show all presets (including incompatible)" -msgstr "Tüm ön ayarları göster (uyumsuz olanlar dahil)" - -msgid "Add File" -msgstr "Dosya Ekle" - -msgid "Set as cover" -msgstr "Kapak olarak ayarla" - -msgid "Cover" -msgstr "Kapak" - -#, boost-format -msgid "The name \"%1%\" already exists." -msgstr "\"%1%\" adı zaten mevcut." - -msgid "Basic Info" -msgstr "Temel bilgi" - -msgid "Pictures" -msgstr "Resimler" - -msgid "Bill of Materials" -msgstr "Malzeme Listesi" - -msgid "Assembly Guide" -msgstr "Montaj Kılavuzu" - -msgid "Author" -msgstr "Yazar" - -msgid "Model Name" -msgstr "Model adı" - -msgid "%s Update" -msgstr "%s Güncelleme" - -msgid "A new version is available" -msgstr "Yeni bir sürüm mevcut" - -msgid "Configuration update" -msgstr "Yapılandırma güncellemesi" - -msgid "A new configuration package available, Do you want to install it?" -msgstr "Yeni bir konfigürasyon paketi mevcut. Kurmak istiyor musunuz?" - -msgid "Description:" -msgstr "Açıklama:" - -msgid "Configuration incompatible" -msgstr "Yapılandırma uyumsuz" - -msgid "the configuration package is incompatible with current application." -msgstr "yapılandırma paketi mevcut uygulamayla uyumlu değil." - -#, c-format, boost-format -msgid "" -"The configuration package is incompatible with current application.\n" -"%s will update the configuration package, Otherwise it won't be able to start" -msgstr "" -"Yapılandırma paketi mevcut uygulamayla uyumlu değil.\n" -"%s yapılandırma paketini güncelleyecek, Aksi halde başlatılamayacak" - -#, c-format, boost-format -msgid "Exit %s" -msgstr "%s'den çık" - -msgid "the Configuration package is incompatible with current APP." -msgstr "yapılandırma paketi mevcut APP ile uyumlu değil." - -msgid "Configuration updates" -msgstr "Yapılandırma güncellemeleri" - -msgid "No updates available." -msgstr "Güncelleme mevcut değil." - -msgid "The configuration is up to date." -msgstr "Yapılandırma güncel." - -msgid "Ramming customization" -msgstr "Sıkıştırma özelleştirme" - -msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the unloaded " -"filament so it does not prevent insertion of the new filament and can itself " -"be reinserted later. This phase is important and different materials can " -"require different extrusion speeds to get the good shape. For this reason, " -"the extrusion rates during ramming are adjustable.\n" -"\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." -msgstr "" -"Sıkıştırma, tek ekstrüderli bir MM yazıcıda takım değişiminden hemen önce " -"yapılan hızlı ekstrüzyonu ifade eder. Amacı, yeni filamentin " -"yerleştirilmesini engellememesi ve daha sonra yeniden yerleştirilebilmesi " -"için boşaltılmış filamentin ucunu düzgün bir şekilde şekillendirmektir. Bu " -"aşama önemlidir ve farklı malzemeler iyi bir şekil elde etmek için farklı " -"ekstrüzyon hızları gerektirebilir. Bu nedenle, sıkıştırma sırasındaki " -"ekstrüzyon hızları ayarlanabilir.\n" -"\n" -"Bu uzman düzeyinde bir ayardır, yanlış ayarlama muhtemelen sıkışmalara, " -"ekstrüder tekerleğinin filamente sürtünmesine vb. yol açacaktır." - -msgid "Total ramming time" -msgstr "Toplam sıkıştırma süresi" - -msgid "s" -msgstr "s" - -msgid "Total rammed volume" -msgstr "Toplam sıkıştırılmış hacim" - -msgid "Ramming line width" -msgstr "Sıkıştırma hattı genişliği" - -msgid "Ramming line spacing" -msgstr "Sıkıştırma hattı aralığı" - -msgid "Auto-Calc" -msgstr "Otomatik Hesaplama" - -msgid "Flushing volumes for filament change" -msgstr "Filament değişimi için temizleme hacmi" - -msgid "Multiplier" -msgstr "Çarpan" - -msgid "Flushing volume (mm³) for each filament pair." -msgstr "Her filament çifti için yıkama hacmi (mm³)." - -#, c-format, boost-format -msgid "Suggestion: Flushing Volume in range [%d, %d]" -msgstr "Öneri: Yıkama Hacmi [%d, %d] aralığında" - -#, c-format, boost-format -msgid "The multiplier should be in range [%.2f, %.2f]." -msgstr "Çarpan [%.2f, %.2f] aralığında olmalıdır." - -msgid "unloaded" -msgstr "boşaltılmış" - -msgid "loaded" -msgstr "yüklenmiş" - -msgid "Filament #" -msgstr "Filament #" - -msgid "From" -msgstr "İtibaren" - -msgid "To" -msgstr "İle" - -msgid "Login" -msgstr "Giriş yap" - -msgid "The configuration package is changed in previous Config Guide" -msgstr "Yapılandırma paketi önceki Yapılandırma Kılavuzu'nda değiştirildi" - -msgid "Configuration package changed" -msgstr "Yapılandırma paketi değiştirildi" - -msgid "Toolbar" -msgstr "Araç Çubuğu" - -msgid "Objects list" -msgstr "Nesne listesi" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "STL/STEP/3MF/OBJ/AMF dosyalarından geometri verilerini içe aktarın" - -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" - -msgid "Copy to clipboard" -msgstr "Panoya kopyala" - -msgid "Paste from clipboard" -msgstr "Panodan yapıştır" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "3Dconnexion cihazları ayarları iletişim kutusunu Göster/Gizle" - -msgid "Show keyboard shortcuts list" -msgstr "Klavye kısayolları listesini göster" - -msgid "Global shortcuts" -msgstr "Genel kısayollar" - -msgid "Rotate View" -msgstr "Görüntüyü döndür" - -msgid "Pan View" -msgstr "Pan Görünümü" - -msgid "Mouse wheel" -msgstr "Fare tekerleği" - -msgid "Zoom View" -msgstr "Zoom Görünümü" - -msgid "Shift+A" -msgstr "Shift+A" - -msgid "Shift+R" -msgstr "Shift+R" - -msgid "" -"Auto orientates selected objects or all objects.If there are selected " -"objects, it just orientates the selected ones.Otherwise, it will orientates " -"all objects in the current disk." -msgstr "" -"Seçilen nesneleri veya tüm nesneleri otomatik olarak yönlendirir. Seçilen " -"nesneler varsa, yalnızca seçilenleri yönlendirir. Aksi takdirde, geçerli " -"diskteki tüm nesneleri yönlendirir." - -msgid "Shift+Tab" -msgstr "Shift+Tab" - -msgid "Collapse/Expand the sidebar" -msgstr "Kenar çubuğunu daralt/genişlet" - -msgid "⌘+Any arrow" -msgstr "⌘+Herhangi bir ok" - -msgid "Movement in camera space" -msgstr "Kamera alanında hareket" - -msgid "⌥+Left mouse button" -msgstr "⌥+Sol fare düğmesi" - -msgid "Select a part" -msgstr "Parça seçin" - -msgid "⌘+Left mouse button" -msgstr "⌘+Sol fare düğmesi" - -msgid "Select multiple objects" -msgstr "Birden fazla nesne seç" - -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Herhangi bir yön tuşu" - -msgid "Alt+Left mouse button" -msgstr "Alt+Sol fare düğmesi" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Sol fare düğmesi" - -msgid "Shift+Left mouse button" -msgstr "Shift+Sol fare düğmesi" - -msgid "Select objects by rectangle" -msgstr "Nesneleri dikdörtgene göre seç" - -msgid "Arrow Up" -msgstr "Yukarı ok" - -msgid "Move selection 10 mm in positive Y direction" -msgstr "Seçimi pozitif Y yönünde 10 mm taşı" - -msgid "Arrow Down" -msgstr "Aşağı ok" - -msgid "Move selection 10 mm in negative Y direction" -msgstr "Seçimi negatif Y yönünde 10 mm taşı" - -msgid "Arrow Left" -msgstr "Sol Yön Tuşu" - -msgid "Move selection 10 mm in negative X direction" -msgstr "Seçimi negatif X yönünde 10 mm taşı" - -msgid "Arrow Right" -msgstr "Sağ Yön Tuşu" - -msgid "Move selection 10 mm in positive X direction" -msgstr "Seçimi pozitif X yönünde 10 mm taşı" - -msgid "Shift+Any arrow" -msgstr "Shift+Herhangi bir ok tuşu" - -msgid "Movement step set to 1 mm" -msgstr "Hareket adımı 1 mm'ye ayarlandı" - -msgid "Esc" -msgstr "Esc" - -msgid "keyboard 1-9: set filament for object/part" -msgstr "klavye 1-9: nesne/parça için filamanı ayarlayın" - -msgid "Camera view - Default" -msgstr "Kamera görünümü - Varsayılan" - -msgid "Camera view - Top" -msgstr "Kamera görünümü - Üst" - -msgid "Camera view - Bottom" -msgstr "Kamera görünümü - Alt" - -msgid "Camera view - Front" -msgstr "Kamera görünümü - Ön" - -msgid "Camera view - Behind" -msgstr "Kamera görünümü - Arka" - -msgid "Camera Angle - Left side" -msgstr "Kamera Açısı - Sol" - -msgid "Camera Angle - Right side" -msgstr "Kamera Açısı - Sağ" - -msgid "Select all objects" -msgstr "Tüm nesneleri seç" - -msgid "Gizmo move" -msgstr "Gizmo hareket" - -msgid "Gizmo scale" -msgstr "Gizmo ölçek" - -msgid "Gizmo rotate" -msgstr "Gizmo döndürme" - -msgid "Gizmo cut" -msgstr "Gizmo kesim" - -msgid "Gizmo Place face on bed" -msgstr "Gizmo Yüzünüzü yatağa yerleştirin" - -msgid "Gizmo SLA support points" -msgstr "Gizmo SLA destek noktaları" - -msgid "Gizmo FDM paint-on seam" -msgstr "Gizmo FDM boyalı dikiş" - -msgid "Swtich between Prepare/Prewview" -msgstr "Hazırlama/Önizleme arasında geçiş yap" - -msgid "Plater" -msgstr "Plakacı" - -msgid "Move: press to snap by 1mm" -msgstr "Hareket Ettir: 1 mm kadar yaslamak için basın" - -msgid "⌘+Mouse wheel" -msgstr "⌘+Fare tekerleği" - -msgid "Support/Color Painting: adjust pen radius" -msgstr "Destek/Renkli Boyama: kalem yarıçapını ayarlayın" - -msgid "⌥+Mouse wheel" -msgstr "⌥+Fare tekerleği" - -msgid "Support/Color Painting: adjust section position" -msgstr "Destek/Renkli Boyama: bölüm konumunu ayarlayın" - -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Fare tekerleği" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Fare tekerleği" - -msgid "Gizmo" -msgstr "Gizmo" - -msgid "Set extruder number for the objects and parts" -msgstr "Nesneler ve parçalar için ekstruder numarasını ayarlayın" - -msgid "Delete objects, parts, modifiers " -msgstr "Nesneleri, parçaları, değiştiricileri silin " - -msgid "Space" -msgstr "Boşluk" - -msgid "Select the object/part and press space to change the name" -msgstr "Nesneyi/parçayı seçin ve adını değiştirmek için boşluk tuşuna basın" - -msgid "Mouse click" -msgstr "Fare tıklaması" - -msgid "Select the object/part and mouse click to change the name" -msgstr "Nesneyi/parçayı seçin ve adını değiştirmek için fareye tıklayın" - -msgid "Objects List" -msgstr "Nesne Listesi" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Dikey kaydırıcı - Etkin başparmağı yukarı hareket ettir" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Dikey kaydırıcı - Etkin başparmağı Aşağı hareket ettir" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Yatay kaydırıcı - Etkin başparmağı sola taşı" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Yatay kaydırıcı - Etkin başparmağı sağa taşı" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Dikey kaydırıcının tek katman modunu açma/kapama" - -msgid "On/Off g-code window" -msgstr "G-kodu penceresini aç/kapat" - -msgid "Move slider 5x faster" -msgstr "Kaydırıcıyı 5 kat daha hızlı hareket ettirin" - -msgid "Shift+Mouse wheel" -msgstr "Shift+Fare tekerleği" - -msgid "Release Note" -msgstr "Sürüm notu" - -#, c-format, boost-format -msgid "version %s update information :" -msgstr "sürüm %s güncelleme bilgileri:" - -msgid "Network plug-in update" -msgstr "Ağ eklentisi güncellemesi" - -msgid "" -"Click OK to update the Network plug-in when Bambu Studio launches next time." -msgstr "" -"Bambu Studio bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek " -"için Tamam'a tıklayın." - -#, c-format, boost-format -msgid "A new Network plug-in(%s) available, Do you want to install it?" -msgstr "Yeni bir Ağ eklentisi(%s) mevcut, Yüklemek istiyor musunuz?" - -msgid "New version of Bambu Studio" -msgstr "Bambu Studio'nun yeni versiyonu" - -msgid "Don't remind me of this version again" -msgstr "Bana bir daha bu versiyonu hatırlatma" - -msgid "LAN Connection Failed (Sending print file)" -msgstr "LAN Bağlantısı Başarısız (Yazdırma dosyası gönderiliyor)" - -msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." -msgstr "" -"Adım 1, lütfen Bambu Studio ile yazıcınızın aynı LAN'da olduğunu doğrulayın." - -msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " -"on your printer, please correct them." -msgstr "" -"Adım 2, aşağıdaki IP ve Erişim Kodu yazıcınızdaki gerçek değerlerden " -"farklıysa lütfen bunları düzeltin." - -msgid "IP" -msgstr "IP" - -msgid "Access Code" -msgstr "Giriş kodu" - -msgid "Where to find your printer's IP and Access Code?" -msgstr "Yazıcınızın IP'sini ve Erişim Kodunu nerede bulabilirsiniz?" - -msgid "Error: IP or Access Code are not correct" -msgstr "Hata: IP veya Erişim Kodu doğru değil" - -msgid "Model:" -msgstr "Model:" - -msgid "Serial:" -msgstr "Seri:" - -msgid "Version:" -msgstr "Sürüm:" - -msgid "Update firmware" -msgstr "Ürün yazılımını güncelle" - -msgid "Printing" -msgstr "Baskı" - -msgid "Idle" -msgstr "Boşta" - -msgid "Latest version" -msgstr "Son sürüm" - -msgid "Updating" -msgstr "Güncelleniyor" - -msgid "Updating failed" -msgstr "Güncelleme başarısız oldu" - -msgid "Updating successful" -msgstr "Güncelleme başarılı" - -msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not turn " -"off the power while the printer is updating." -msgstr "" -"Güncellemek istediğinizden emin misiniz? Bu yaklaşık 10 dakika sürecektir. " -"Yazıcı güncellenirken gücü kapatmayın." - -msgid "" -"An important update was detected and needs to be run before printing can " -"continue. Do you want to update now? You can also update later from 'Upgrade " -"firmware'." -msgstr "" -"Önemli bir güncelleme algılandı ve yazdırmanın devam edebilmesi için " -"çalıştırılması gerekiyor. Şimdi güncellemek istiyor musunuz? Daha sonra " -"'Firmware'i yükselt' seçeneğinden de güncelleme yapabilirsiniz." - -msgid "" -"The firmware version is abnormal. Repairing and updating are required before " -"printing. Do you want to update now? You can also update later on printer or " -"update next time starting the studio." -msgstr "" -"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme yapılması " -"gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra yazıcıda " -"güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda güncelleyebilirsiniz." - -msgid "Extension Board" -msgstr "Uzatma Kartı" - -msgid "Saving objects into the 3mf failed." -msgstr "Nesneleri 3mf'ye kaydetme işlemi başarısız oldu." - -msgid "Only Windows 10 is supported." -msgstr "Yalnızca Windows 10 desteklenmektedir." - -msgid "Failed to initialize the WinRT library." -msgstr "WinRT kitaplığı başlatılamadı." - -msgid "Exporting objects" -msgstr "Nesneleri dışa aktarma" - -msgid "Failed loading objects." -msgstr "Nesneler yüklenemedi." - -msgid "Repairing object by Windows service" -msgstr "Nesneyi Windows hizmetiyle onarma" - -msgid "Repair failed." -msgstr "Onarım başarısız oldu." - -msgid "Loading repaired objects" -msgstr "Onarılan nesnelerin yüklenmesi" - -msgid "Exporting 3mf file failed" -msgstr "3mf dosyasını dışa aktarma işlemi başarısız oldu" - -msgid "Import 3mf file failed" -msgstr "3mf dosyasını içe aktarma başarısız oldu" - -msgid "Repaired 3mf file does not contain any object" -msgstr "Onarılan 3mf dosyası herhangi bir nesne içermiyor" - -msgid "Repaired 3mf file contains more than one object" -msgstr "Onarılan 3mf dosyası birden fazla nesne içeriyor" - -msgid "Repaired 3mf file does not contain any volume" -msgstr "Onarılan 3mf dosyası herhangi bir birim içermiyor" - -msgid "Repaired 3mf file contains more than one volume" -msgstr "Onarılan 3mf dosyası birden fazla birim içeriyor" - -msgid "Repair finished" -msgstr "Onarım tamamlandı" - -msgid "Repair canceled" -msgstr "Onarım iptal edildi" - -#, boost-format -msgid "Copying of file %1% to %2% failed: %3%" -msgstr "%1% dosyasının %2% dosyasına kopyalanması başarısız oldu: %3%" - -msgid "Need to check the unsaved changes before configuration updates." -msgstr "" -"Yapılandırma güncellemelerinden önce kaydedilmemiş değişiklikleri kontrol " -"etmeniz gerekir." - -msgid "Configuration package updated to " -msgstr "Yapılandırma paketi şu şekilde güncellendi: " - -msgid "Open G-code file:" -msgstr "G kodu dosyasını açın:" - -msgid "" -"One object has empty initial layer and can't be printed. Please Cut the " -"bottom or enable supports." -msgstr "" -"Bir nesnenin başlangıç katmanı boş ve yazdırılamıyor. Lütfen alt kısmı kesin " -"veya destekleri etkinleştirin." - -#, boost-format -msgid "Object can't be printed for empty layer between %1% and %2%." -msgstr "%1% ile %2% arasındaki boş katman için nesne yazdırılamıyor." - -msgid "Object: %1%" -msgstr "Nesne: %1%" - -msgid "" -"Maybe parts of the object at these height are too thin, or the object has " -"faulty mesh" -msgstr "" -"Belki nesnenin bu yükseklikteki bazı kısımları çok incedir veya nesnenin ağı " -"hatalı olabilir" - -msgid "No object can be printed. Maybe too small" -msgstr "Hiçbir nesne yazdırılamaz. Belki çok küçük" - -msgid "" -"Failed to generate gcode for invalid custom G-code.\n" -"\n" -msgstr "" -"Geçersiz özel G kodu için gcode oluşturulamadı.\n" -"\n" - -msgid "Please check the custom G-code or use the default custom G-code." -msgstr "" -"Lütfen özel G kodunu kontrol edin veya varsayılan özel G kodunu kullanın." - -#, boost-format -msgid "Generating G-code: layer %1%" -msgstr "G kodu oluşturuluyor: katman %1%" - -msgid "Inner wall" -msgstr "İç duvar" - -msgid "Outer wall" -msgstr "Dış duvar" - -msgid "Overhang wall" -msgstr "Çıkıntı duvarı" - -msgid "Sparse infill" -msgstr "Dolgu" - -msgid "Internal solid infill" -msgstr "İç katı dolgu" - -msgid "Top surface" -msgstr "Üst Katman" - -msgid "Bottom surface" -msgstr "Alt yüzey" - -msgid "Internal Bridge" -msgstr "İç Köprü" - -msgid "Gap infill" -msgstr "Boşluk doldurma" - -msgid "Skirt" -msgstr "Etek" - -msgid "Support interface" -msgstr "Destek arayüzü" - -msgid "Support transition" -msgstr "Destek geçişi" - -msgid "Multiple" -msgstr "Çoklu" - -#, boost-format -msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " -msgstr "%1% çizgi genişliği hesaplanamadı. \"%2%\" değeri alınamıyor " - -msgid "undefined error" -msgstr "bilinmeyen hata" - -msgid "too many files" -msgstr "çok fazla dosya" - -msgid "file too large" -msgstr "dosya çok büyük" - -msgid "unsupported method" -msgstr "desteklenmeyen yöntem" - -msgid "unsupported encryption" -msgstr "desteklenmeyen şifreleme" - -msgid "unsupported feature" -msgstr "desteklenmeyen özellik" - -msgid "failed finding central directory" -msgstr "merkezi dizin bulunamadı" - -msgid "not a ZIP archive" -msgstr "dosya ZIP arşivi değil" - -msgid "invalid header or corrupted" -msgstr "geçersiz başlık veya bozuk" - -msgid "unsupported multidisk" -msgstr "desteklenmeyen çoklu disk" - -msgid "decompression failed" -msgstr "dekompresyon başarısız oldu" - -msgid "compression failed" -msgstr "sıkıştırma başarısız oldu" - -msgid "unexpected decompressed size" -msgstr "beklenmedik sıkıştırılmış boyut" - -msgid "CRC check failed" -msgstr "CRC kontrolü başarısız oldu" - -msgid "unsupported central directory size" -msgstr "desteklenmeyen merkezi dizin boyutu" - -msgid "allocation failed" -msgstr "tahsis başarısız oldu" - -msgid "file open failed" -msgstr "dosya açılamadı" - -msgid "file create failed" -msgstr "dosya oluşturma başarısız oldu" - -msgid "file write failed" -msgstr "dosya yazımı başarısız oldu" - -msgid "file read failed" -msgstr "dosya okuma başarısız oldu" - -msgid "file close failed" -msgstr "dosya kapatılamadı" - -msgid "file seek failed" -msgstr "dosya arama başarısız oldu" - -msgid "file stat failed" -msgstr "dosya istatistikleri başarısız" - -msgid "invalid parameter" -msgstr "geçersiz parametre" - -msgid "invalid filename" -msgstr "geçersiz dosya adı" - -msgid "buffer too small" -msgstr "arabellek çok küçük" - -msgid "internal error" -msgstr "dahili hata" - -msgid "file not found" -msgstr "dosya bulunamadı" - -msgid "archive too large" -msgstr "arşiv çok büyük" - -msgid "validation failed" -msgstr "doğrulama başarısız" - -msgid "write callback failed" -msgstr "geri arama yazma başarısız oldu" - -#, boost-format -msgid "" -"%1% is too close to exclusion area, there may be collisions when printing." -msgstr "" -"%1%, hariç tutma alanına çok yakın; yazdırma sırasında çarpışmalar meydana " -"gelebilir." - -#, boost-format -msgid "%1% is too close to others, and collisions may be caused." -msgstr "%1% diğerlerine çok yakın ve çarpışmalara neden olabilir." - -#, boost-format -msgid "%1% is too tall, and collisions will be caused." -msgstr "%1% çok uzun ve çarpışmalara neden olacak." - -msgid " is too close to others, there may be collisions when printing." -msgstr "" -" başkalarına çok yakınsa, yazdırma sırasında çarpışmalar meydana gelebilir." - -msgid " is too close to exclusion area, there may be collisions when printing." -msgstr "" -" Hariç tutma alanına çok yakın olduğundan yazdırma sırasında çarpışmalar " -"meydana gelebilir." - -msgid "Prime Tower" -msgstr "Başbakan Kulesi" - -msgid " is too close to others, and collisions may be caused.\n" -msgstr " başkalarına çok yakın olduğundan çarpışmalara neden olabilir.\n" - -msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr " dışlama alanına çok yakın ve çarpışmalara neden olacak.\n" - -msgid "" -"Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged during " -"printing" -msgstr "" -"Birlikte büyük sıcaklık farkına sahip birden fazla filament basılamaz. Aksi " -"takdirde baskı sırasında ekstruder ve nozül tıkanabilir veya hasar görebilir" - -msgid "No extrusions under current settings." -msgstr "Mevcut ayarlarda ekstrüzyon yok." - -msgid "" -"Smooth mode of timelapse is not supported when \"by object\" sequence is " -"enabled." -msgstr "" -"\"Nesneye göre\" dizisi etkinleştirildiğinde, hızlandırılmış çekimin yumuşak " -"modu desteklenmez." - -msgid "" -"Please select \"By object\" print sequence to print multiple objects in " -"spiral vase mode." -msgstr "" -"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye " -"göre\" yazdırma sırasını seçin." - -msgid "" -"The spiral vase mode does not work when an object contains more than one " -"materials." -msgstr "Bir nesne birden fazla malzeme içerdiğinde spiral vazo modu çalışmaz." - -msgid "The prime tower is not supported in \"By object\" print." -msgstr "Prime tower, \"Nesneye göre\" yazdırmada desteklenmez." - -msgid "" -"The prime tower is not supported when adaptive layer height is on. It " -"requires that all objects have the same layer height." -msgstr "" -"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm nesnelerin " -"aynı katman yüksekliğine sahip olmasını gerektirir." - -msgid "The prime tower requires \"support gap\" to be multiple of layer height" -msgstr "" -"Ana kule \"destek boşluğunun\" katman yüksekliğinin katı olmasını gerektirir" - -msgid "The prime tower requires that all objects have the same layer heights" -msgstr "" -"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir" - -msgid "" -"The prime tower requires that all objects are printed over the same number of " -"raft layers" -msgstr "" -"Ana kule, tüm nesnelerin aynı sayıda sal katmanı üzerine yazdırılmasını " -"gerektirir" - -msgid "" -"The prime tower requires that all objects are sliced with the same layer " -"heights." -msgstr "" -"Prime tower, tüm nesnelerin aynı katman yüksekliğinde dilimlenmesini " -"gerektirir." - -msgid "" -"The prime tower is only supported if all objects have the same variable layer " -"height" -msgstr "" -"Prime tower yalnızca tüm nesnelerin aynı değişken katman yüksekliğine sahip " -"olması durumunda desteklenir" - -msgid "Too small line width" -msgstr "Çizgi genişliği çok küçük" - -msgid "Too large line width" -msgstr "Çok büyük çizgi genişliği" - -msgid "" -"The prime tower requires that support has the same layer height with object." -msgstr "" -"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip olmalıdır." - -msgid "" -"Organic support tree tip diameter must not be smaller than support material " -"extrusion width." -msgstr "" -"Organik destek ağacı uç çapı, destek malzemesi ekstrüzyon genişliğinden daha " -"küçük olamaz." - -msgid "" -"Organic support branch diameter must not be smaller than 2x support material " -"extrusion width." -msgstr "" -"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 katından " -"daha küçük olamaz." - -msgid "" -"Organic support branch diameter must not be smaller than support tree tip " -"diameter." -msgstr "Organik destek dalı çapı, destek ağacı uç çapından küçük olamaz." - -msgid "" -"Support enforcers are used but support is not enabled. Please enable support." -msgstr "" -"Destek uygulayıcıları kullanılıyor ancak destek etkinleştirilmiyor. Lütfen " -"desteği etkinleştirin." - -msgid "Layer height cannot exceed nozzle diameter" -msgstr "Katman yüksekliği nozül çapını aşamaz" - -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 "" -"Göreceli ekstrüder adreslemesi, kayan nokta doğruluğunun kaybını önlemek için " -"her katmandaki ekstrüder konumunun sıfırlanmasını gerektirir. Layer_gcode'a " -"\"G92 E0\" ekleyin." - -msgid "" -"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " -"absolute extruder addressing." -msgstr "" -"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder adreslemeyle " -"uyumsuzdu." - -msgid "" -"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " -"extruder addressing." -msgstr "" -"Layer_gcode'da mutlak ekstruder adreslemeyle uyumlu olmayan \"G92 E0\" " -"bulundu." - -#, c-format, boost-format -msgid "Plate %d: %s does not support filament %s" -msgstr "Plaka %d: %s, %s filamentini desteklemiyor" - -msgid "Generating skirt & brim" -msgstr "Etek ve kenar oluşturma" - -msgid "Exporting G-code" -msgstr "G kodu dışa aktarılıyor" - -msgid "Generating G-code" -msgstr "G kodu oluşturuluyor" - -msgid "Failed processing of the filename_format template." -msgstr "Dosyaadı_format şablonunun işlenmesi başarısız oldu." - -msgid "Printable area" -msgstr "Yazdırılabilir alan" - -msgid "Bed exclude area" -msgstr "Yatak hariç alan" - -msgid "" -"Unprintable area in XY plane. For example, X1 Series printers use the front " -"left corner to cut filament during filament change. The area is expressed as " -"polygon by points in following format: \"XxY, XxY, ...\"" -msgstr "" -"XY düzleminde yazdırılamayan alan. Örneğin X1 Serisi yazıcılar, filament " -"değişimi sırasında filamanı kesmek için sol ön köşeyi kullanır. Alan şu " -"formatta noktalarla çokgen olarak ifade edilir: \"XxY, XxY, ...\"" - -msgid "Bed custom texture" -msgstr "Özel plaka dokusu" - -msgid "Bed custom model" -msgstr "Özel plaka modeli" - -msgid "Elephant foot compensation" -msgstr "Fil ayağı telafi oranı" - -msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot effect" -msgstr "" -"Fil ayağı etkisini telafi etmek için baskı plakasındaki ilk katmanı küçültün" - -msgid "" -"Slicing height for each layer. Smaller layer height means more accurate and " -"more printing time" -msgstr "" -"Her katman için dilimleme yüksekliği. Daha küçük katman yüksekliği, daha " -"doğru ve daha fazla baskı süresi anlamına gelir" - -msgid "Printable height" -msgstr "Yazdırılabilir yükseklik" - -msgid "Maximum printable height which is limited by mechanism of printer" -msgstr "" -"Yazıcının mekanizması tarafından sınırlanan maksimum yazdırılabilir yükseklik" - -msgid "Printer preset names" -msgstr "Yazıcı ön ayar adları" - -msgid "Hostname, IP or URL" -msgstr "Ana bilgisayar adı, IP veya URL" - -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" -msgstr "" -"Slic3r, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " -"URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " -"arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " -"biçimdeki URL'ye girilmesiyle erişilebilir: https://username:password@your-" -"octopi-address/" - -msgid "Device UI" -msgstr "Cihaz kullanıcı arayüzü" - -msgid "" -"Specify the URL of your device user interface if it's not same as print_host" -msgstr "" -"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini belirtin" - -msgid "API Key / Password" -msgstr "API Anahtarı / Şifre" - -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" -"Slic3r, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." - -msgid "Name of the printer" -msgstr "Yazıcı adı" - -msgid "HTTPS CA File" -msgstr "HTTPS CA Dosyası" - -msgid "" -"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository is " -"used." -msgstr "" -"HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika " -"dosyası belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu " -"kullanılır." - -msgid "User" -msgstr "Kullanıcı" - -msgid "Password" -msgstr "Şifre" - -msgid "Ignore HTTPS certificate revocation checks" -msgstr "HTTPS sertifikası iptal kontrollerini yoksay" - -msgid "" -"Ignore HTTPS certificate revocation checks in case of missing or offline " -"distribution points. One may want to enable this option for self signed " -"certificates if connection fails." -msgstr "" -"Eksik veya çevrimdışı dağıtım noktaları olması durumunda HTTPS sertifikası " -"iptal kontrollerini göz ardı edin. Bağlantı başarısız olursa, kendinden " -"imzalı sertifikalar için bu seçeneğin etkinleştirilmesi istenebilir." - -msgid "Names of presets related to the physical printer" -msgstr "Fiziksel yazıcıyla ilgili ön ayarların adları" - -msgid "Authorization Type" -msgstr "Yetki Türü" - -msgid "API key" -msgstr "API anahtarı" - -msgid "HTTP digest" -msgstr "HTTP özeti" - -msgid "Avoid crossing wall" -msgstr "Duvar geçişinden kaçın" - -msgid "Detour and avoid to travel across wall which may cause blob on surface" -msgstr "Yüzeyde lekelenmeye neden olabilecek duvar boyunca ilerlemekten kaçın" - -msgid "Avoid crossing wall - Max detour length" -msgstr "Duvarı geçmekten kaçının - Maksimum servis yolu uzunluğu" - -msgid "" -"Maximum detour distance for avoiding crossing wall. Don't detour if the " -"detour distance is large than this value. Detour length could be specified " -"either as an absolute value or as percentage (for example 50%) of a direct " -"travel path. Zero to disable" -msgstr "" -"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma mesafesi " -"bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer olarak " -"veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak belirtilebilir. " -"Devre dışı bırakmak için sıfır" - -msgid "mm or %" -msgstr "mm veya %" - -msgid "Other layers" -msgstr "Diğer katmanlar" - -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Cool Plate" -msgstr "" -"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " -"Cool Plate üzerine yazdırmayı desteklemediği anlamına gelir" - -msgid "°C" -msgstr "°C" - -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Engineering Plate" -msgstr "" -"İlk katman dışındaki katmanlar için yatak sıcaklığı. Değer 0, filamentin " -"Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" - -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the High Temp Plate" -msgstr "" -"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " -"Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" - -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Textured PEI Plate" -msgstr "" -"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " -"Dokulu PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" - -msgid "Initial layer" -msgstr "Başlangıç katmanı" - -msgid "Initial layer bed temperature" -msgstr "İlk katman yatak sıcaklığı" - -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Cool Plate" -msgstr "" -"İlk katmanın yatak sıcaklığı. 0 değeri, filamentin Cool Plate üzerine " -"yazdırmayı desteklemediği anlamına gelir" - -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Engineering Plate" -msgstr "" -"İlk katmanın yatak sıcaklığı. Değer 0, filamentin Mühendislik Plakasına " -"yazdırmayı desteklemediği anlamına gelir" - -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the High Temp Plate" -msgstr "" -"İlk katmanın yatak sıcaklığı. 0 değeri, filamentin Yüksek Sıcaklık Plakasına " -"yazdırmayı desteklemediği anlamına gelir" - -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Textured PEI Plate" -msgstr "" -"İlk katmanın yatak sıcaklığı. 0 Değeri, filamentin Dokulu PEI Plaka üzerine " -"yazdırmayı desteklemediği anlamına gelir" - -msgid "Bed types supported by the printer" -msgstr "Yazıcının desteklediği yatak türleri" - -msgid "Cool Plate" -msgstr "Soğuk Plaka" - -msgid "Engineering Plate" -msgstr "Mühendislik Plakası" - -msgid "First layer print sequence" -msgstr "İlk katman yazdırma sırası" - -msgid "This G-code is inserted at every layer change before lifting z" -msgstr "Bu G kodu, z'yi kaldırmadan önce her katman değişikliğinde eklenir" - -msgid "Bottom shell layers" -msgstr "Alt katmanlar" - -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 "" -"Bu, alt yüzey katmanı da dahil olmak üzere alt kabuğun katı katmanlarının " -"sayısıdır. Bu değerle hesaplanan kalınlık alt kabuk kalınlığından ince " -"olduğunda alt kabuk katmanları artırılacaktır" - -msgid "Bottom shell thickness" -msgstr "Alt katman kalınlığı" - -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 shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by bottom " -"shell layers" -msgstr "" -"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " -"dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " -"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " -"ayarın devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk " -"katmanları tarafından belirlendiği anlamına gelir" - -msgid "Force cooling for overhang and bridge" -msgstr "Çıkıntı ve köprüler için soğutmayı zorla" - -msgid "" -"Enable this option to optimize part cooling fan speed for overhang and bridge " -"to get better cooling" -msgstr "" -"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma fanı " -"hızını optimize etmek amacıyla bu seçeneği etkinleştirin" - -msgid "Fan speed for overhang" -msgstr "Çıkıntılar için fan hızı" - -msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang wall " -"which has large overhang degree. Forcing cooling for overhang and bridge can " -"get better quality for these part" -msgstr "" -"Çıkıntı derecesi büyük olan köprü veya çıkıntılı duvara baskı yaparken parça " -"soğutma fanını bu hızda olmaya zorlayın. Çıkıntı ve köprü için soğutmayı " -"zorlamak, bu parça için daha iyi kalite elde edilmesini sağlayabilir" - -msgid "Cooling overhang threshold" -msgstr "Çıkıntı soğutması" - -#, c-format -msgid "" -"Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width of " -"the line without support from lower layer. 0% means forcing cooling for all " -"outer wall no matter how much overhang degree" -msgstr "" -"Yazdırılan parçanın çıkıntı derecesi bu değeri aştığında soğutma fanını " -"belirli bir hıza zorlar. Alt katmandan destek almadan çizginin ne kadar " -"genişlediğini gösteren yüzde olarak ifade edilir. 0, çıkıntı derecesi ne " -"kadar olursa olsun tüm dış duvar için soğutmayı zorlamak anlamına gelir" - -msgid "Bridge infill direction" -msgstr "Köprü dolgu açısı" - -msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for " -"external bridges. Use 180°for zero angle." -msgstr "" -"Köprüleme açısı geçersiz kılma. Sıfıra bırakılırsa köprüleme açısı otomatik " -"olarak hesaplanacaktır. Aksi halde dış köprüler için sağlanan açı " -"kullanılacaktır. Sıfır açı için 180°'yi kullanın." - -msgid "Bridge density" -msgstr "Köprü dolgu yoğunluğu" - -msgid "Density of external bridges. 100% means solid bridge. Default is 100%." -msgstr "" -"Dış köprülerin yoğunluğu. %100 sağlam köprü anlamına gelir. Varsayılan " -"%100'dür." - -msgid "Bridge flow" -msgstr "Köprülerde akış oranı" - -msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" -msgstr "" -"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu değeri " -"biraz azaltın (örneğin 0,9)" - -msgid "Top surface flow ratio" -msgstr "Üst katı dolgu akış oranı" - -msgid "" -"This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" -msgstr "" -"Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir yüzey " -"elde etmek için biraz azaltabilirsiniz" - -msgid "Bottom surface flow ratio" -msgstr "Alt katı dolgu akış oranı" - -msgid "This factor affects the amount of material for bottom solid infill" -msgstr "Bu faktör alt katı dolgu için malzeme miktarını etkiler" - -msgid "Precise wall(experimental)" -msgstr "Hassas duvar (deneysel)" - -msgid "" -"Improve shell precision by adjusting outer wall spacing. This also improves " -"layer consistency." -msgstr "" -"Dış duvar aralığını ayarlayarak kabuk hassasiyetini artırın. Bu aynı zamanda " -"katman tutarlılığını da artırır." - -msgid "Only one wall on top surfaces" -msgstr "Üst yüzeylerde yalnızca bir duvar" - -msgid "" -"Use only one wall on flat top surface, to give more space to the top infill " -"pattern" -msgstr "" -"Üst dolgu desenine daha fazla yer açmak için düz üst yüzeyde yalnızca bir " -"duvar kullanın" - -msgid "One wall threshold" -msgstr "Tek duvar eşiği" - -#, c-format, 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 is you have some thin features " -"on the next layer, like letters. Set this setting to 0 to remove these " -"artifacts." -msgstr "" -"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 is you have some thin features " -"on the next layer, like letters. Set this setting to 0 to remove these " -"artifacts." - -msgid "Only one wall on first layer" -msgstr "İlk katmanda yalnızca bir duvar" - -msgid "" -"Use only one wall on first layer, to give more space to the bottom infill " -"pattern" -msgstr "" -"Alt dolgu desenine daha fazla yer açmak için ilk katmanda yalnızca bir duvar " -"kullanın" - -msgid "Extra perimeters on overhangs" -msgstr "Çıkıntılarda ekstra çevre (perimeter)" - -msgid "" -"Create additional perimeter paths over steep overhangs and areas where " -"bridges cannot be anchored. " -msgstr "" -"Dik çıkıntılar ve köprülerin sabitlenemediği alanlar üzerinde ek çevre " -"yolları (perimeter) oluşturun. " - -msgid "Classic mode" -msgstr "Klasik mod" - -msgid "Enable this option to use classic mode" -msgstr "Klasik modu kullanmak için bu seçeneği etkinleştirin" - -msgid "Slow down for overhang" -msgstr "Çıkıntılarda yavaşla" - -msgid "Enable this option to slow printing down for different overhang degree" -msgstr "" -"Farklı sarkma derecelerinde yazdırmayı yavaşlatmak için bu seçeneği " -"etkinleştirin" - -msgid "mm/s or %" -msgstr "mm/s veya %" - -msgid "External" -msgstr "Harici" - -msgid "Speed of bridge and completely overhang wall" -msgstr "Köprü hızı ve tamamen sarkan duvar" - -msgid "mm/s" -msgstr "mm/s" - -msgid "Internal" -msgstr "Dahili" - -msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." -msgstr "" -"Dahili köprünün hızı. Değer yüzde olarak ifade edilirse köprü_hızına göre " -"hesaplanacaktır. Varsayılan değer %150'dir." - -msgid "Brim width" -msgstr "Kenar genişliği" - -msgid "Distance from model to the outermost brim line" -msgstr "Modelden en dış kenar çizgisine kadar olan mesafe" - -msgid "Brim type" -msgstr "Kenar tipi" - -msgid "" -"This controls the generation of the brim at outer and/or inner side of " -"models. Auto means the brim width is analysed and calculated automatically." -msgstr "" -"Bu, modellerin dış ve/veya iç kısmındaki Kenar oluşumunu kontrol eder. " -"Otomatik, kenar genişliğinin otomatik olarak analiz edilip hesaplandığı " -"anlamına gelir." - -msgid "Brim-object gap" -msgstr "Kenar-nesne boşluğu" - -msgid "" -"A gap between innermost brim line and object can make brim be removed more " -"easily" -msgstr "" -"En içteki kenar çizgisi ile nesne arasındaki boşluk, kenarlığın daha kolay " -"çıkarılmasını sağlayabilir" - -msgid "Brim ears" -msgstr "Kenar kulakları" - -msgid "Only draw brim over the sharp edges of the model." -msgstr "Kenarları yalnızca modelin keskin kenarlarına çizin." - -msgid "Brim ear max angle" -msgstr "Kenar kulak maksimum açısı" - -msgid "" -"Maximum angle to let a brim ear appear. \n" -"If set to 0, no brim will be created. \n" -"If set to ~180, brim will be created on everything but straight sections." -msgstr "" -"Kenarlı bir kulağın görünmesine izin veren maksimum açı.\n" -"0'a ayarlanırsa kenarlık oluşturulmaz.\n" -"~180'e ayarlanırsa, düz bölümler dışındaki her yerde kenar oluşturulacaktır." - -msgid "Brim ear detection radius" -msgstr "Kenar kulak algılama yarıçapı" - -msgid "" -"The geometry will be decimated before dectecting sharp angles. This parameter " -"indicates the minimum length of the deviation for the decimation.\n" -"0 to deactivate" -msgstr "" -"Keskin açılar tespit edilmeden önce geometrinin büyük bir kısmı yok " -"edilecektir. Bu parametre, ondalık sapmanın minimum uzunluğunu gösterir.\n" -"Devre dışı bırakmak için 0" - -msgid "Compatible machine" -msgstr "Uyumlu makine" - -msgid "upward compatible machine" -msgstr "yukarı doğru uyumlu makine" - -msgid "Compatible machine condition" -msgstr "Uyumlu yazıcıdurumu" - -msgid "Compatible process profiles" -msgstr "Uyumlu süreç profilleri" - -msgid "Compatible process profiles condition" -msgstr "Uyumlu süreç profillerinin durumu" - -msgid "Print sequence, layer by layer or object by object" -msgstr "Yazdırma sırası, katman katman veya nesne nesne" - -msgid "By layer" -msgstr "Katmana göre" - -msgid "By object" -msgstr "Nesneye göre" - -msgid "Slow printing down for better layer cooling" -msgstr "Daha iyi katman soğutması için baskıyı yavaşlat" - -msgid "" -"Enable this option to slow printing speed down to make the final layer time " -"not shorter than the layer time threshold in \"Max fan speed threshold\", so " -"that layer can be cooled for longer time. This can improve the cooling " -"quality for needle and small details" -msgstr "" -"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi eşiğinden " -"kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için bu " -"seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, iğne " -"ve küçük detaylar için soğutma kalitesini artırabilir" - -msgid "Normal printing" -msgstr "Normal Baskı" - -msgid "" -"The default acceleration of both normal printing and travel except initial " -"layer" -msgstr "" -"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan ivmesi" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Default filament profile" -msgstr "Varsayılan filament profili" - -msgid "Default filament profile when switch to this machine profile" -msgstr "Bu yazıcıprofiline geçildiğinde varsayılan filament profili" - -msgid "Default process profile" -msgstr "Varsayılan süreç profili" - -msgid "Default process profile when switch to this machine profile" -msgstr "Bu yazıcıprofiline geçildiğinde varsayılan işlem profili" - -msgid "No cooling for the first" -msgstr "Soğutmayı devre dışı bırak" - -msgid "" -"Close all cooling fan for the first certain layers. Cooling fan of the first " -"layer used to be closed to get better build plate adhesion" -msgstr "" -"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı plakası " -"yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" - -msgid "layers" -msgstr "katmanlar" - -msgid "Don't support bridges" -msgstr "Köprülerde destek olmasın" - -msgid "" -"Don't support the whole bridge area which make support very large. Bridge " -"usually can be printing directly without support if not very long" -msgstr "" -"Desteği çok büyük yapan tüm köprü alanını desteklemeyin. Bridge genellikle " -"çok uzun olmasa da destek olmadan doğrudan yazdırılabilir" - -msgid "Thick bridges" -msgstr "Kalın köprüler" - -msgid "" -"If enabled, bridges are more reliable, can bridge longer distances, but may " -"look worse. If disabled, bridges look better but are reliable just for " -"shorter bridged distances." -msgstr "" -"Etkinleştirilirse köprüler daha güvenilir olur, daha uzun mesafeler arasında " -"köprü kurabilir ancak daha kötü görünebilir. Devre dışı bırakıldığında " -"köprüler daha iyi görünür ancak yalnızca daha kısa köprü mesafeleri için " -"güvenilirdir." - -msgid "Max bridge length" -msgstr "Maksimum köprü uzunluğu" - -msgid "" -"Max 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 "" -"Desteğe ihtiyaç duymayan maksimum köprü uzunluğu. Tüm köprülerin " -"desteklenmesini istiyorsanız bunu 0'a, hiçbir köprünün desteklenmesini " -"istemiyorsanız çok büyük bir değere ayarlayın." - -msgid "End G-code" -msgstr "Bitiş G kodu" - -msgid "End G-code when finish the whole printing" -msgstr "Tüm yazdırmayı tamamladığında çalışacak olan G Kodu" - -msgid "End G-code when finish the printing of this filament" -msgstr "Bu filament ile baskı bittiğinde çalışacak G kodu" - -msgid "Ensure vertical shell thickness" -msgstr "Dikey kabuk kalınlığını onayla" - -msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)" -msgstr "" -"Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına katı " -"dolgu ekleyin (üst + alt katı katmanlar)" - -msgid "Internal bridge support thickness" -msgstr "İç köprü destek kalınlığı" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" -"Etkinleştirilirse, iç köprülerin konturları altında destek halkaları " -"oluşturulacaktır. Bu destek halkaları, özellikle seyrek dolgu yoğunluğu düşük " -"olduğunda, iç köprülerin hava üzerinden çıkmasını önleyebilir ve üst yüzey " -"kalitesini iyileştirebilir. Bu değer, köprünün kalınlığını belirler. destek " -"döngüleri. 0 bu özelliğin devre dışı bırakıldığı anlamına gelir" - -msgid "Top surface pattern" -msgstr "Üst katman deseni" - -msgid "Line pattern of top surface infill" -msgstr "Üst yüzey dolgusunun çizgi deseni" - -msgid "Concentric" -msgstr "Konsantrik" - -msgid "Rectilinear" -msgstr "Doğrusal" - -msgid "Monotonic" -msgstr "Monotonic" - -msgid "Monotonic line" -msgstr "Monotonik çizgi" - -msgid "Aligned Rectilinear" -msgstr "Hizalanmış Doğrusal" - -msgid "Hilbert Curve" -msgstr "Hilbert Eğrisi" - -msgid "Archimedean Chords" -msgstr "Arşimet Akorları" - -msgid "Octagram Spiral" -msgstr "Sekizgen Spiral" - -msgid "Bottom surface pattern" -msgstr "Alt katman deseni" - -msgid "Line pattern of bottom surface infill, not bridge infill" -msgstr "Köprü dolgusu değil, alt yüzey dolgusunun çizgi deseni" - -msgid "Internal solid infill pattern" -msgstr "İç dolgu deseni" - -msgid "" -"Line pattern of internal solid infill. if the detect nattow internal solid " -"infill be enabled, the concentric pattern will be used for the small area." -msgstr "" -"İç katı dolgunun çizgi deseni. doğal iç katı dolguyu tespit etme " -"etkinleştirilirse, küçük alan için eşmerkezli desen kullanılacaktır." - -msgid "" -"Line width of outer wall. If expressed as a %, it will be computed over the " -"nozzle diameter." -msgstr "" -"Dış duvarın çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " -"hesaplanacaktır." - -msgid "" -"Speed of outer wall which is outermost and visible. It's used to be slower " -"than inner wall speed to get better quality." -msgstr "" -"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek için " -"iç duvar hızından daha yavaş olması kullanılır." - -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." - -msgid "Small perimeters threshold" -msgstr "Küçük çevre (perimeter) eşiği" - -msgid "" -"This sets the threshold for small perimeter length. Default threshold is 0mm" -msgstr "Bu, küçük çevre uzunluğu için eşiği belirler. Varsayılan eşik 0 mm'dir" - -msgid "Order of inner wall/outer wall/infil" -msgstr "İç duvar/dış duvar/dolgu sırası" - -msgid "Print sequence of inner wall, outer wall and infill. " -msgstr "İç duvar, dış duvar ve dolgunun yazdırma sırası. " - -msgid "inner/outer/infill" -msgstr "iç/dış/dolgu" - -msgid "outer/inner/infill" -msgstr "dış/iç/dolgu" - -msgid "infill/inner/outer" -msgstr "dolgu/iç/dış" - -msgid "infill/outer/inner" -msgstr "dolgu/dış/iç" - -msgid "inner-outer-inner/infill" -msgstr "iç-dış-iç/dolgu" - -msgid "Height to rod" -msgstr "Çubuğa kadar olan yükseklik" - -msgid "" -"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " -"by-object printing." -msgstr "" -"Nozul ucunun alt çubuğa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " -"önlemek için kullanılır." - -msgid "Height to lid" -msgstr "Kapağa kadar olan yükseklik" - -msgid "" -"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" -"object printing." -msgstr "" -"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı önlemek " -"için kullanılır." - -msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." -msgstr "" -"Ekstruder etrafındaki boşluk yarıçapı. Nesneye göre yazdırmada çarpışmayı " -"önlemek için kullanılır." - -msgid "Extruder Color" -msgstr "Ekstruder Rengi" - -msgid "Only used as a visual help on UI" -msgstr "Yalnızca kullanıcı arayüzünde görsel yardım olarak kullanılır" - -msgid "Extruder offset" -msgstr "Ekstruder Konum" - -msgid "Flow ratio" -msgstr "Akış oranı" - -msgid "" -"The material may have volumetric change after switching between molten state " -"and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 and " -"1.05. Maybe you can tune this value to get nice flat surface when there has " -"slight overflow or underflow" -msgstr "" -"Malzeme, erimiş hal ile kristal hal arasında geçiş yaptıktan sonra hacimsel " -"değişime sahip olabilir. Bu ayar, bu filamanın gcode'daki tüm ekstrüzyon " -"akışını orantılı olarak değiştirir. Önerilen değer aralığı 0,95 ile 1,05 " -"arasındadır. Belki hafif taşma veya taşma olduğunda güzel düz bir yüzey elde " -"etmek için bu değeri ayarlayabilirsiniz" - -msgid "Enable pressure advance" -msgstr "Basınç Avansı (PA)" - -msgid "" -"Enable pressure advance, auto calibration result will be overwriten once " -"enabled." -msgstr "" -"Basınç avansını etkinleştirin; etkinleştirildiğinde otomatik kalibrasyon " -"sonucunun üzerine yazılacaktır." - -msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" -msgstr "Basınç avansı (Klipper) Doğrusal ilerleme faktörü (Marlin)" - -msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, it " -"will be computed over the nozzle diameter." -msgstr "" -"Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % " -"olarak ifade edilirse nozül çapı üzerinden hesaplanacaktır." - -msgid "Keep fan always on" -msgstr "Fanı her zaman açık tut" - -msgid "" -"If enable this setting, part cooling fan will never be stoped and will run at " -"least at minimum speed to reduce the frequency of starting and stoping" -msgstr "" -"Bu ayarı etkinleştirirseniz, parça soğutma fanı hiçbir zaman durdurulmayacak " -"ve başlatma ve durdurma sıklığını azaltmak için en azından minimum hızda " -"çalışacaktır" - -msgid "Layer time" -msgstr "Katman süresi" - -msgid "" -"Part cooling fan will be enabled for layers of which estimated time is " -"shorter than this value. Fan speed is interpolated between the minimum and " -"maximum fan speeds according to layer printing time" -msgstr "" -"Tahmini süresi bu değerden kısa olan katlarda parça soğutma fanı devreye " -"girecektir. Fan hızı, katman yazdırma süresine göre minimum ve maksimum fan " -"hızları arasında enterpole edilir" - -msgid "Default color" -msgstr "Varsayılan renk" - -msgid "Default filament color" -msgstr "Varsayılan filament rengi" - -msgid "Color" -msgstr "Renk" - -msgid "Filament notes" -msgstr "Filament Notları" - -msgid "You can put your notes regarding the filament here." -msgstr "Filament ile ilgili notlarınızı buraya yazabilirsiniz." - -msgid "Required nozzle HRC" -msgstr "Gerekli nozul HRC" - -msgid "" -"Minimum HRC of nozzle required to print the filament. Zero means no checking " -"of nozzle's HRC." -msgstr "" -"Filamenti yazdırmak için gereken minimum HRC nozul. Sıfır, nozulun HRC'sinin " -"kontrol edilmediği anlamına gelir." - -msgid "" -"This setting stands for how much volume of filament can be melted and " -"extruded per second. Printing speed is limited by max volumetric speed, in " -"case of too high and unreasonable speed setting. Can't be zero" -msgstr "" -"Bu ayar, saniyede ne kadar miktarda filamanın eritilip ekstrüde " -"edilebileceğini gösterir. Çok yüksek ve makul olmayan hız ayarı durumunda, " -"yazdırma hızı maksimum hacimsel hız ile sınırlanır. Sıfır olamaz" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Filament load time" -msgstr "Filament yükleme süresi" - -msgid "Time to load new filament when switch filament. For statistics only" -msgstr "" -"Filamenti değiştirdiğinizde yeni filament yükleme zamanı. Yalnızca " -"istatistikler için" - -msgid "Filament unload time" -msgstr "Filament boşaltma süresi" - -msgid "Time to unload old filament when switch filament. For statistics only" -msgstr "" -"Filamenti değiştirdiğinizde eski filamanı boşaltma zamanı. Yalnızca " -"istatistikler için" - -msgid "" -"Filament diameter is used to calculate extrusion in gcode, so it's important " -"and should be accurate" -msgstr "" -"Filament çapı, gcode'da ekstrüzyonu hesaplamak için kullanılır; bu nedenle " -"önemlidir ve doğru olmalıdır" - -msgid "Shrinkage" -msgstr "Büzüşme" - -msgid "" -"Enter the shrinkage percentage that the filament will get after cooling (94% " -"if you measure 94mm instead of 100mm). The part will be scaled in xy to " -"compensate. Only the filament used for the perimeter is taken into account.\n" -"Be sure to allow enough space between objects, as this compensation is done " -"after the checks." -msgstr "" -"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine 94 " -"mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " -"Yalnızca çevre için kullanılan filament dikkate alınır.\n" -"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli boşluk " -"bıraktığınızdan emin olun." - -msgid "Loading speed" -msgstr "Yükleme hızı" - -msgid "Speed used for loading the filament on the wipe tower." -msgstr "Filamenti silme kulesine yüklemek için kullanılan hız." - -msgid "Loading speed at the start" -msgstr "Başlangıçtaki yükleme hızı" - -msgid "Speed used at the very beginning of loading phase." -msgstr "Yükleme aşamasının başında kullanılan hız." - -msgid "Unloading speed" -msgstr "Boşaltma hızı" - -msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming)." -msgstr "" -"Filamenti silme kulesinde boşaltmak için kullanılan hız (sıkıştırmadan hemen " -"sonra boşaltmanın ilk kısmını etkilemez)." - -msgid "Unloading speed at the start" -msgstr "Başlangıçta boşaltma hızı" - -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming." -msgstr "" -"Sıkıştırmadan hemen sonra filamentin ucunu boşaltmak için kullanılan hız." - -msgid "Delay after unloading" -msgstr "Boşaltma işleminden sonra gecikme" - -msgid "" -"Time to wait after the filament is unloaded. May help to get reliable " -"toolchanges with flexible materials that may need more time to shrink to " -"original dimensions." -msgstr "" -"Filament boşaltıldıktan sonra beklenmesi gereken süre. Orijinal boyutlara " -"küçülmesi için daha fazla zamana ihtiyaç duyabilecek esnek malzemelerle " -"güvenilir takım değişimleri elde etmeye yardımcı olabilir." - -msgid "Number of cooling moves" -msgstr "Soğutma hareketi sayısı" - -msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves." -msgstr "" -"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. Bu " -"sayısını belirtin." - -msgid "Speed of the first cooling move" -msgstr "İlk soğutma hareketi hızı" - -msgid "Cooling moves are gradually accelerating beginning at this speed." -msgstr "Soğutma hareketleri bu hızdan başlayarak kademeli olarak hızlanır." - -msgid "Minimal purge on wipe tower" -msgstr "Silme kulesi üzerinde minimum boşaltım" - -msgid "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial object, " -"Slic3r will always prime this amount of material into the wipe tower to " -"produce successive infill or sacrificial object extrusions reliably." -msgstr "" -"Bir takım değişiminden sonra, yeni yüklenen filamanın nozül 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 Slic3r, " -"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." - -msgid "Speed of the last cooling move" -msgstr "Son soğutma hareketi hızı" - -msgid "Cooling moves are gradually accelerating towards this speed." -msgstr "Soğutma hareketleri bu hıza doğru giderek hızlanır." - -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is added " -"to the total print time by the G-code time estimator." -msgstr "" -"Yazıcı donanım yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " -"değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme süresi. " -"Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine eklenir." - -msgid "Ramming parameters" -msgstr "Sıkıştırma parametreleri" - -msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters." -msgstr "" -"Bu dize RammingDialog tarafından düzenlenir ve ramming'e özgü parametreleri " -"içerir." - -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is added " -"to the total print time by the G-code time estimator." -msgstr "" -"Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım değişimi " -"sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu süre, G kodu " -"süre tahmincisi tarafından toplam baskı süresine eklenir." - -msgid "Enable ramming for multitool setups" -msgstr "Çoklu araç kurulumları için sıkıştırmayı etkinleştirin" - -msgid "" -"Perform ramming when using multitool 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 " -"toolchange. This option is only used when the wipe tower is enabled." -msgstr "" -"Çok takımlı yazıcı kullanırken sıkıştırma gerçekleştirin (yani Yazıcı " -"Ayarları'ndaki 'Tek Ekstrüder Çoklu Malzeme' işaretli olmadığında). " -"İşaretlendiğinde, takım değişiminden hemen önce silme kulesinde az miktarda " -"filament hızla ekstrüde edilir. Bu seçenek yalnızca silme kulesi " -"etkinleştirildiğinde kullanılır." - -msgid "Multitool ramming volume" -msgstr "Çoklu araç sıkıştırma hacmi" - -msgid "The volume to be rammed before the toolchange." -msgstr "Takım değişiminden önce sıkıştırılacak hacim." - -msgid "Multitool ramming flow" -msgstr "Çoklu araç sıkıştırma akışı" - -msgid "Flow used for ramming the filament before the toolchange." -msgstr "Araç değişiminden önce filamenti sıkıştırmak için kullanılan akış." - -msgid "Density" -msgstr "Yoğunluk" - -msgid "Filament density. For statistics only" -msgstr "Filament yoğunluğu. Yalnızca istatistikler için" - -msgid "g/cm³" -msgstr "g/cm³" - -msgid "The material type of filament" -msgstr "Filament malzeme türü" - -msgid "Soluble material" -msgstr "Çözünür malzeme" - -msgid "Soluble material is commonly used to print support and support interface" -msgstr "" -"Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için " -"kullanılır" - -msgid "Support material" -msgstr "Destek malzemesi" - -msgid "Support material is commonly used to print support and support interface" -msgstr "" -"Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için " -"kullanılır" - -msgid "Temperature of vitrificaiton" -msgstr "Yumuşama sıcaklığı" - -msgid "" -"Material becomes soft at this temperature. Thus the heatbed cannot be hotter " -"than this tempature" -msgstr "" -"Bu sıcaklıkta malzeme yumuşar. Bu nedenle ısıtma yatağı bu sıcaklıktan daha " -"sıcak olamaz" - -msgid "Price" -msgstr "Fiyat" - -msgid "Filament price. For statistics only" -msgstr "Filament fiyatı. Yalnızca istatistikler için" - -msgid "money/kg" -msgstr "para/kg" - -msgid "Vendor" -msgstr "Satıcı" - -msgid "Vendor of filament. For show only" -msgstr "Filament satıcısı. Yalnızca gösteri için" - -msgid "(Undefined)" -msgstr "(Tanımsız)" - -msgid "Infill direction" -msgstr "Dolgu Açısı" - -msgid "" -"Angle for sparse infill pattern, which controls the start or main direction " -"of line" -msgstr "" -"Hattın başlangıcını veya ana yönünü kontrol eden seyrek dolgu deseni açısı" - -msgid "Sparse infill density" -msgstr "Dolgu Yoğunluğu" - -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" -msgstr "Density of internal sparse infill, 100% means solid throughout" - -msgid "Sparse infill pattern" -msgstr "Dolgu Deseni" - -msgid "Line pattern for internal sparse infill" -msgstr "İç dolgu deseni" - -msgid "Grid" -msgstr "Kafes" - -msgid "Line" -msgstr "Çizgi" - -msgid "Cubic" -msgstr "Kübik" - -msgid "Tri-hexagon" -msgstr "Üç altıgen" - -msgid "Gyroid" -msgstr "Jiroid" - -msgid "Honeycomb" -msgstr "Bal peteği" - -msgid "Adaptive Cubic" -msgstr "Uyarlanabilir Kübik" - -msgid "3D Honeycomb" -msgstr "3D Petek" - -msgid "Support Cubic" -msgstr "Destek Kübik" - -msgid "Lightning" -msgstr "Yıldırım" - -msgid "Sparse infill anchor length" -msgstr "Dolgu Uzunluğu" - -msgid "" -"Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" -"Set this parameter to zero to disable anchoring perimeters connected to a " -"single infill line." -msgstr "" -"Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " -"üzerinden hesaplanır. Slic3r iki yakın dolgu hattını kısa bir çevre " -"segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle bir " -"çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " -"segmentine bağlanır ve alınan çevre segmentinin uzunluğu bu parametreyle " -"sınırlıdır, ancak çapa_uzunluk_max'tan uzun olamaz.\n" -"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için bu " -"parametreyi sıfıra ayarlayın." - -msgid "0 (no open anchors)" -msgstr "0 (açık bağlantı yok)" - -msgid "1000 (unlimited)" -msgstr "1000 (sınırsız)" - -msgid "Maximum length of the infill anchor" -msgstr "Dolgu maksimum uzunluk" - -msgid "" -"Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" -"If set to 0, the old algorithm for infill connection will be used, it should " -"create the same result as with 1000 & 0." -msgstr "" -"Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " -"üzerinden hesaplanır. Slic3r iki yakın dolgu hattını kısa bir çevre " -"segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre segmenti " -"bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine bağlanır " -"ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır ancak bu " -"parametreden daha uzun olamaz.\n" -"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 ve " -"0 ile aynı sonucu oluşturmalıdır." - -msgid "0 (Simple connect)" -msgstr "0 (Basit bağlantı)" - -msgid "Acceleration of outer walls" -msgstr "Dış duvarların hızlandırılması" - -msgid "Acceleration of inner walls" -msgstr "İç duvarların hızlandırılması" - -msgid "Acceleration of travel moves" -msgstr "Seyahat hareketlerinin hızlandırılması" - -msgid "" -"Acceleration of top surface infill. Using a lower value may improve top " -"surface quality" -msgstr "" -"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması üst " -"yüzey kalitesini iyileştirebilir" - -msgid "Acceleration of outer wall. Using a lower value can improve quality" -msgstr "" -"Dış duvarın hızlanması. Daha düşük bir değer kullanmak kaliteyi artırabilir" - -msgid "" -"Acceleration of bridges. If the value is expressed as a percentage (e.g. " -"50%), it will be calculated based on the outer wall acceleration." -msgstr "" -"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), dış " -"duvar ivmesine göre hesaplanacaktır." - -msgid "mm/s² or %" -msgstr "mm/s² veya %" - -msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." -msgstr "" -"Seyrek dolgunun hızlandırılması. Değer yüzde olarak ifade edilirse (örn. " -"%100), varsayılan ivmeye göre hesaplanacaktır." - -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 "" -"İç katı dolgunun hızlandırılması. Değer yüzde olarak ifade edilirse (örn. " -"%100), varsayılan ivmeye göre hesaplanacaktır." - -msgid "" -"Acceleration of initial layer. Using a lower value can improve build plate " -"adhensive" -msgstr "" -"Başlangıç katmanının hızlandırılması. Daha düşük bir değerin kullanılması " -"baskı plakası yapışkanlığını iyileştirebilir" - -msgid "Enable accel_to_decel" -msgstr "Accel_to_decel'i etkinleştir" - -msgid "Klipper's max_accel_to_decel will be adjusted automatically" -msgstr "Klipper'ın max_accel_to_decel'i otomatik olarak ayarlanacak" - -msgid "accel_to_decel" -msgstr "accel_to_decel" - -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" -msgstr "Klipper max_accel_to_decel değeri bu hızlanma % değerine ayarlanacaktır" - -msgid "Jerk of outer walls" -msgstr "Dış duvar JERK değeri" - -msgid "Jerk of inner walls" -msgstr "İç duvarlar JERK değeri" - -msgid "Jerk for top surface" -msgstr "Üst yüzey için JERK değeri" - -msgid "Jerk for infill" -msgstr "Dolgu için JERK değeri" - -msgid "Jerk for initial layer" -msgstr "İlk katman için JERK değeri" - -msgid "Jerk for travel" -msgstr "Seyahat için JERK değeri" - -msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over " -"the nozzle diameter." -msgstr "" -"İlk katmanın çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " -"hesaplanacaktır." - -msgid "Initial layer height" -msgstr "Başlangıç katman yüksekliği" - -msgid "" -"Height of initial layer. Making initial layer height to be thick slightly can " -"improve build plate adhension" -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 "Speed of initial layer except the solid infill part" -msgstr "Katı dolgu kısmı dışındaki ilk katmanın hızı" - -msgid "Initial layer infill" -msgstr "Başlangıç katman dolgusu" - -msgid "Speed of solid infill part of initial layer" -msgstr "İlk katmanın katı dolgu kısmının hızı" - -msgid "Initial layer travel speed" -msgstr "İlk katman seyahat hızı" - -msgid "Travel speed of initial layer" -msgstr "İlk katman seyahat hızı" - -msgid "Number of slow layers" -msgstr "Yavaş katman sayısı" - -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 "" -"İlk birkaç katman normalden daha yavaş yazdırılır. Hız, belirtilen katman " -"sayısı boyunca doğrusal bir şekilde kademeli olarak artırılır." - -msgid "Initial layer nozzle temperature" -msgstr "İlk katman nozul sıcaklığı" - -msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "Bu filamenti kullanırken ilk katmanı yazdırmak için nozul sıcaklığı" - -msgid "Full fan speed at layer" -msgstr "Maksimum fan hızı" - -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 "" -"Fan hızı, \"close_fan_the_first_x_layers\" katmanında sıfırdan " -"\"ful_fan_speed_layer\" katmanında maksimuma doğrusal olarak artırılacaktır. " -"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden düşükse " -"göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers\" + 1 " -"katmanında izin verilen maksimum hızda çalışacaktır." - -msgid "Support interface fan speed" -msgstr "Destekler için fan hızı" - -msgid "" -"This fan speed is enforced during all support interfaces, to be able to " -"weaken their bonding with a high fan speed.\n" -"Set to -1 to disable this override.\n" -"Can only be overriden by disable_fan_first_layers." -msgstr "" -"Bu fan hızı, yüksek fan hızıyla bağlarını zayıflatabilmek için tüm destek " -"arayüzlerinde uygulanır.\n" -"Bu geçersiz kılmayı devre dışı bırakmak için -1'e ayarlayın.\n" -"Yalnızca devre dışı_fan_first_layers tarafından geçersiz kılınabilir." - -msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough " -"look. This setting controls the fuzzy position" -msgstr "" -"Duvara baskı yaparken rastgele titreme, böylece yüzeyin pürüzlü bir görünüme " -"sahip olması. Bu ayar bulanık konumu kontrol eder" - -msgid "None" -msgstr "Hiçbiri" - -msgid "Contour" -msgstr "Kontur" - -msgid "Contour and hole" -msgstr "Kontur ve delik" - -msgid "All walls" -msgstr "Tüm duvarlar" - -msgid "Fuzzy skin thickness" -msgstr "Bulanık kaplama kalınlığı" - -msgid "" -"The width within which to jitter. It's adversed to be below outer wall line " -"width" -msgstr "" -"Titremenin gerçekleşeceği genişlik. Dış duvar çizgi genişliğinin altında " -"olması sakıncalıdır" - -msgid "Fuzzy skin point distance" -msgstr "Bulanık kaplama noktası mesafesi" - -msgid "" -"The average diatance between the random points introducded on each line " -"segment" -msgstr "" -"Her çizgi parçasına eklenen rastgele noktalar arasındaki ortalama mesafe" - -msgid "Filter out tiny gaps" -msgstr "Küçük boşlukları filtrele" - -msgid "Layers and Perimeters" -msgstr "Katmanlar ve Çevreler" - -msgid "" -"Filter out gaps smaller than the threshold specified. This setting won't " -"affect top/bottom layers" -msgstr "" -"Belirtilen eşikten daha küçük boşlukları filtreleyin. Bu ayar üst/alt " -"katmanları etkilemez" - -msgid "" -"Speed of gap infill. Gap usually has irregular line width and should be " -"printed more slowly" -msgstr "" -"Boşluk doldurma hızı. Boşluk genellikle düzensiz çizgi genişliğine sahiptir " -"ve daha yavaş yazdırılmalıdır" - -msgid "Arc fitting" -msgstr "Ark" - -msgid "" -"Enable this to get a G-code file which has G2 and G3 moves. And the fitting " -"tolerance is same with resolution" -msgstr "" -"G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " -"etkinleştirin. Ve montaj toleransı çözünürlükle aynıdır" - -msgid "Add line number" -msgstr "Satır numarası ekle" - -msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" -msgstr "" -"Her G Kodu satırının başına satır numarası (Nx) eklemek için bunu " -"etkinleştirin" - -msgid "Scan first layer" -msgstr "İlk katmanı tara" - -msgid "" -"Enable this to enable the camera on printer to check the quality of first " -"layer" -msgstr "" -"Yazıcıdaki kameranın ilk katmanın kalitesini kontrol etmesini sağlamak için " -"bunu etkinleştirin" - -msgid "Nozzle type" -msgstr "Nozul tipi" - -msgid "" -"The metallic material of nozzle. This determines the abrasive resistance of " -"nozzle, and what kind of filament can be printed" -msgstr "" -"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür filamentin " -"basılabileceğini belirler" - -msgid "Undefine" -msgstr "Tanımsız" - -msgid "Hardened steel" -msgstr "Güçlendirilmiş çelik" - -msgid "Stainless steel" -msgstr "Paslanmaz çelik" - -msgid "Brass" -msgstr "Pirinç" - -msgid "Nozzle HRC" -msgstr "Nozul HRC" - -msgid "" -"The nozzle's hardness. Zero means no checking for nozzle's hardness during " -"slicing." -msgstr "" -"Nozul sertliği. Sıfır, dilimleme sırasında nozul sertliğinin kontrol " -"edilmediği anlamına gelir." - -msgid "HRC" -msgstr "sıcak rulo" - -msgid "Enable this option if machine has auxiliary part cooling fan" -msgstr "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" - -msgid "" -"Start the fan this number of seconds earlier than its target start time (you " -"can use fractional seconds). It assumes infinite acceleration for this time " -"estimation, and will only take into account G1 and G0 moves (arc fitting is " -"unsupported).\n" -"It won't move fan comands from custom gcodes (they act as a sort of " -"'barrier').\n" -"It won't move fan comands into the start gcode if the 'only custom start " -"gcode' is activated.\n" -"Use 0 to deactivate." -msgstr "" -"Fanı hedef başlangıç zamanından bu kadar saniye önce başlatın (kesirli " -"saniyeleri kullanabilirsiniz). Bu süre tahmini için sonsuz ivme varsayar ve " -"yalnızca G1 ve G0 hareketlerini hesaba katar (yay uydurma desteklenmez).\n" -"Fan komutlarını özel kodlardan taşımaz (bir çeşit 'bariyer' görevi " -"görürler).\n" -"'Yalnızca özel başlangıç gcode'u etkinleştirilmişse, fan komutları başlangıç " -"gcode'una taşınmayacaktır.\n" -"Devre dışı bırakmak için 0'ı kullanın." - -msgid "Only overhangs" -msgstr "Yalnızca çıkıntılar" - -msgid "Will only take into account the delay for the cooling of overhangs." -msgstr "Yalnızca çıkıntıların soğumasına ilişkin gecikme dikkate alınacaktır." - -msgid "Fan kick-start time" -msgstr "Fan başlatma süresi" - -msgid "" -"Emit a max fan speed command for this amount of seconds before reducing to " -"target speed to kick-start the cooling fan.\n" -"This is useful for fans where a low PWM/power may be insufficient to get the " -"fan started spinning from a stop, or to get the fan up to speed faster.\n" -"Set to 0 to deactivate." -msgstr "" -"Soğutma fanını başlatmak için hedef hıza düşmeden önce bu süre boyunca " -"maksimum fan hızı komutunu verin.\n" -"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın daha " -"hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" -"Devre dışı bırakmak için 0'a ayarlayın." - -msgid "G-code flavor" -msgstr "G-Kod Uyumu" - -msgid "What kind of gcode the printer is compatible with" -msgstr "Yazıcının ne tür bir gcode ile uyumlu olduğu" - -msgid "Klipper" -msgstr "Klipper" - -msgid "Label objects" -msgstr "Nesneleri etiketle" - -msgid "" -"Enable this to add comments into the G-Code labeling print moves with what " -"object they belong to, which is useful for the Octoprint CancelObject plugin. " -"This settings is NOT compatible with Single Extruder Multi Material setup and " -"Wipe into Object / Wipe into Infill." -msgstr "" -"G-Code etiketleme yazdırma hareketlerine ait oldukları nesneyle ilgili " -"yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject " -"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme kurulumu " -"ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." - -msgid "Exclude objects" -msgstr "Nesneleri hariç tut" - -msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" - -msgid "Verbose G-code" -msgstr "Ayrıntılı G kodu" - -msgid "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." -msgstr "" -"Her satırın açıklayıcı bir metinle açıklandığı, yorumlu bir G kodu dosyası " -"almak için bunu etkinleştirin. SD karttan yazdırırsanız dosyanın ilave " -"ağırlığı ürün yazılımınızın yavaşlamasına neden olabilir." - -msgid "Infill combination" -msgstr "Dolgu kombinasyonu" - -msgid "" -"Automatically Combine sparse infill of several layers to print together to " -"reduce time. Wall is still printed with original layer height." -msgstr "" -"Zamanı azaltmak amacıyla birden fazla katmanın seyrek dolgusunu otomatik " -"olarak birleştirerek birlikte yazdırın. Duvar hala orijinal katman " -"yüksekliğinde basılmaktadır." - -msgid "Filament to print internal sparse infill." -msgstr "İç seyrek dolguyu yazdırmak için filament." - -msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be " -"computed over the nozzle diameter." -msgstr "" -"İç seyrek dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " -"üzerinden hesaplanacaktır." - -msgid "Infill/Wall overlap" -msgstr "Dolgu/Duvar örtüşmesi" - -msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. The " -"percentage value is relative to line width of sparse infill" -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" - -msgid "Speed of internal sparse infill" -msgstr "İç seyrek dolgunun hızı" - -msgid "Interface shells" -msgstr "Arayüz kabukları" - -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 "" -"Bitişik malzemeler/hacimler arasında katı kabuk oluşumunu zorlayın. Yarı " -"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu ekstruder " -"baskıları için kullanışlıdır" - -msgid "Ironing Type" -msgstr "Ütüleme Tipi" - -msgid "" -"Ironing is using small flow to print on same height of surface again to make " -"flat surface more smooth. This setting controls which layer being ironed" -msgstr "" -"Ütüleme, düz yüzeyi daha pürüzsüz hale getirmek için aynı yükseklikteki " -"yüzeye tekrar baskı yapmak için küçük akış kullanmaktır. Bu ayar hangi " -"katmanın ütüleneceğini kontrol eder" - -msgid "No ironing" -msgstr "Ütüleme yok" - -msgid "Top surfaces" -msgstr "Üst yüzeyler" - -msgid "Topmost surface" -msgstr "En üst yüzey" - -msgid "All solid layer" -msgstr "Tamamı katı katman" - -msgid "Ironing Pattern" -msgstr "Ütüleme Deseni" - -msgid "Ironing flow" -msgstr "Ütüleme akışı" - -msgid "" -"The amount of material to extrude during ironing. Relative to flow of normal " -"layer height. Too high value results in overextrusion on the surface" -msgstr "" -"Ütüleme sırasında çıkacak malzeme miktarı. Normal katman yüksekliğindeki " -"akışa göre. Çok yüksek değer yüzeyde aşırı ekstrüzyona neden olur" - -msgid "Ironing line spacing" -msgstr "Ütüleme çizgi aralığı" - -msgid "The distance between the lines of ironing" -msgstr "Ütü çizgileri arasındaki mesafe" - -msgid "Ironing speed" -msgstr "Ütüleme hızı" - -msgid "Print speed of ironing lines" -msgstr "Ütüleme çizgilerinin baskı hızı" - -msgid "This gcode part is inserted at every layer change after lift z" -msgstr "" -"Bu gcode kısmı, z kaldırma işleminden sonra her katman değişikliğinde eklenir" - -msgid "Supports silent mode" -msgstr "Sessiz modu destekler" - -msgid "" -"Whether the machine supports silent mode in which machine use lower " -"acceleration to print" -msgstr "" -"Makinenin yazdırmak için daha düşük hızlanma kullandığı sessiz modu " -"destekleyip desteklemediği" - -msgid "" -"This G-code will be used as a code for the pause print. User can insert pause " -"G-code in gcode viewer" -msgstr "" -"Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. " -"Kullanıcı gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" - -msgid "This G-code will be used as a custom code" -msgstr "Bu G kodu özel kod olarak kullanılacak" - -msgid "Maximum speed X" -msgstr "Maksimum hız X" - -msgid "Maximum speed Y" -msgstr "Maksimum hız Y" - -msgid "Maximum speed Z" -msgstr "Maksimum hız Z" - -msgid "Maximum speed E" -msgstr "Maksimum hız E" - -msgid "Machine limits" -msgstr "Yazıcısınırları" - -msgid "Maximum X speed" -msgstr "Maksimum X hızı" - -msgid "Maximum Y speed" -msgstr "Maksimum Y hızı" - -msgid "Maximum Z speed" -msgstr "Maksimum Z hızı" - -msgid "Maximum E speed" -msgstr "Maksimum E hızı" - -msgid "Maximum acceleration X" -msgstr "Maksimum hızlanma X" - -msgid "Maximum acceleration Y" -msgstr "Maksimum hızlanma Y" - -msgid "Maximum acceleration Z" -msgstr "Maksimum hızlanma Z" - -msgid "Maximum acceleration E" -msgstr "Maksimum hızlanma E" - -msgid "Maximum acceleration of the X axis" -msgstr "X ekseninin maksimum hızlanması" - -msgid "Maximum acceleration of the Y axis" -msgstr "Y ekseninin maksimum ivmesi" - -msgid "Maximum acceleration of the Z axis" -msgstr "Z ekseninin maksimum hızlanması" - -msgid "Maximum acceleration of the E axis" -msgstr "E ekseninin maksimum hızlanması" - -msgid "Maximum jerk X" -msgstr "Maksimum sarsıntı X" - -msgid "Maximum jerk Y" -msgstr "Maksimum sarsıntı Y" - -msgid "Maximum jerk Z" -msgstr "Maksimum sarsıntı Z" - -msgid "Maximum jerk E" -msgstr "Maksimum sarsıntı E" - -msgid "Maximum jerk of the X axis" -msgstr "X ekseninin maksimum sarsıntısı (Jerk)" - -msgid "Maximum jerk of the Y axis" -msgstr "Y ekseninin maksimum sarsıntısı (Jerk)" - -msgid "Maximum jerk of the Z axis" -msgstr "Z ekseninin maksimum sarsıntısı (Jerk)" - -msgid "Maximum jerk of the E axis" -msgstr "E ekseninin maksimum sarsıntısı (Jerk)" - -msgid "Minimum speed for extruding" -msgstr "Ekstrüzyon için minimum hız" - -msgid "Minimum speed for extruding (M205 S)" -msgstr "Ekstrüzyon için minimum hız (M205 S)" - -msgid "Minimum travel speed" -msgstr "Minimum seyahat hızı" - -msgid "Minimum travel speed (M205 T)" -msgstr "Minimum ilerleme hızı (M205 T)" - -msgid "Maximum acceleration for extruding" -msgstr "Ekstrüzyon için maksimum hızlanma" - -msgid "Maximum acceleration for extruding (M204 P)" -msgstr "Ekstrüzyon için maksimum hızlanma (M204 P)" - -msgid "Maximum acceleration for retracting" -msgstr "Geri çekme için maksimum hızlanma" - -msgid "Maximum acceleration for retracting (M204 R)" -msgstr "Geri çekilme için maksimum hızlanma (M204 R)" - -msgid "Maximum acceleration for travel" -msgstr "Seyahat için maksimum hızlanma" - -msgid "Maximum acceleration for travel (M204 T)" -msgstr "Hareket için maksimum hızlanma (M204 T)" - -msgid "Fan speed" -msgstr "Fan hızı" - -msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This is " -"the maximum speed limitation of part cooling fan" -msgstr "" -"Otomatik soğutma etkinleştirildiğinde parça soğutma fanı hızı artırılabilir. " -"Bu, parça soğutma fanının maksimum hız sınırlamasıdır" - -msgid "Max" -msgstr "Maksimum" - -msgid "" -"The largest printable layer height for extruder. Used tp limits the maximum " -"layer hight when enable adaptive layer height" -msgstr "" -"Ekstruder için yazdırılabilir en büyük katman yüksekliği. Kullanılan tp, " -"uyarlanabilir katman yüksekliğini etkinleştirirken maksimum katman " -"yüksekliğini sınırlar" - -msgid "Minimum speed for part cooling fan" -msgstr "Parça soğutma fanı için minimum hız" - -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" -msgstr "" -"Yardımcı parça soğutma fanının hızı. Yardımcı fan, soğutma katmanlarının " -"bulunmadığı ilk birkaç katman dışında, yazdırma sırasında bu hızda " -"çalışacaktır" - -msgid "Min" -msgstr "Min" - -msgid "" -"The lowest printable layer height for extruder. Used tp limits the minimum " -"layer hight when enable adaptive layer height" -msgstr "" -"Ekstruder için yazdırılabilir en düşük katman yüksekliği. Kullanılan tp, " -"uyarlanabilir katman yüksekliğini etkinleştirirken minimum katman " -"yüksekliğini sınırlar" - -msgid "Min print speed" -msgstr "Minimum baskı hızı" - -msgid "The minimum printing speed when slow down for cooling" -msgstr "Soğutma için yavaşlama durumunda minimum yazdırma hızı" - -msgid "Nozzle diameter" -msgstr "Nozul çapı" - -msgid "Diameter of nozzle" -msgstr "Nozul çapı" - -msgid "Configuration notes" -msgstr "Yapılandırma notları" - -msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." -msgstr "" -"Buraya kişisel notlarınızı yazabilirsiniz. Bu not G-kodu başlık yorumlarına " -"eklenecektir." - -msgid "Host Type" -msgstr "Bağlantı Türü" - -msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain the " -"kind of the host." -msgstr "" -"Slic3r, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu alan " -"ana bilgisayarın türünü içermelidir." - -msgid "Nozzle volume" -msgstr "Nozul hacmi" - -msgid "Volume of nozzle between the cutter and the end of nozzle" -msgstr "Kesici ile nozulun ucu arasındaki nozül hacmi" - -msgid "Cooling tube position" -msgstr "Soğutma borusu konumu" - -msgid "Distance of the center-point of the cooling tube from the extruder tip." -msgstr "Soğutma borusunun merkez noktasının ekstrüder ucundan uzaklığı." - -msgid "Cooling tube length" -msgstr "Soğutma borusu uzunluğu" - -msgid "Length of the cooling tube to limit space for cooling moves inside it." -msgstr "" -"İçindeki soğutma hareketleri alanını sınırlamak üzere soğutma tüpünün " -"uzunluğu." - -msgid "High extruder current on filament swap" -msgstr "Filament değişiminde yüksek ekstruder akımı" - -msgid "" -"It may be beneficial to increase the extruder motor current during the " -"filament exchange sequence to allow for rapid ramming feed rates and to " -"overcome resistance when loading a filament with an ugly shaped tip." -msgstr "" -"Hızlı sıkıştırma hızlarına izin vermek ve kötü kesilmiş bir filament " -"yüklerken direncin üstesinden gelmek için filament değişim sırası sırasında " -"ekstrüder motor akımını artırmak faydalı olabilir." - -msgid "Filament parking position" -msgstr "Filament park konumu" - -msgid "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware." -msgstr "" -"Ekstrüder ucunun, boşaltıldığında filamentin park edildiği konumdan uzaklığı. " -"Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." - -msgid "Extra loading distance" -msgstr "Ekstra yükleme mesafesi" - -msgid "" -"When set to zero, the distance the filament is moved from parking position " -"during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading." -msgstr "" -"Sıfır olarak ayarlandığında, yükleme sırasında filamentin park konumundan " -"taşındığı mesafe, boşaltma sırasında geri taşındığı mesafe ile aynıdır. " -"Pozitif olduğunda daha fazla yüklenir, negatif olduğunda yükleme hareketi " -"boşaltmadan daha kısadır." - -msgid "Start end points" -msgstr "Başlangıç bitiş noktaları" - -msgid "The start and end points which is from cutter area to garbage can." -msgstr "Kesici bölgeden çöp kutusuna kadar olan başlangıç ve bitiş noktaları." - -msgid "Reduce infill retraction" -msgstr "Dolguda geri çekmeyi azalt" - -msgid "" -"Don't retract when the travel is in infill area absolutely. 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" -msgstr "" -"Hareket kesinlikle dolgu alanına girdiğinde geri çekilmeyin. Bu, sızıntının " -"görülemeyeceği anlamına gelir. Bu, karmaşık model için geri çekme sürelerini " -"azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi " -"ve G kodu oluşturmayı yavaşlatır" - -msgid "Enable" -msgstr "Aktifle" - -msgid "Filename format" -msgstr "Dosya adı formatı" - -msgid "User can self-define the project file name when export" -msgstr "" -"Kullanıcı dışa aktarma sırasında proje dosyası adını kendisi tanımlayabilir" - -msgid "Make overhang printable" -msgstr "Çıkıntılar yazdırılabilir" - -msgid "Modify the geometry to print overhangs without support material." -msgstr "" -"Destek malzemesi olmadan çıkıntıları yazdırmak için geometriyi değiştirin." - -msgid "Make overhang printable maximum angle" -msgstr "Maksimum yazdırılabilir açı" - -msgid "" -"Maximum angle of overhangs to allow after making more steep overhangs " -"printable.90° will not change the model at all and allow any overhang, while " -"0 will replace all overhangs with conical material." -msgstr "" -"Daha dik çıkıntıları yazdırılabilir hale getirdikten sonra izin verilen " -"maksimum çıkıntı açısı. 90°, modeli hiçbir şekilde değiştirmez ve herhangi " -"bir çıkıntıya izin vermez, 0 ise tüm çıkıntıları konik malzemeyle değiştirir." - -msgid "Make overhang printable hole area" -msgstr "Yazdırılabilir çıkıntı delik alanı oluşturun" - -msgid "" -"Maximum area of a hole in the base of the model before it's filled by conical " -"material.A value of 0 will fill all the holes in the model base." -msgstr "" -"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce maksimum " -"alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." - -msgid "mm²" -msgstr "mm²" - -msgid "Detect overhang wall" -msgstr "Çıkıntılı duvarı algıla" - -#, c-format, boost-format -msgid "" -"Detect the overhang percentage relative to line width and use different speed " -"to print. For 100%% overhang, bridge speed is used." -msgstr "" -"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için farklı " -"hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." - -msgid "" -"Line width of inner wall. If expressed as a %, it will be computed over the " -"nozzle diameter." -msgstr "" -"İç duvarın çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " -"hesaplanacaktır." - -msgid "Speed of inner wall" -msgstr "İç duvarın hızı" - -msgid "Number of walls of every layer" -msgstr "Her katmanın duvar sayısı" - -msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." -msgstr "" -"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, mutlak " -"yollarını burada listeleyin. Birden fazla betiği noktalı virgülle ayırın. " -"Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır ve ortam " -"değişkenlerini okuyarak Slic3r yapılandırma ayarlarına erişebilirler." - -msgid "Printer notes" -msgstr "Yazıcı notları" - -msgid "You can put your notes regarding the printer here." -msgstr "Yazıcı ile ilgili notlarınızı buraya yazabilirsiniz." - -msgid "Raft contact Z distance" -msgstr "Raft kontak Z mesafesi" - -msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" - -msgid "Raft expansion" -msgstr "Raft genişletme" - -msgid "Expand all raft layers in XY plane" -msgstr "XY düzlemindeki tüm sal katmanlarını genişlet" - -msgid "Initial layer density" -msgstr "Başlangıç katman yoğunluğu" - -msgid "Density of the first raft or support layer" -msgstr "İlk sal veya destek katmanının yoğunluğu" - -msgid "Initial layer expansion" -msgstr "İlk katman genişletme" - -msgid "Expand the first raft or support layer to improve bed plate adhesion" -msgstr "" -"Yatak plakası yapışmasını iyileştirmek için ilk raft veya destek katmanını " -"genişletin" - -msgid "Raft layers" -msgstr "Raft katmanları" - -msgid "" -"Object will be raised by this number of support layers. Use this function to " -"avoid wrapping when print ABS" -msgstr "" -"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS yazdırırken " -"sarmayı önlemek için bu işlevi kullanın" - -msgid "" -"G-code path is genereated after simplifing the contour of model to avoid too " -"much points and gcode lines in gcode file. Smaller value means higher " -"resolution and more time to slice" -msgstr "" -"Gcode dosyasında çok fazla nokta ve gcode çizgisinin olmaması için modelin " -"konturu basitleştirildikten sonra G-code yolu oluşturulur. Daha küçük değer, " -"daha yüksek çözünürlük ve dilimleme için daha fazla zaman anlamına gelir" - -msgid "Travel distance threshold" -msgstr "Seyahat mesafesi" - -msgid "" -"Only trigger retraction when the travel distance is longer than this threshold" -msgstr "" -"Geri çekmeyi yalnızca hareket mesafesi bu eşikten daha uzun olduğunda " -"tetikleyin" - -msgid "Retract amount before wipe" -msgstr "Temizleme işlemi öncesi geri çekme miktarı" - -msgid "The length of fast retraction before wipe, relative to retraction length" -msgstr "" -"Geri çekme uzunluğuna göre, temizlemeden önce hızlı geri çekilmenin uzunluğu" - -msgid "Retract when change layer" -msgstr "Katman değişiminde geri çek" - -msgid "Force a retraction when changes layer" -msgstr "Katmanı değiştirdiğinde geri çekilmeyi zorla" - -msgid "Length" -msgstr "Uzunluk" - -msgid "Retraction Length" -msgstr "Geri Çekme Uzunluğu" - -msgid "" -"Some amount of material in extruder is pulled back to avoid ooze during long " -"travel. Set zero to disable retraction" -msgstr "" -"Uzun seyahat sırasında sızıntıyı önlemek için ekstruderdeki malzemenin bir " -"kısmı geri çekilir. Geri çekmeyi devre dışı bırakmak için sıfır ayarlayın" - -msgid "Z hop when retract" -msgstr "Geri çekme esnasında Z sıçraması" - -msgid "" -"Whenever the retraction is done, the nozzle is lifted a little to create " -"clearance between nozzle and the print. It prevents nozzle from hitting the " -"print when travel move. Using spiral line to lift z can prevent stringing" -msgstr "" -"Geri çekme işlemi her yapıldığında, nozul ile baskı arasında açıklık " -"oluşturmak için nozul biraz kaldırılır. Hareket halindeyken nozülün baskıya " -"çarpmasını önler. Z'yi kaldırmak için spiral çizgi kullanmak çekmeyi " -"önleyebilir" - -msgid "Z hop type" -msgstr "Z sıçraması türü" - -msgid "Slope" -msgstr "Eğim" - -msgid "Spiral" -msgstr "Sarmal" - -msgid "Only lift Z above" -msgstr "Z'yi sadece şu değerin üstündeki durumlarda kaldır" - -msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z." -msgstr "" -"Bunu pozitif bir değere ayarlarsanız Z kaldırması yalnızca belirtilen mutlak " -"Z'nin üzerinde gerçekleşecektir." - -msgid "Only lift Z below" -msgstr "Z'yi sadece şu değerin altındaki durumlarda kaldır" - -msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z." -msgstr "" -"Bunu pozitif bir değere ayarlarsanız, Z kaldırma işlemi yalnızca belirtilen " -"mutlak Z değerinin altında gerçekleşir." - -msgid "On surfaces" -msgstr "Yüzeyler" - -msgid "" -"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " -"lift Z above/below)." -msgstr "" -"Z Hop davranışını zorunlu kılın. Bu ayar yukarıdaki ayarlardan etkilenir " -"(Z'yi yalnızca yukarıya/aşağıya kaldırın)." - -msgid "All Surfaces" -msgstr "Tüm Yüzeyler" - -msgid "Top Only" -msgstr "Sadece üst" - -msgid "Bottom Only" -msgstr "Sadece alt" - -msgid "Top and Bottom" -msgstr "Üst ve alt" - -msgid "Extra length on restart" -msgstr "Yeniden başlatma sırasında ekstra uzunluk" - -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 "" -"İlerleme hareketinden sonra geri çekilme telafi edildiğinde, ekstruder bu ek " -"filament miktarını itecektir. Bu ayara nadiren ihtiyaç duyulur." - -msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." -msgstr "" -"Takım değiştirildikten sonra geri çekilme telafi edildiğinde, ekstruder bu " -"ilave filament miktarını itecektir." - -msgid "Retraction Speed" -msgstr "Geri Çekme Hızı" - -msgid "Speed of retractions" -msgstr "Geri çekme hızları" - -msgid "Deretraction Speed" -msgstr "İleri itme Hızı" - -msgid "" -"Speed for reloading filament into extruder. Zero means same speed with " -"retraction" -msgstr "" -"Filamenti ekstrüdere yeniden yükleme hızı. Sıfır, geri çekilmeyle aynı hız " -"anlamına gelir" - -msgid "Use firmware retraction" -msgstr "Yazılımsal geri çekme (firmware retraction)" - -msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." -msgstr "" -"Bu deneysel ayar, bellenimin geri çekme işlemini gerçekleştirmesini sağlamak " -"için G10 ve G11 komutlarını kullanır. Bu yalnızca son Marlin'de " -"desteklenmektedir." - -msgid "Show auto-calibration marks" -msgstr "Otomatik kalibrasyon işaretlerini göster" - -msgid "Seam position" -msgstr "Dikiş konumu" - -msgid "The start position to print each part of outer wall" -msgstr "Dış duvarın her bir parçasını yazdırmak için başlangıç konumu" - -msgid "Nearest" -msgstr "En yakın" - -msgid "Aligned" -msgstr "Hizalı" - -msgid "Back" -msgstr "Arka" - -msgid "Random" -msgstr "Rastgele" - -msgid "Staggered inner seams" -msgstr "Kademeli iç dikişler" - -msgid "" -"This option causes the inner seams to be shifted backwards based on their " -"depth, forming a zigzag pattern." -msgstr "" -"Bu seçenek, iç dikişlerin derinliklerine göre geriye doğru kaydırılarak " -"zikzak desen oluşturulmasına neden olur." - -msgid "Seam gap" -msgstr "Dikiş boşluğu" - -msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, the " -"loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the current " -"extruder diameter. The default value for this parameter is 10%." -msgstr "" -"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü kesintiye " -"uğrar ve belirli bir miktarda kısaltılır.\n" -"Bu miktar milimetre cinsinden veya mevcut ekstruder çapının yüzdesi olarak " -"belirtilebilir. Bu parametrenin varsayılan değeri %10'dur." - -msgid "Role base wipe speed" -msgstr "Otomatik 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." - -msgid "Wipe on loops" -msgstr "Döngülerde Temizleme" - -msgid "" -"To minimize the visibility of the seam in a closed loop extrusion, a small " -"inward movement is executed before the extruder leaves the loop." -msgstr "" -"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü en aza indirmek için, " -"ekstrüder döngüden ayrılmadan önce içeriye doğru küçük bir hareket " -"gerçekleştirilir." - -msgid "Wipe speed" -msgstr "Temizleme hızı" - -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 "" -"Temizleme hızı, bu konfigürasyonda belirtilen hız ayarına göre belirlenir. " -"Değer yüzde olarak ifade edilirse (örn. %80), yukarıdaki ilerleme hızı " -"ayarına göre hesaplanır. Bu parametrenin varsayılan değeri %80'dir" - -msgid "Skirt distance" -msgstr "Etek mesafesi" - -msgid "Distance from skirt to brim or object" -msgstr "Etekten kenara veya nesneye olan mesafe" - -msgid "Skirt height" -msgstr "Etek yüksekliği" - -msgid "How many layers of skirt. Usually only one layer" -msgstr "Etek katman sayısı. Genellikle tek katman" - -msgid "Skirt loops" -msgstr "Etek Sayısı" - -msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" - -msgid "Skirt speed" -msgstr "Etek hızı" - -msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." -msgstr "" -"Eteğin hızı, mm/s cinsinden. Sıfır, varsayılan katman ekstrüzyon hızının " -"kullanılması anlamına gelir." - -msgid "" -"The printing speed in exported gcode will be slowed down, when the estimated " -"layer time is shorter than this value, to get better cooling for these layers" -msgstr "" -"Tahmini katman süresi bu değerden kısa olduğunda, bu katmanlar için daha iyi " -"soğutma sağlamak amacıyla, dışa aktarılan gcode'daki yazdırma hızı " -"yavaşlatılacaktır" - -msgid "Minimum sparse infill threshold" -msgstr "Minimum seyrek dolgu" - -msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " -"internal solid infill" -msgstr "" -"Eşik değerinden küçük olan seyrek dolgu alanı, yerini iç katı dolguya " -"bırakmıştır" - -msgid "" -"Line width of internal solid infill. If expressed as a %, it will be computed " -"over the nozzle diameter." -msgstr "" -"İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " -"üzerinden hesaplanacaktır." - -msgid "Speed of internal solid infill, not the top and bottom surface" -msgstr "Üst ve alt yüzeyin değil, iç katı dolgunun hızı" - -msgid "Spiral vase" -msgstr "Sarmal vazo" - -msgid "" -"Spiralize 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 "" -"Spiralleştirme, dış konturun z hareketlerini yumuşatır. Ve katı bir modeli, " -"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan son " -"modelde dikiş yok" - -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, prime tower is required for smooth mode to wipe nozzle." -msgstr "" -"Düzgün veya geleneksel mod seçilirse her baskı için bir hızlandırılmış video " -"oluşturulacaktır. Her katman basıldıktan sonra oda kamerasıyla anlık görüntü " -"alınır. Bu anlık görüntülerin tümü, yazdırma tamamlandığında hızlandırılmış " -"bir video halinde birleştirilir. Düzgün modu seçilirse, her katman " -"yazdırıldıktan sonra araç kafası fazla kanala hareket edecek ve ardından bir " -"anlık görüntü alacaktır. Anlık görüntü alma işlemi sırasında eriyen filament " -"nozülden sızabileceğinden, nozulu silmek için düzgün modun kullanılması için " -"prime tower gereklidir." - -msgid "Traditional" -msgstr "Geleneksel" - -msgid "Temperature variation" -msgstr "Sıcaklık değişimi" - -msgid "Start G-code" -msgstr "Başlangıç G Kodu" - -msgid "Start G-code when start the whole printing" -msgstr "Baskı başladığında çalışacak G Kodu" - -msgid "Start G-code when start the printing of this filament" -msgstr "Bu filament ile baskı başladığında çalıştırılacak G-Kod" - -msgid "Single Extruder Multi Material" -msgstr "Tek Ekstruder Çoklu Malzeme" - -msgid "Use single nozzle to print multi filament" -msgstr "Çoklu filament basmak için tek nozul kullan" - -msgid "Purge in prime tower" -msgstr "Prime Tower'da temizlik" - -msgid "Purge remaining filament into prime tower" -msgstr "Kalan filamenti Prime Tower'da boşalt" - -msgid "Enable filament ramming" -msgstr "Filament sıkıştırmayı etkinleştir" - -msgid "No sparse layers (EXPERIMENTAL)" -msgstr "Seyrek katman yok (DENEYSEL)" - -msgid "" -"If enabled, the wipe tower will not be printed on layers with no toolchanges. " -"On layers with a toolchange, extruder will travel downward to print the wipe " -"tower. User is responsible for ensuring there is no collision with the print." -msgstr "" -"Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda " -"yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstrüder silme kulesini " -"yazdırmak için aşağı doğru hareket edecektir. Baskı ile çarpışma olmamasını " -"sağlamak kullanıcının sorumluluğundadır." - -msgid "Prime all printing extruders" -msgstr "Tüm ekstruderleri temizle" - -msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." -msgstr "" -"Etkinleştirilirse, tüm baskı ekstrüderleri baskının başlangıcında baskı " -"yatağının ön kenarında temizlenecektir." - -msgid "Slice gap closing radius" -msgstr "Dilim aralığı kapanma yarıçapı" - -msgid "" -"Cracks smaller than 2x gap closing radius are being filled during the " -"triangle mesh slicing. The gap closing operation may reduce the final print " -"resolution, therefore it is advisable to keep the value reasonably low." -msgstr "" -"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük çatlaklar " -"doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " -"düşürebilir, bu nedenle değerin oldukça düşük tutulması tavsiye edilir." - -msgid "Slicing Mode" -msgstr "Dilimleme Modu" - -msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close " -"all holes in the model." -msgstr "" -"3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki " -"tüm delikleri kapatmak için \"Delikleri kapat\"ı kullanın." - -msgid "Regular" -msgstr "Düzenli" - -msgid "Even-odd" -msgstr "Tek çift" - -msgid "Close holes" -msgstr "Delikleri kapat" - -msgid "Enable support" -msgstr "Desteği etkinleştir" - -msgid "Enable support generation." -msgstr "Destek oluşturmayı etkinleştir." - -msgid "" -"normal(auto) and tree(auto) is used to generate support automatically. If " -"normal(manual) or tree(manual) is selected, only support enforcers are " -"generated" -msgstr "" -"desteği otomatik olarak oluşturmak için normal(otomatik) ve ağaç(otomatik) " -"kullanılır. Normal(manuel) veya ağaç(manuel) seçilirse yalnızca destek " -"uygulayıcıları oluşturulur" - -msgid "normal(auto)" -msgstr "normal(otomatik)" - -msgid "tree(auto)" -msgstr "ağaç(otomatik)" - -msgid "normal(manual)" -msgstr "normal(manuel)" - -msgid "tree(manual)" -msgstr "ağaç(manuel)" - -msgid "Support/object xy distance" -msgstr "Destek/nesne xy mesafesi" - -msgid "XY separation between an object and its support" -msgstr "Bir nesne ile desteği arasındaki XY ayrımı" - -msgid "Pattern angle" -msgstr "Desen açısı" - -msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "Destek desenini yatay düzlemde döndürmek için bu ayarı kullanın." - -msgid "On build plate only" -msgstr "Yalnızca baskı plakasında" - -msgid "Don't create support on model surface, only on build plate" -msgstr "Model yüzeyinde destek oluşturmayın, yalnızca baskı plakasında" - -msgid "Support critical regions only" -msgstr "Yalnızca kritik bölgeleri destekleyin" - -msgid "" -"Only create support for critical regions including sharp tail, cantilever, " -"etc." -msgstr "" -"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek oluşturun." - -msgid "Remove small overhangs" -msgstr "Küçük çıkıntıları kaldır" - -msgid "Remove small overhangs that possibly need no supports." -msgstr "Muhtemelen desteğe ihtiyaç duymayan küçük çıkıntıları kaldırın." - -msgid "Top Z distance" -msgstr "Üst Z mesafesi" - -msgid "The z gap between the top support interface and object" -msgstr "Üst destek arayüzü ile nesne arasındaki z boşluğu" - -msgid "Bottom Z distance" -msgstr "Alt Z mesafesi" - -msgid "The z gap between the bottom support interface and object" -msgstr "Alt destek arayüzü ile nesne arasındaki z boşluğu" - -msgid "Support/raft base" -msgstr "Destek/raft tabanı" - -msgid "" -"Filament to print support base and raft. \"Default\" means no specific " -"filament for support and current filament is used" -msgstr "" -"Destek tabanını ve salı yazdırmak için filament. \"Varsayılan\", destek için " -"belirli bir filamanın olmadığı ve mevcut filamanın kullanıldığı anlamına gelir" - -msgid "" -"Line width of support. If expressed as a %, it will be computed over the " -"nozzle diameter." -msgstr "" -"Desteğin çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " -"hesaplanacaktır." - -msgid "Interface use loop pattern" -msgstr "Arayüz kullanım döngüsü modeli" - -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "" -"Desteklerin üst temas katmanını ilmeklerle örtün. Varsayılan olarak devre " -"dışıdır." - -msgid "Support/raft interface" -msgstr "Destek/raft arayüzü" - -msgid "" -"Filament to print support interface. \"Default\" means no specific filament " -"for support interface and current filament is used" -msgstr "" -"Filament baskı desteği arayüzü. \"Varsayılan\", destek arayüzü için özel bir " -"filamanın olmadığı ve mevcut filamanın kullanıldığı anlamına gelir" - -msgid "Top interface layers" -msgstr "Üst arayüz katmanları" - -msgid "Number of top interface layers" -msgstr "Üst arayüz katmanlarının sayısı" - -msgid "Bottom interface layers" -msgstr "Alt arayüz katmanları" - -msgid "Top interface spacing" -msgstr "Üst arayüz aralığı" - -msgid "Spacing of interface lines. Zero means solid interface" -msgstr "Arayüz çizgilerinin aralığı. Sıfır, sağlam arayüz anlamına gelir" - -msgid "Bottom interface spacing" -msgstr "Alt arayüz aralığı" - -msgid "Spacing of bottom interface lines. Zero means solid interface" -msgstr "Alt arayüz çizgilerinin aralığı. Sıfır, sağlam arayüz anlamına gelir" - -msgid "Speed of support interface" -msgstr "Destek arayüzünün hızı" - -msgid "Base pattern" -msgstr "Destek Deseni" - -msgid "Line pattern of support" -msgstr "Desteğin çizgi deseni" - -msgid "Rectilinear grid" -msgstr "Doğrusal ızgara" - -msgid "Hollow" -msgstr "Oyuk" - -msgid "Interface pattern" -msgstr "Arayüz deseni" - -msgid "" -"Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support interface " -"is Concentric" -msgstr "" -"Destek arayüzünün çizgi deseni. Çözünmeyen destek arayüzü için varsayılan " -"model Doğrusaldır, çözünebilir destek arayüzü için varsayılan model ise " -"Eşmerkezlidir" - -msgid "Rectilinear Interlaced" -msgstr "Doğrusal Taramalı" - -msgid "Base pattern spacing" -msgstr "Destek desen aralığı" - -msgid "Spacing between support lines" -msgstr "Destek hatları arasındaki boşluk" - -msgid "Normal Support expansion" -msgstr "Normal Destek genişletmesi" - -msgid "Expand (+) or shrink (-) the horizontal span of normal support" -msgstr "Normal desteğin yatay açıklığını genişletin (+) veya daraltın (-)" - -msgid "Speed of support" -msgstr "Destek hızı" - -msgid "" -"Style and shape of the support. For normal support, projecting the supports " -"into a regular grid will create more stable supports (default), while snug " -"support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save a " -"lot of material (default), while hybrid style will create similar structure " -"to normal support under large flat overhangs." -msgstr "" -"Desteğin stili ve şekli. Normal destek için, desteklerin düzenli bir ızgaraya " -"yansıtılması daha sağlam destekler oluşturur (varsayılan), rahat destek " -"kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini azaltır.\n" -"Ağaç desteği için, ince stil, dalları daha agresif bir şekilde birleştirecek " -"ve çok fazla malzeme tasarrufu sağlayacak (varsayılan), hibrit stil ise büyük " -"düz çıkıntılar altında normal desteğe benzer yapı oluşturacaktır." - -msgid "Snug" -msgstr "Snug" - -msgid "Tree Slim" -msgstr "İnce Ağaç" - -msgid "Tree Strong" -msgstr "Güçlü Ağaç" - -msgid "Tree Hybrid" -msgstr "Hibrit Ağaç" - -msgid "Organic" -msgstr "Organik" - -msgid "Independent support layer height" -msgstr "Bağımsız destek katmanı yüksekliği" - -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 "" -"Destek katmanı, nesne katmanından bağımsız olarak katman yüksekliğini " -"kullanır. Bu, z aralığının özelleştirilmesine destek olmak ve yazdırma " -"süresinden tasarruf etmek içindir. Prime tower etkinleştirildiğinde bu " -"seçenek geçersiz olacaktır." - -msgid "Threshold angle" -msgstr "Destek açısı" - -msgid "" -"Support will be generated for overhangs whose slope angle is below the " -"threshold." -msgstr "Eğim açısı eşiğin altında olan çıkmalar için destek oluşturulacaktır." - -msgid "Tree support branch angle" -msgstr "Ağaç desteği dal açısı" - -msgid "" -"This setting determines the maximum overhang angle that t he branches of tree " -"support allowed to make.If the angle is increased, the branches can be " -"printed more horizontally, allowing them to reach farther." -msgstr "" -"Bu ayar, ağaç desteğinin dallarının oluşmasına izin verilen maksimum çıkıntı " -"açısını belirler. Açı artırılırsa, dallar daha yatay olarak basılabilir ve " -"daha uzağa ulaşır." - -msgid "Preferred Branch Angle" -msgstr "Tercih Edilen Dal Açısı" - -#. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" -msgid "" -"The preferred angle of the branches, when they do not have to avoid the " -"model. Use a lower angle to make them more vertical and more stable. Use a " -"higher angle for branches to merge faster." -msgstr "" -"Modelden kaçınmak zorunda olmadıklarında dalların tercih edilen açısı. Daha " -"dikey ve daha dengeli olmaları için daha düşük bir açı kullanın. Dalların " -"daha hızlı birleşmesi için daha yüksek bir açı kullanın." - -msgid "Tree support branch distance" -msgstr "Ağaç destek dal mesafesi" - -msgid "" -"This setting determines the distance between neighboring tree support nodes." -msgstr "Bu ayar, komşu ağaç destek düğümleri arasındaki mesafeyi belirler." - -msgid "Branch Density" -msgstr "Dal Yoğunluğu" - -#. TRN PrintSettings: "Organic supports" > "Branch Density" -msgid "" -"Adjusts the density of the support structure used to generate the tips of the " -"branches. A higher value results in better overhangs but the supports are " -"harder to remove, thus it is recommended to enable top support interfaces " -"instead of a high branch density value if dense interfaces are needed." -msgstr "" -"Dalların uçlarını oluşturmak için kullanılan destek yapısının yoğunluğunu " -"ayarlar. Daha yüksek bir değer daha iyi çıkıntılarla sonuçlanır, ancak " -"desteklerin çıkarılması daha zordur, bu nedenle yoğun arayüzler gerekiyorsa " -"yüksek bir dal yoğunluğu değeri yerine üst destek arayüzlerinin " -"etkinleştirilmesi önerilir." - -msgid "Adaptive layer height" -msgstr "Uyarlanabilir katman yüksekliği" - -msgid "" -"Enabling this option means the height of tree support layer except the first " -"will be automatically calculated " -msgstr "" -"Bu seçeneğin etkinleştirilmesi, ilki hariç ağaç destek katmanının " -"yüksekliğinin otomatik olarak hesaplanacağı anlamına gelir " - -msgid "Auto brim width" -msgstr "Otomatik kenar genişliği" - -msgid "" -"Enabling this option means the width of the brim for tree support will be " -"automatically calculated" -msgstr "" -"Bu seçeneğin etkinleştirilmesi, ağaç desteğinin kenar genişliğinin otomatik " -"olarak hesaplanacağı anlamına gelir" - -msgid "Tree support brim width" -msgstr "Ağaç desteği kenar genişliği" - -msgid "Distance from tree branch to the outermost brim line" -msgstr "Ağaç dalından en dış kenar çizgisine kadar olan mesafe" - -msgid "Tip Diameter" -msgstr "Uç Çapı" - -#. TRN PrintSettings: "Organic supports" > "Tip Diameter" -msgid "Branch tip diameter for organic supports." -msgstr "Organik destekler için dal ucu çapı." - -msgid "Tree support branch diameter" -msgstr "Ağaç destek dalı çapı" - -msgid "This setting determines the initial diameter of support nodes." -msgstr "Bu ayar, destek düğümlerinin başlangıç çapını belirler." - -#. TRN PrintSettings: #lmFIXME -msgid "Branch Diameter Angle" -msgstr "Dal Çapı Açısı" - -#. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" -msgid "" -"The angle of the branches' diameter as they gradually become thicker towards " -"the bottom. An angle of 0 will cause the branches to have uniform thickness " -"over their length. A bit of an angle can increase stability of the organic " -"support." -msgstr "" -"Aşağıya doğru giderek kalınlaşan dalların çapının açısı. Açının 0 olması, " -"dalların uzunlukları boyunca eşit kalınlığa sahip olmasına neden olacaktır. " -"Birazcık açı organik desteğin stabilitesini artırabilir." - -msgid "Branch Diameter with double walls" -msgstr "Çift duvarlı dal çapı" - -#. TRN PrintSettings: "Organic supports" > "Branch Diameter" -msgid "" -"Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no double " -"walls." -msgstr "" -"Bu çaptaki bir dairenin alanından daha büyük alana sahip dallar, stabilite " -"için çift duvarlı olarak basılacaktır. Çift duvar olmaması için bu değeri " -"sıfır olarak ayarlayın." - -msgid "Tree support wall loops" -msgstr "Ağaç desteği duvar döngüleri" - -msgid "This setting specify the count of walls around tree support" -msgstr "Bu ayar, ağaç desteğinin etrafındaki duvarların sayısını belirtir" - -msgid "Tree support with infill" -msgstr "Dolgulu ağaç desteği" - -msgid "" -"This setting specifies whether to add infill inside large hollows of tree " -"support" -msgstr "" -"Bu ayar, ağaç desteğinin büyük oyuklarının içine dolgu eklenip " -"eklenmeyeceğini belirtir" - -msgid "Chamber temperature" -msgstr "Bölme sıcaklığı" - -msgid "Target chamber temperature" -msgstr "Hedef bölme sıcaklığı" - -msgid "Nozzle temperature for layers after the initial one" -msgstr "İlk katmandan sonraki katmanlar için nozül sıcaklığı" - -msgid "Bed temperature difference" -msgstr "Yatak sıcaklığı farkı" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"Bu eşikten daha fazla bir süre için diğer katmanın yatak sıcaklığının ilk " -"katmandan daha düşük olmasını önermeyin. Diğer katmanın yatak sıcaklığının " -"çok düşük olması modelin baskı plakasından kopmasına neden olabilir" - -msgid "Detect thin wall" -msgstr "İnce duvarı algıla" - -msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop" -msgstr "" -"İki çizgi genişliğini içeremeyen ince duvarı tespit edin. Ve yazdırmak için " -"tek satır kullanın. Kapalı döngü olmadığından pek iyi basılmamış olabilir" - -msgid "" -"This gcode is inserted when change filament, including T command to trigger " -"tool change" -msgstr "" -"Bu gcode, takım değişimini tetiklemek için T komutu da dahil olmak üzere " -"filament değiştirildiğinde eklenir" - -msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over " -"the nozzle diameter." -msgstr "" -"Üst yüzeyler için çizgi genişliği. % olarak ifade edilirse Nozul çapı " -"üzerinden hesaplanacaktır." - -msgid "Speed of top surface infill which is solid" -msgstr "Sağlam üst yüzey dolgusunun hızı" - -msgid "Top shell layers" -msgstr "Üst katmanlar" - -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 top shell " -"thickness, the top shell layers will be increased" -msgstr "" -"Bu, üst yüzey katmanı da dahil olmak üzere üst kabuğun katı katmanlarının " -"sayısıdır. Bu değerle hesaplanan kalınlık üst kabuk kalınlığından ince " -"olduğunda üst kabuk katmanları artırılacaktır" - -msgid "Top solid layers" -msgstr "Üst katı katmanlar" - -msgid "Top shell thickness" -msgstr "Üst katman kalınlığı" - -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 shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top shell " -"layers" -msgstr "" -"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " -"dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " -"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " -"ayarın devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk " -"katmanları tarafından belirlendiği anlamına gelir" - -msgid "Speed of travel which is faster and without extrusion" -msgstr "Daha hızlı ve ekstrüzyonsuz seyahat hızı" - -msgid "Wipe while retracting" -msgstr "Geri çekme esnasında temizlik" - -msgid "" -"Move nozzle along the last extrusion path when retracting to clean leaked " -"material on nozzle. This can minimize blob when print new part after travel" -msgstr "" -"Nozul üzerinde sızan malzemeyi temizlemek için geri çekerken Nozulu son " -"ekstrüzyon yolu boyunca hareket ettirin. Bu işlem yeni parça yazdırırken " -"damlamayı en aza indirebilir" - -msgid "Wipe Distance" -msgstr "Temizleme Mesafesi" - -msgid "" -"Discribe how long the nozzle will move along the last path when retracting" -msgstr "" -"Geri çekme esnasında nozulun son hat boyunca ne kadar süre hareket edeceğini " -"belirtin" - -msgid "" -"The wiping tower can be used to clean up the residue on the nozzle and " -"stabilize the chamber pressure inside the nozzle, in order to avoid " -"appearance defects when printing objects." -msgstr "" -"Temizleme kulesi, nesneleri yazdırırken görünüm kusurlarını önlemek amacıyla " -"nozul üzerindeki kalıntıları temizlemek ve nozul içindeki oda basıncını " -"dengelemek için kullanılabilir." - -msgid "Purging volumes" -msgstr "Hacimlerin temizlenmesi" - -msgid "Flush multiplier" -msgstr "Temizleme çarpanı" - -msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by " -"the flushing volumes in the table." -msgstr "" -"Gerçek temizleme hacimleri, tablodaki temizleme hacimleri ile temizleme " -"çarpanının çarpımına eşittir." - -msgid "Prime volume" -msgstr "Ana hacim" - -msgid "The volume of material to prime extruder on tower." -msgstr "Kule üzerindeki ana ekstrüder malzeme hacmi." - -msgid "Width" -msgstr "Genişlik" - -msgid "Width of prime tower" -msgstr "Prime tower genişliği" - -msgid "Wipe tower rotation angle" -msgstr "Silme kulesi dönüş açısı" - -msgid "Wipe tower rotation angle with respect to x-axis." -msgstr "X eksenine göre silme kulesi dönüş açısı." - -msgid "Stabilization cone apex angle" -msgstr "Stabilizasyon konisi tepe açısı" - -msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. " -"Larger angle means wider base." -msgstr "" -"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki açı. " -"Daha büyük açı daha geniş taban anlamına gelir." - -msgid "Wipe tower purge lines spacing" -msgstr "Silme kulesi temizleme hatları aralığı" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Silme kulesindeki boşaltma hatlarının aralığı." - -msgid "Wipe tower extruder" -msgstr "Silme kulesi ekstrüderi" - -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 "" -"Silme kulesinin çevresini yazdırırken kullanılacak ekstrüder. Mevcut olanı " -"kullanmak için 0 olarak ayarlayın (çözünmeyen tercih edilir)." - -msgid "Purging volumes - load/unload volumes" -msgstr "Hacimleri temizleme - hacimleri yükleme/boşaltma" - -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 "" -"Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için " -"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme hacimlerinin " -"oluşturulmasını basitleştirmek için kullanılır." - -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 seen " -"outside. It will not take effect, unless the prime tower is enabled." -msgstr "" -"Filament değişiminden sonra temizleme, nesnelerin dolgularının içinde " -"yapılacaktır. Bu, atık miktarını azaltabilir ve baskı süresini kısaltabilir. " -"Duvarlar şeffaf filament ile basılmışsa, karışık renkli dolgu dışarıda " -"görülecektir. Ana kule etkinleştirilmediği sürece etkili olmayacaktır." - -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 the prime tower is enabled." -msgstr "" -"Filament değişiminden sonra temizleme, nesnelerin desteğinin içinde " -"yapılacaktır. Bu, atık miktarını azaltabilir ve baskı süresini kısaltabilir. " -"Prime tower etkinleştirilmediği sürece etkili olmayacaktır." - -msgid "" -"This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed as " -"a result. It will not take effect, unless the prime tower is enabled." -msgstr "" -"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için filament " -"değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç olarak " -"nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği sürece " -"etkili olmayacaktır." - -msgid "Maximal bridging distance" -msgstr "Maksimum köprüleme mesafesi" - -msgid "Maximal distance between supports on sparse infill sections." -msgstr "" -"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için bir " -"filament değişiminden sonra nozülü temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği " -"sürece etkili olmayacaktır." - -msgid "X-Y hole compensation" -msgstr "X-Y delik dengeleme" - -msgid "" -"Holes of object will be grown or shrunk in XY plane by the configured value. " -"Positive value makes holes bigger. Negative value makes holes smaller. This " -"function is used to adjust size slightly when the object has assembling issue" -msgstr "" -"Nesnenin delikleri XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer delikleri büyütür. Negatif değer delikleri " -"küçültür. Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe " -"ayarlamak için kullanılır" - -msgid "X-Y contour compensation" -msgstr "X-Y kontur telafisi" - -msgid "" -"Contour of object will be grown or shrunk in XY plane by the configured " -"value. Positive value makes contour bigger. Negative value makes contour " -"smaller. This function is used to adjust size slightly when the object has " -"assembling issue" -msgstr "" -"Nesnenin konturu XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. Bu " -"fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " -"kullanılır" - -msgid "G-code thumbnails" -msgstr "G-kodu küçük resimleri" - -msgid "" -"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " -"following format: \"XxY, XxY, ...\"" -msgstr "" -"Resim boyutları aşağıdaki formatta bir .gcode ve .sl1 / .sl1s dosyalarında " -"saklanacaktır: \"XxY, XxY, ...\"" - -msgid "Use relative E distances" -msgstr "Göreceli (relative) E mesafelerini kullan" - -msgid "" -"Relative extrusion is recommended when using \"label_objects\" option.Some " -"extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" -msgstr "" -"\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. Bazı " -"ekstrüderler bu seçeneğin işareti kaldırıldığında (mutlak ekstrüzyon modu) " -"daha iyi çalışır. Temizleme kulesi yalnızca göreceli modla uyumludur. " -"BambuLab yazıcılarında her zaman etkindir. Varsayılan olarak işaretlendi" - -msgid "" -"Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with variable " -"extrusion width" -msgstr "" -"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir ve " -"çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " -"ekstrüzyon genişliğine sahip duvarlar üretir" - -msgid "Classic" -msgstr "Klasik" - -msgid "Arachne" -msgstr "Arachne" - -msgid "Wall transition length" -msgstr "Duvar geçiş uzunluğu" - -msgid "" -"When transitioning between different numbers of walls as the part becomes " -"thinner, a certain amount of space is allotted to split or join the wall " -"segments. It's expressed as a percentage over nozzle diameter" -msgstr "" -"Parça inceldikçe farklı sayıdaki duvarlar arasında geçiş yaparken, duvar " -"parçalarını bölmek veya birleştirmek için belirli bir miktar alan ayrılır. " -"Nozul çapına göre yüzde olarak ifade edilir" - -msgid "Wall transitioning filter margin" -msgstr "Duvar geçiş filtresi oranı" - -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 "" -"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu kenar " -"boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " -"genişliği + kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri " -"aralığını genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da " -"ekstrüzyonun başlama/durma sayısını ve seyahat süresini azaltır. Bununla " -"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı ekstrüzyon " -"sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade edilir" - -msgid "Wall transitioning threshold angle" -msgstr "Duvar geçiş açısı" - -msgid "" -"When to create transitions between even and odd numbers of walls. A wedge " -"shape with an angle greater than this setting will not have transitions and " -"no walls will be printed in the center to fill the remaining space. Reducing " -"this setting reduces the number and length of these center walls, but may " -"leave gaps or overextrude" -msgstr "" -"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? Bu " -"ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak ve " -"kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu ayarın " -"düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır ancak " -"boşluklara veya aşırı çıkıntıya neden olabilir" - -msgid "Wall distribution count" -msgstr "Duvar dağılım sayısı" - -msgid "" -"The number of walls, counted from the center, over which the variation needs " -"to be spread. Lower values mean that the outer walls don't change in width" -msgstr "" -"Varyasyonun yayılması gereken, merkezden sayılan duvar sayısı. Daha düşük " -"değerler, dış duvarların genişliğinin değişmediği anlamına gelir" - -msgid "Minimum feature size" -msgstr "Minimum özellik boyutu" - -msgid "" -"Minimum thickness of thin features. Model features that are thinner than this " -"value will not be printed, while features thicker than the Minimum feature " -"size will be widened to the Minimum wall width. It's expressed as a " -"percentage over nozzle diameter" -msgstr "" -"İnce özellikler için minimum kalınlık. Bu değerden daha ince olan model " -"özellikleri yazdırılmayacak, Minimum özellik boyutundan daha kalın olan " -"özellikler ise Minimum duvar genişliğine genişletilecektir. Nozul çapı " -"üzerinden yüzde olarak ifade edilir" - -msgid "First layer minimum wall width" -msgstr "İlk katman minimum duvar genişliği" - -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 "" -"İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile " -"aynı boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " -"beklenmektedir." - -msgid "Minimum wall width" -msgstr "Minimum duvar genişliği" - -msgid "" -"Width of the wall that will replace thin features (according to the Minimum " -"feature size) of the model. If the Minimum wall width is thinner than the " -"thickness of the feature, the wall will become as thick as the feature " -"itself. It's expressed as a percentage over nozzle diameter" -msgstr "" -"Modelin ince özelliklerinin yerini alacak duvarın genişliği (Minimum özellik " -"boyutuna göre). Minimum duvar genişliği özelliğin kalınlığından daha inceyse " -"duvar, özelliğin kendisi kadar kalın olacaktır. Nozul çapına göre yüzde " -"olarak ifade edilir" - -msgid "Detect narrow internal solid infill" -msgstr "Dar iç katı dolguyu tespit et" - -msgid "" -"This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. Otherwise, " -"rectilinear pattern is used defaultly." -msgstr "" -"Bu seçenek dar dahili katı dolgu alanını otomatik olarak algılayacaktır. " -"Etkinleştirilirse, yazdırmayı hızlandırmak amacıyla alanda eşmerkezli desen " -"kullanılacaktır. Aksi takdirde varsayılan olarak doğrusal desen kullanılır." - -msgid "invalid value " -msgstr "geçersiz değer " - -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " 100%% yoğunlukta çalışmıyor " - -msgid "Invalid value when spiral vase mode is enabled: " -msgstr "Spiral vazo modu etkinleştirildiğinde geçersiz değer: " - -msgid "too large line width " -msgstr "çok büyük çizgi genişliği " - -msgid " not in range " -msgstr " aralıkta değil " - -msgid "Export 3MF" -msgstr "3MF'yi dışa aktar" - -msgid "Export project as 3MF." -msgstr "Projeyi 3MF olarak dışa aktarın." - -msgid "Export slicing data" -msgstr "Dilimleme verilerini dışa aktar" - -msgid "Export slicing data to a folder." -msgstr "Dilimleme verilerini bir klasöre aktarın." - -msgid "Load slicing data" -msgstr "Dilimleme verilerini yükle" - -msgid "Load cached slicing data from directory" -msgstr "Önbelleğe alınmış dilimleme verilerini dizinden yükle" - -msgid "Export STL" -msgstr "STL'yi dışa aktar" - -msgid "Export the objects as multiple STL." -msgstr "Nesneleri birden çok STL olarak dışa aktarın." - -msgid "Slice" -msgstr "Dilimle" - -msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" -msgstr "Plakaları dilimleyin: 0-tüm plakalar, i-plaka i, diğerleri-geçersiz" - -msgid "Show command help." -msgstr "Komut yardımını göster." - -msgid "UpToDate" -msgstr "Güncel" - -msgid "Update the configs values of 3mf to latest." -msgstr "3mf'nin yapılandırma değerlerini en son sürüme güncelleyin." - -msgid "Load default filaments" -msgstr "Varsayılan filamentleri yükle" - -msgid "Load first filament as default for those not loaded" -msgstr "Yüklenmeyenler için ilk filamanı varsayılan olarak yükleyin" - -msgid "mtcpp" -msgstr "mtcpp" - -msgid "max triangle count per plate for slicing." -msgstr "dilimleme için plaka başına maksimum üçgen sayısı." - -msgid "mstpp" -msgstr "mstpp" - -msgid "max slicing time per plate in seconds." -msgstr "saniye cinsinden plaka başına maksimum dilimleme süresi." - -msgid "No check" -msgstr "Kontrol yok" - -msgid "Do not run any validity checks, such as gcode path conflicts check." -msgstr "" -"Gcode yol çakışmaları kontrolü gibi herhangi bir geçerlilik kontrolü " -"çalıştırmayın." - -msgid "Normative check" -msgstr "Normatif kontrol" - -msgid "Check the normative items." -msgstr "Normatif maddeleri kontrol edin." - -msgid "Output Model Info" -msgstr "Çıktı Model Bilgileri" - -msgid "Output the model's information." -msgstr "Modelin bilgilerini çıktıla." - -msgid "Export Settings" -msgstr "Dışa Aktarma Ayarları" - -msgid "Export settings to a file." -msgstr "Ayarları bir dosyaya aktarın." - -msgid "Send progress to pipe" -msgstr "İlerlemeyi kanala gönder" - -msgid "Send progress to pipe." -msgstr "İlerlemeyi boruya gönder." - -msgid "Arrange Options" -msgstr "Hizalama Seçenekleri" - -msgid "Arrange options: 0-disable, 1-enable, others-auto" -msgstr "Hizalama seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğer-otomatik" - -msgid "Repetions count" -msgstr "Tekrar sayısı" - -msgid "Repetions count of the whole model" -msgstr "Tüm modelin tekrar sayısı" - -msgid "Convert Unit" -msgstr "Birimi Dönüştür" - -msgid "Convert the units of model" -msgstr "Modelin birimlerini dönüştür" - -msgid "Orient the model" -msgstr "Modeli döndür" - -msgid "Scale the model by a float factor" -msgstr "Modeli kayan nokta faktörüne göre ölçeklendirin" - -msgid "Load General Settings" -msgstr "Genel Ayarları Yükle" - -msgid "Load process/machine settings from the specified file" -msgstr "Belirtilen dosyadan proses/yazıcıayarlarını yükleyin" - -msgid "Load Filament Settings" -msgstr "Filament Ayarlarını Yükle" - -msgid "Load filament settings from the specified file list" -msgstr "Filament ayarlarını belirtilen dosya listesinden yükleyin" - -msgid "Skip Objects" -msgstr "Nesneleri Atla" - -msgid "Skip some objects in this print" -msgstr "Bu baskıdaki bazı nesneleri atla" - -msgid "load uptodate process/machine settings when using uptodate" -msgstr "güncellemeyi kullanırken güncelleme işlemi/yazıcıayarlarını yükle" - -msgid "" -"load uptodate process/machine settings from the specified file when using " -"uptodate" -msgstr "" -"güncellemeyi kullanırken belirtilen dosyadan güncel işlem/yazıcıayarlarını " -"yükle" - -msgid "Data directory" -msgstr "Veri dizini" - -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." -msgstr "" -"Ayarları verilen dizine yükleyin ve saklayın. Bu, farklı profilleri korumak " -"veya bir ağ depolama birimindeki yapılandırmaları dahil etmek için " -"kullanışlıdır." - -msgid "Output directory" -msgstr "Çıkış dizini" - -msgid "Output directory for the exported files." -msgstr "Dışa aktarılan dosyalar için çıkış dizini." - -msgid "Debug level" -msgstr "Hata ayıklama düzeyi" - -msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" -msgstr "" -"Hata ayıklama günlüğü düzeyini ayarlar. 0:önemli, 1:hata, 2:uyarı, 3:bilgi, 4:" -"hata ayıklama, 5:izleme\n" - -msgid "Error in zip archive" -msgstr "Zip arşivinde hata" - -msgid "Generating walls" -msgstr "Duvar oluşturma" - -msgid "Generating infill regions" -msgstr "Dolgu bölgeleri oluşturma" - -msgid "Generating infill toolpath" -msgstr "Dolgu takım yolu oluşturma" - -msgid "Detect overhangs for auto-lift" -msgstr "Otomatik kaldırma için çıkıntıları tespit edin" - -msgid "Generating support" -msgstr "Destek oluşturma" - -msgid "Checking support necessity" -msgstr "Destek gerekliliğinin kontrol edilmesi" - -msgid "floating regions" -msgstr "yayılmış bölgeler" - -msgid "floating cantilever" -msgstr "yüzen konsol" - -msgid "large overhangs" -msgstr "büyük çıkıntılar" - -#, c-format, boost-format -msgid "" -"It seems object %s has %s. Please re-orient the object or enable support " -"generation." -msgstr "" -"Görünüşe göre %s nesnesinde %s var. Lütfen nesneyi yeniden yönlendirin veya " -"destek oluşturmayı etkinleştirin." - -msgid "Optimizing toolpath" -msgstr "Takım yolunu optimize etme" - -msgid "Empty layers around bottom are replaced by nearest normal layers." -msgstr "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." - -msgid "The model has too many empty layers." -msgstr "Modelde çok fazla boş katman var." - -msgid "Slicing mesh" -msgstr "Mesh dilimleme" - -msgid "" -"No layers were detected. You might want to repair your STL file(s) or check " -"their size or thickness and retry.\n" -msgstr "" -"Hiçbir katman algılanmadı. STL dosyalarınızı onarmak veya boyutlarını veya " -"kalınlıklarını kontrol edip yeniden denemek isteyebilirsiniz.\n" - -msgid "" -"An object's XY size compensation will not be used because it is also color-" -"painted.\n" -"XY Size compensation can not be combined with color-painting." -msgstr "" -"Bir nesnenin XY boyutu telafisi , aynı zamanda renkli boyalı olduğundan " -"kullanılmayacaktır.\n" -"XY Boyut telafisi renkli boyamayla birleştirilemez." - -#, c-format, boost-format -msgid "Support: generate toolpath at layer %d" -msgstr "Destek: %d katmanında takım yolu oluştur" - -msgid "Support: detect overhangs" -msgstr "Destek: çıkıntıları tespit et" - -msgid "Support: generate contact points" -msgstr "Destek: iletişim noktaları oluştur" - -msgid "Support: propagate branches" -msgstr "Destek: dal şeklinde oluştur" - -msgid "Support: draw polygons" -msgstr "Destek: çokgen çizme" - -msgid "Support: generate toolpath" -msgstr "Destek: takım yolu oluştur" - -#, c-format, boost-format -msgid "Support: generate polygons at layer %d" -msgstr "Destek: %d katmanında çokgenler oluşturma" - -#, c-format, boost-format -msgid "Support: fix holes at layer %d" -msgstr "Destek: %d katmanındaki delikleri düzeltin" - -#, c-format, boost-format -msgid "Support: propagate branches at layer %d" -msgstr "Destek: %d katmanındaki dalları çoğalt" - -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Bilinmeyen dosya formatı. Giriş dosyası .stl, .obj, .amf(.xml) uzantılı " -"olmalıdır." - -msgid "Loading of a model file failed." -msgstr "Model dosyasının yüklenmesi başarısız oldu." - -msgid "The supplied file couldn't be read because it's empty" -msgstr "Sağlanan dosya boş olduğundan okunamadı" - -msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." -msgstr "" -"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı olmalıdır." - -msgid "Canceled" -msgstr "İptal edildi" - -msgid "load_obj: failed to parse" -msgstr "load_obj: ayrıştırılamadı" - -msgid "The file contains polygons with more than 4 vertices." -msgstr "Dosya 4'ten fazla köşesi olan çokgenler içeriyor." - -msgid "The file contains polygons with less than 2 vertices." -msgstr "Dosya 2'den az köşesi olan çokgenler içeriyor." - -msgid "The file contains invalid vertex index." -msgstr "Dosya geçersiz köşe dizini içeriyor." - -msgid "This OBJ file couldn't be read because it's empty." -msgstr "Bu OBJ dosyası boş olduğundan okunamadı." - -msgid "Flow Rate Calibration" -msgstr "Akış Hızı Kalibrasyonu" - -msgid "Max Volumetric Speed Calibration" -msgstr "Maksimum Hacimsel Hız Kalibrasyonu" - -msgid "Manage Result" -msgstr "Sonucu Yönet" - -msgid "Manual Calibration" -msgstr "Manuel Kalibrasyon" - -msgid "Result can be read by human eyes." -msgstr "Sonuç insan gözüyle okunabilir." - -msgid "Auto-Calibration" -msgstr "Otomatik Kalibrasyon" - -msgid "We would use Lidar to read the calibration result" -msgstr "Kalibrasyon sonucunu okumak için Lidar'ı kullanırdık" - -msgid "Prev" -msgstr "Önceki" - -msgid "Recalibration" -msgstr "Yeniden kalibrasyon" - -msgid "Calibrate" -msgstr "Kalibre et" - -msgid "Finish" -msgstr "Bitir" - -msgid "Wiki" -msgstr "Viki" - -msgid "How to use calibration result?" -msgstr "Kalibrasyon sonucu nasıl kullanılır?" - -msgid "" -"You could change the Flow Dynamics Calibration Factor in material editing" -msgstr "" -"Malzeme düzenlemede Akış Dinamiği Kalibrasyon Faktörünü değiştirebilirsiniz" - -msgid "" -"The current firmware version of the printer does not support calibration.\n" -"Please upgrade the printer firmware." -msgstr "" -"Yazıcının mevcut ürün yazılımı sürümü kalibrasyonu desteklemiyor.\n" -"Lütfen yazıcının ürün yazılımını yükseltin." - -msgid "Calibration not supported" -msgstr "Kalibrasyon desteklenmiyor" - -msgid "Flow Dynamics" -msgstr "Akış Dinamiği" - -msgid "Flow Rate" -msgstr "Akış hızı" - -msgid "Max Volumetric Speed" -msgstr "Maksimum Hacimsel Hız" - -msgid "Please enter the name you want to save to printer." -msgstr "Lütfen yazıcıya kaydetmek istediğiniz adı girin." - -msgid "The name cannot exceed 40 characters." -msgstr "Ad 40 karakteri aşamaz." - -msgid "The name cannot be empty." -msgstr "Ad boş olamaz." - -msgid "The selected preset: %1% is not found." -msgstr "Seçilen ön ayar: %1% bulunamadı." - -msgid "The name cannot be the same as the system preset name." -msgstr "Ad, sistem ön ayarının adıyla aynı olamaz." - -msgid "The name is the same as another existing preset name" -msgstr "Ad, mevcut başka bir ön ayar adıyla aynı" - -msgid "create new preset failed." -msgstr "yeni ön ayar oluşturma başarısız oldu." - -msgid "" -"Are you sure to cancel the current calibration and return to the home page?" -msgstr "" -"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin misiniz?" - -msgid "No Printer Connected!" -msgstr "Yazıcı Bağlı Değil!" - -msgid "Printer is not connected yet." -msgstr "Yazıcı henüz bağlanmadı." - -msgid "Please select filament to calibrate." -msgstr "Lütfen kalibre edilecek filamenti seçin." - -msgid "Connecting to printer..." -msgstr "Yazıcıya bağlanılıyor..." - -msgid "The failed test result has been dropped." -msgstr "Başarısız olan test sonucu düşürüldü." - -msgid "Flow Dynamics Calibration result has been saved to the printer" -msgstr "Akış Dinamiği Kalibrasyonu sonucu yazıcıya kaydedildi" - -msgid "Internal Error" -msgstr "İç hata" - -msgid "Please select at least one filament for calibration" -msgstr "Lütfen kalibrasyon için en az bir filament seçin" - -msgid "Flow rate calibration result has been saved to preset" -msgstr "Akış hızı kalibrasyon sonucu ön ayara kaydedildi" - -msgid "The input value size must be 3." -msgstr "Giriş değeri boyutu 3 olmalıdır." - -msgid "Max volumetric speed calibration result has been saved to preset" -msgstr "Maksimum hacimsel hız kalibrasyon sonucu ön ayara kaydedildi" - -msgid "When do you need Flow Dynamics Calibration" -msgstr "Akış Dinamiği Kalibrasyonuna ne zaman ihtiyacınız olur" - -msgid "" -"We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future use. " -"You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the filament " -"is damp;\n" -"2. if the nozzle is worn out or replaced with a new one;\n" -"3. If the max volumetric speed or print temperature is changed in the " -"filament setting." -msgstr "" -"Artık farklı filamentler için tamamen otomatik olan otomatik kalibrasyonu " -"ekledik ve sonuç ileride kullanılmak üzere yazıcıya kaydedilecek. " -"Kalibrasyonu yalnızca aşağıdaki sınırlı durumlarda yapmanız gerekir:\n" -"1. Farklı marka/modelde yeni bir filament taktıysanız veya filament " -"nemliyse;\n" -"2. Nozul aşınmışsa veya yenisiyle değiştirilmişse;\n" -"3. Filament ayarında maksimum hacimsel hız veya baskı sıcaklığı " -"değiştirilirse." - -msgid "About this calibration" -msgstr "Bu kalibrasyon hakkında" - -msgid "" -"Please find the details of Flow Dynamics Calibration from our wiki.\n" -"\n" -"Usually the calibration is unnecessary. When you start a single color/" -"material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the filament " -"before the print; When you start a multi color/material print, the printer " -"will use the default compensation parameter for the filament during every " -"filament switch which will have a good result in most cases.\n" -"\n" -"Please note there are a few cases that will make the calibration result not " -"reliable: using a texture plate to do the calibration; the build plate does " -"not have good adhesion (please wash the build plate or apply gluestick!) ..." -"You can find more from our wiki.\n" -"\n" -"The calibration results have about 10 percent jitter in our test, which may " -"cause the result not exactly the same in each calibration. We are still " -"investigating the root cause to do improvements with new updates." -msgstr "" -"Lütfen Akış Dinamiği Kalibrasyonunun ayrıntılarını wiki'mizden " -"bulabilirsiniz.\n" -"\n" -"Genellikle kalibrasyon gereksizdir. Yazdırma başlat menüsündeki \"akış " -"dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme baskısını " -"başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan önce filamanı " -"kalibre edecektir; Çok renkli/malzeme baskısını başlattığınızda, yazıcı her " -"filament değişiminde filament için varsayılan dengeleme parametresini " -"kullanacaktır ve bu çoğu durumda iyi bir sonuç verecektir.\n" -"\n" -"Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum olduğunu " -"lütfen unutmayın: kalibrasyonu yapmak için doku plakası kullanmak; baskı " -"plakasının yapışması iyi değil (lütfen baskı plakasını yıkayın veya " -"yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden bulabilirsiniz.\n" -"\n" -"Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim var ve " -"bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden olabilir. " -"Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel nedeni " -"araştırıyoruz." - -msgid "When to use Flow Rate Calibration" -msgstr "Akış Hızı Kalibrasyonu ne zaman kullanılmalı" - -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" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " -"top layer of the model, even when printing slowly.\n" -"3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " -"they should be." -msgstr "" -"Akış Dinamiği Kalibrasyonunu kullandıktan sonra hâlâ aşağıdaki gibi bazı " -"ekstrüzyon sorunları olabilir:\n" -"1. Aşırı Ekstrüzyon: Basılı nesnenizdeki fazla malzeme, kabarcıklar veya " -"sivilceler oluşturuyor veya katmanlar beklenenden daha kalın görünüyor ve " -"tekdüze değil.\n" -"2. Eksik Ekstrüzyon: Yavaş yazdırırken bile çok ince katmanlar, zayıf dolgu " -"mukavemeti veya modelin üst katmanındaki boşluklar.\n" -"3. Kötü Yüzey Kalitesi: Baskılarınızın yüzeyi pürüzlü veya düzensiz " -"görünüyor.\n" -"4. Zayıf Yapısal Bütünlük: Baskılar kolayca kırılıyor veya olması gerektiği " -"kadar sağlam görünmüyor." - -msgid "" -"In addition, Flow Rate Calibration is crucial for foaming materials like LW-" -"PLA used in RC planes. These materials expand greatly when heated, and " -"calibration provides a useful reference flow rate." -msgstr "" -"Ayrıca RC uçaklarında kullanılan LW-PLA gibi köpürtücü malzemeler için Akış " -"Hızı Kalibrasyonu çok önemlidir. Bu malzemeler ısıtıldığında büyük oranda " -"genleşir ve kalibrasyon yararlı bir referans akış hızı sağlar." - -msgid "" -"Flow Rate Calibration measures the ratio of expected to actual extrusion " -"volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular filament, " -"you usually won't need to perform a Flow Rate Calibration unless you still " -"see the listed defects after you have done other calibrations. For more " -"details, please check out the wiki article." -msgstr "" -"Akış Hızı Kalibrasyonu, beklenen ekstrüzyon hacimlerinin gerçek ekstrüzyon " -"hacimlerine oranını ölçer. Varsayılan ayar, önceden kalibre edilmiş ve ince " -"ayar yapılmış olduğundan Bambu Lab yazıcılarında ve resmi filamentlerde iyi " -"çalışır. Normal bir filament için, diğer kalibrasyonları yaptıktan sonra " -"listelenen kusurları hâlâ göremediğiniz sürece genellikle Akış Hızı " -"Kalibrasyonu yapmanıza gerek kalmaz. Daha fazla ayrıntı için lütfen wiki " -"makalesine göz atın." - -msgid "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " -"directly measuring the calibration patterns. However, please be advised that " -"the efficacy and accuracy of this method may be compromised with specific " -"types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not be " -"suitable for this calibration and can produce less-than-desirable results.\n" -"\n" -"The calibration results may vary between each calibration or filament. We are " -"still improving the accuracy and compatibility of this calibration through " -"firmware updates over time.\n" -"\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only " -"by those who fully understand its purpose and implications. Incorrect usage " -"can lead to sub-par prints or printer damage. Please make sure to carefully " -"read and understand the process before doing it." -msgstr "" -"Otomatik Akış Hızı Kalibrasyonu, Bambu Lab'ın Mikro-Lidar teknolojisini " -"kullanarak kalibrasyon modellerini doğrudan ölçer. Ancak, bu yöntemin " -"etkinliğinin ve doğruluğunun belirli malzeme türleriyle tehlikeye " -"girebileceğini lütfen unutmayın. Özellikle şeffaf veya yarı şeffaf, parlak " -"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon için " -"uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" -"\n" -"Kalibrasyon sonuçları her kalibrasyon veya filament arasında farklılık " -"gösterebilir. Zaman içinde ürün yazılımı güncellemeleriyle bu kalibrasyonun " -"doğruluğunu ve uyumluluğunu geliştirmeye devam ediyoruz.\n" -"\n" -"Dikkat: Akış Hızı Kalibrasyonu, yalnızca amacını ve sonuçlarını tam olarak " -"anlayan kişiler tarafından denenmesi gereken gelişmiş bir işlemdir. Yanlış " -"kullanım, ortalamanın altında baskılara veya yazıcının zarar görmesine neden " -"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup anladığınızdan " -"emin olun." - -msgid "When you need Max Volumetric Speed Calibration" -msgstr "Maksimum Hacimsel Hız Kalibrasyonuna ihtiyaç duyduğunuzda" - -msgid "Over-extrusion or under extrusion" -msgstr "Aşırı ekstrüzyon veya düşük ekstrüzyon" - -msgid "Max Volumetric Speed calibration is recommended when you print with:" -msgstr "" -"Aşağıdakilerle yazdırdığınızda Maksimum Hacimsel Hız kalibrasyonu önerilir:" - -msgid "material with significant thermal shrinkage/expansion, such as..." -msgstr "önemli termal büzülme/genleşmeye sahip malzeme, örneğin..." - -msgid "materials with inaccurate filament diameter" -msgstr "yanlış filament çapına sahip malzemeler" - -msgid "We found the best Flow Dynamics Calibration Factor" -msgstr "En iyi Akış Dinamiği Kalibrasyon Faktörünü bulduk" - -msgid "" -"Part of the calibration failed! You may clean the plate and retry. The failed " -"test result would be dropped." -msgstr "" -"Kalibrasyonun bir kısmı başarısız oldu! Plakayı temizleyip tekrar " -"deneyebilirsiniz. Başarısız olan test sonucu görmezden gelinir." - -msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in the " -"Name" -msgstr "*İsme marka, malzeme, tür ve hatta nem seviyesini eklemenizi öneririz" - -msgid "Failed" -msgstr "Başarısız" - -msgid "" -"Only one of the results with the same name will be saved. Are you sure you " -"want to overrides the other results?" -msgstr "" -"Aynı ada sahip sonuçlardan yalnızca biri kaydedilecektir. Diğer sonuçları " -"geçersiz kılmak istediğinizden emin misiniz?" - -#, c-format, boost-format -msgid "" -"There is already a historical calibration result with the same name: %s. Only " -"one of the results with the same name is saved. Are you sure you want to " -"overrides the historical result?" -msgstr "" -"Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " -"sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " -"istediğinizden emin misiniz?" - -msgid "Please find the best line on your plate" -msgstr "Lütfen plakadaki en iyi çizgiyi bulun" - -msgid "Input Value" -msgstr "Girdi değeri" - -msgid "Save to Filament Preset" -msgstr "Filament Ön Ayarına Kaydet" - -msgid "Preset" -msgstr "Ön ayar" - -msgid "Record Factor" -msgstr "Kayıt Faktörü" - -msgid "We found the best flow ratio for you" -msgstr "Sizin için en iyi akış oranını bulduk" - -msgid "Flow Ratio" -msgstr "Akış Oranı" - -msgid "Please input a valid value (0.0 < flow ratio < 2.0)" -msgstr "Lütfen geçerli bir değer girin (0,0 < akış oranı < 2,0)" - -msgid "Please enter the name of the preset you want to save." -msgstr "Lütfen kaydetmek istediğiniz ön ayarın adını girin." - -msgid "Calibration1" -msgstr "Kalibrasyon1" - -msgid "Calibration2" -msgstr "Kalibrasyon2" - -msgid "Please find the best object on your plate" -msgstr "Lütfen plakadaki en iyi nesneyi bulun" - -msgid "Fill in the value above the block with smoothest top surface" -msgstr "En pürüzsüz üst yüzeye sahip bloğun üzerindeki değeri doldurun" - -msgid "Skip Calibration2" -msgstr "Kalibrasyon2'yi atla" - -msgid "flow ratio : %s " -msgstr "akış oranı : %s " - -msgid "Please choose a block with smoothest top surface" -msgstr "Lütfen üst yüzeyi en pürüzsüz olan bloğu seçin" - -msgid "Please choose a block with smoothest top surface." -msgstr "Lütfen üst yüzeyi en pürüzsüz olan bloğu seçin." - -msgid "Please input a valid value (0 <= Max Volumetric Speed <= 60)" -msgstr "Lütfen geçerli bir değer girin (0 <= Maksimum Hacimsel Hız <= 60)" - -msgid "Calibration Type" -msgstr "Kalibrasyon Türü" - -msgid "Complete Calibration" -msgstr "Kalibrasyonu Tamamla" - -msgid "Fine Calibration based on flow ratio" -msgstr "Akış oranına dayalı İnce Kalibrasyon" - -msgid "Title" -msgstr "Başlık" - -msgid "" -"A test model will be printed. Please clear the build plate and place it back " -"to the hot bed before calibration." -msgstr "" -"Test modeli yazdırılacaktır. Kalibrasyondan önce lütfen baskı plakasını " -"temizleyin ve yatağa geri koyun." - -msgid "Printing Parameters" -msgstr "Yazdırma Parametreleri" - -msgid "- ℃" -msgstr "- °C" - -msgid " ℃" -msgstr " °C" - -msgid "Plate Type" -msgstr "Plaka Tipi" - -msgid "filament position" -msgstr "filament konumu" - -msgid "External Spool" -msgstr "Harici Makara" - -msgid "Filament For Calibration" -msgstr "Kalibrasyon İçin Filament" - -msgid "" -"Tips for calibration material: \n" -"- Materials that can share same hot bed temperature\n" -"- Different filament brand and family(Brand = Bambu, Family = Basic, Matte)" -msgstr "" -"Kalibrasyon malzemesi için ipuçları:\n" -"- Aynı baskı yatağı sıcaklığını paylaşabilen malzemeler\n" -"- Farklı filament markası ve türü(Marka = Bambu, Tür = Basic, Matte)" - -msgid "Error desc" -msgstr "Hata açıklaması" - -msgid "Extra info" -msgstr "Fazladan bilgi" - -msgid "%s is not compatible with %s" -msgstr "%s, %s ile uyumlu değil" - -msgid "TPU is not supported for Flow Dynamics Auto-Calibration." -msgstr "Flow Dynamics Otomatik Kalibrasyonunda TPU desteklenmiyor." - -msgid "Connecting to printer" -msgstr "Yazıcıya bağlanılıyor" - -msgid "The nozzle diameter has been synchronized from the printer Settings" -msgstr "Nozul çapı yazıcı ayarlarından senkronize edildi" - -msgid "From Volumetric Speed" -msgstr "Hacimsel Hızdan" - -msgid "To Volumetric Speed" -msgstr "Hacimsel Hıza" - -msgid "Flow Dynamics Calibration Result" -msgstr "Akış Dinamiği Kalibrasyon Sonucu" - -msgid "No History Result" -msgstr "Geçmiş Sonucu Yok" - -msgid "Success to get history result" -msgstr "Geçmiş sonucunu alma başarısı" - -msgid "Refreshing the historical Flow Dynamics Calibration records" -msgstr "Geçmiş Akış Dinamiği Kalibrasyon kayıtlarını yenileme" - -msgid "Action" -msgstr "İşlem" - -msgid "Edit Flow Dynamics Calibration" -msgstr "Akış Dinamiği Kalibrasyonunu Düzenle" - -msgid "Network lookup" -msgstr "Ağ araması" - -msgid "Address" -msgstr "Adres" - -msgid "Hostname" -msgstr "Ana yazıcıadı" - -msgid "Service name" -msgstr "Hizmet adı" - -msgid "OctoPrint version" -msgstr "OctoPrint sürümü" - -msgid "Searching for devices" -msgstr "Cihazlar aranıyor" - -msgid "Finished" -msgstr "Bitti" - -msgid "Multiple resolved IP addresses" -msgstr "Birden fazla çözülmüş IP adresi" - -#, boost-format -msgid "" -"There are several IP addresses resolving to hostname %1%.\n" -"Please select one that should be used." -msgstr "" -"%1% ana bilgisayar adına çözümlenen birkaç IP adresi var.\n" -"Hangisinin kullanılacağını seçin." - -msgid "Unable to perform boolean operation on selected parts" -msgstr "Seçilen parçalarda bölme işlemi gerçekleştirilemiyor" - -msgid "Mesh Boolean" -msgstr "Mesh Boolean" - -msgid "Union" -msgstr "Union" - -msgid "Difference" -msgstr "Fark" - -msgid "Intersection" -msgstr "Kesişim" - -msgid "Source Volume" -msgstr "Kaynak Hacmi" - -msgid "Tool Volume" -msgstr "Araç Hacmi" - -msgid "Subtract from" -msgstr "Şundan çıkar" - -msgid "Subtract with" -msgstr "Şununla çıkar" - -msgid "selected" -msgstr "seçili" - -msgid "Part 1" -msgstr "Bölüm 1" - -msgid "Part 2" -msgstr "Bölüm 2" - -msgid "Delete input" -msgstr "Girişi sil" - -msgid "Send to print" -msgstr "Baskıya gönder" - -msgid "Upload to Printer Host with the following filename:" -msgstr "Yazıcıya aşağıdaki dosya adıyla yükleyin:" - -msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "Gerekirse dizin ayırıcısı olarak eğik çizgileri ( / ) kullanın." - -msgid "Upload to storage" -msgstr "Depolama alanına yükle" - -#, c-format, boost-format -msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" -msgstr "Yüklenen dosya adı \"%s\" ile bitmiyor. Devam etmek istiyor musunuz?" - -msgid "Upload and Print" -msgstr "Yükle ve Yazdır" - -msgid "Simulate" -msgstr "Simülasyon" - -msgid "Print host upload queue" -msgstr "Ana yazıcıyükleme kuyruğunu yazdır" - -msgid "ID" -msgstr "İD" - -msgid "Progress" -msgstr "İlerleme" - -msgid "Host" -msgstr "Host" - -msgctxt "OfFile" -msgid "Size" -msgstr "Boyut" - -msgid "Filename" -msgstr "Dosya adı" - -msgid "Error Message" -msgstr "Hata mesajı" - -msgid "Cancel selected" -msgstr "Seçileni iptal et" - -msgid "Show error message" -msgstr "Hata mesajını göster" - -msgid "Enqueued" -msgstr "Sıraya alındı" - -msgid "Uploading" -msgstr "Yükleniyor" - -msgid "Cancelling" -msgstr "İptal Ediliyor" - -msgid "Error uploading to print host:" -msgstr "Ana bilgisayara yükleme hatası:" - -msgid "PA Calibration" -msgstr "PA Kalibrasyonu" - -msgid "DDE" -msgstr "DDE" - -msgid "Bowden" -msgstr "Bowden" - -msgid "Extruder type" -msgstr "Ekstruder tipi" - -msgid "PA Tower" -msgstr "PA Kulesi" - -msgid "PA Line" -msgstr "PA Çizgi" - -msgid "PA Pattern" -msgstr "PA Deseni" - -msgid "Method" -msgstr "Yöntem" - -msgid "Start PA: " -msgstr "PA başlangıcı: " - -msgid "End PA: " -msgstr "PA bitişi: " - -msgid "PA step: " -msgstr "PA adımı: " - -msgid "Print numbers" -msgstr "Sayıları yazdır" - -msgid "" -"Please input valid values:\n" -"Start PA: >= 0.0\n" -"End PA: > Start PA\n" -"PA step: >= 0.001)" -msgstr "" -"Lütfen geçerli değerleri girin:\n" -"PA'yı başlat: >= 0,0\n" -"PA'yı sonlandır: > PA'yı başlat\n" -"PA adımı: >= 0,001)" - -msgid "Temperature calibration" -msgstr "Sıcaklık kalibrasyonu" - -msgid "PLA" -msgstr "PLA" - -msgid "ABS/ASA" -msgstr "ABS/ASA" - -msgid "PETG" -msgstr "PETG" - -msgid "TPU" -msgstr "TPU" - -msgid "PA-CF" -msgstr "PA-CF" - -msgid "PET-CF" -msgstr "PET-CF" - -msgid "Filament type" -msgstr "Filament türü" - -msgid "Start temp: " -msgstr "Başlangıç sıcaklığı: " - -msgid "End end: " -msgstr "Bitiş: " - -msgid "Temp step: " -msgstr "Sıcaklık adımı: " - -msgid "" -"Please input valid values:\n" -"Start temp: <= 350\n" -"End temp: >= 180\n" -"Start temp > End temp + 5)" -msgstr "" -"Lütfen geçerli değerleri girin:\n" -"Başlangıç sıcaklığı: <= 350\n" -"Bitiş sıcaklığı: >= 180\n" -"Başlangıç sıcaklığı > Bitiş sıcaklığı + 5)" - -msgid "Max volumetric speed test" -msgstr "Maksimum hacimsel hız testi" - -msgid "Start volumetric speed: " -msgstr "Hacimsel hız başlangıcı: " - -msgid "End volumetric speed: " -msgstr "Hacimsel hız bitişi: " - -msgid "step: " -msgstr "adım: " - -msgid "" -"Please input valid values:\n" -"start > 0 step >= 0\n" -"end > start + step)" -msgstr "" -"Lütfen geçerli değerleri girin:\n" -"başlangıç > 0 adım >= 0\n" -"bitiş > başlangıç + adım)" - -msgid "VFA test" -msgstr "VFA testi" - -msgid "Start speed: " -msgstr "Başlangıç hızı: " - -msgid "End speed: " -msgstr "Bitiş hızı: " - -msgid "" -"Please input valid values:\n" -"start > 10 step >= 0\n" -"end > start + step)" -msgstr "" -"Lütfen geçerli değerleri girin:\n" -"başlangıç > 10 adım >= 0\n" -"bitiş > başlangıç + adım)" - -msgid "Start retraction length: " -msgstr "Geri çekme uzunluğu başlangıcı: " - -msgid "End retraction length: " -msgstr "Geri çekme uzunluğu bitişi: " - -msgid "mm/mm" -msgstr "mm/mm" - -msgid "Physical Printer" -msgstr "Fiziksel Yazıcı" - -msgid "Print Host upload" -msgstr "Yazıcı Bağlantı Ayarları" - -msgid "Test" -msgstr "Test" - -msgid "Could not get a valid Printer Host reference" -msgstr "Geçerli bir Yazıcı Ana Bilgisayarı referansı alınamadı" - -msgid "Success!" -msgstr "Başarılı!" - -msgid "Refresh Printers" -msgstr "Yazıcıları Yenile" - -msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." -msgstr "" -"HTTPS CA dosyası isteğe bağlıdır. Yalnızca HTTPS'yi kendinden imzalı bir " -"sertifikayla kullanıyorsanız gereklidir." - -msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "Sertifika dosyaları (*.crt, *.pem)|*.crt;*.pem|Tüm dosyalar|*.*" - -msgid "Open CA certificate file" -msgstr "CA sertifika dosyasını aç" - -#, c-format, boost-format -msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store " -"or Keychain." -msgstr "" -"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan HTTPS " -"sertifikalarını kullanıyor." - -msgid "" -"To use a custom CA file, please import your CA file into Certificate Store / " -"Keychain." -msgstr "" -"Özel bir CA dosyası kullanmak için lütfen CA dosyanızı Sertifika Deposuna/" -"Anahtarlığa aktarın." - -msgid "Connection to printers connected via the print host failed." -msgstr "" -"Yazdırma ana bilgisayarı aracılığıyla bağlanan yazıcılara bağlantı başarısız " -"oldu." - -#: resources/data/hints.ini: [hint:3D Scene Operations] -msgid "" -"3D Scene Operations\n" -"Did you know how to control view and object/part selection with mouse and " -"touchpanel in the 3D scene?" -msgstr "" -"3D Sahne İşlemleri\n" -"3D sahnede fare ve dokunmatik panel ile görünümü ve nesne/parça seçimini " -"nasıl kontrol edeceğinizi biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Cut Tool] -msgid "" -"Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the " -"cutting tool?" -msgstr "" -"Kesme Aleti\n" -"Kesici aletle bir modeli istediğiniz açıda ve konumda kesebileceğinizi " -"biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Fix Model] -msgid "" -"Fix Model\n" -"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " -"problems?" -msgstr "" -"Modeli Düzelt\n" -"Pek çok dilimleme sorununu önlemek için bozuk bir 3D modeli " -"düzeltebileceğinizi biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" -"Hızlandırılmış\n" -"Her baskı sırasında timelapse video oluşturabileceğinizi biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Auto-Arrange] -msgid "" -"Auto-Arrange\n" -"Did you know that you can auto-arrange all objects in your project?" -msgstr "" -"Otomatik düzenleme\n" -"Projenizdeki tüm nesneleri otomatik olarak düzenleyebileceğinizi biliyor " -"muydunuz?" - -#: resources/data/hints.ini: [hint:Auto-Orient] -msgid "" -"Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for " -"printing by a simple click?" -msgstr "" -"Otomatik Yönlendirme\n" -"Basit bir tıklamayla nesneleri yazdırma için en uygun yöne " -"döndürebileceğinizi biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Lay on Face] -msgid "" -"Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces " -"sits on the print bed? Select the \"Place on face\" function or press the " -"F key." -msgstr "" -"Yüzüstü yatır\n" -"Bir modeli, yüzlerinden biri baskı yatağına oturacak şekilde hızla " -"yönlendirebileceğinizi biliyor muydunuz? \"Yüze yerleştir\" işlevini seçin " -"veya F tuşuna basın." - -#: resources/data/hints.ini: [hint:Object List] -msgid "" -"Object List\n" -"Did you know that you can view all objects/parts in a list and change " -"settings for each object/part?" -msgstr "" -"Nesne Listesi\n" -"Tüm nesneleri/parçaları bir listede görüntüleyebileceğinizi ve her nesne/" -"parça için ayarları değiştirebileceğinizi biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Simplify Model] -msgid "" -"Simplify Model\n" -"Did you know that you can reduce the number of triangles in a mesh using the " -"Simplify mesh feature? Right-click the model and select Simplify model. Read " -"more in the documentation." -msgstr "" -"Modeli Basitleştir\n" -"Mesh basitleştirme özelliğini kullanarak bir ağdaki üçgen sayısını " -"azaltabileceğinizi biliyor muydunuz? Modele sağ tıklayın ve Modeli " -"basitleştir'i seçin. Daha fazlasını belgelerde okuyun." - -#: resources/data/hints.ini: [hint:Slicing Parameter Table] -msgid "" -"Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change " -"settings for each object/part?" -msgstr "" -"Dilimleme Parametre Tablosu\n" -"Bir tablodaki tüm nesneleri/parçaları görüntüleyebileceğinizi ve her nesne/" -"parça için ayarları değiştirebileceğinizi biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Split to Objects/Parts] -msgid "" -"Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy " -"colorizing or printing?" -msgstr "" -"Nesnelere/Parçalara Böl\n" -"Kolayca renklendirmek veya yazdırmak için büyük bir nesneyi küçük nesnelere " -"bölebileceğinizi biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Subtract a Part] -msgid "" -"Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative " -"part modifier? That way you can, for example, create easily resizable holes " -"directly in Orca Slicer. Read more in the documentation." -msgstr "" -"Bir Parçayı Çıkar\n" -"Negatif parça değiştiriciyi kullanarak bir ağı diğerinden çıkarabileceğinizi " -"biliyor muydunuz? Bu şekilde örneğin doğrudan Orca Slicer'da kolayca yeniden " -"boyutlandırılabilen delikler oluşturabilirsiniz. Daha fazlasını belgelerde " -"okuyun." - -#: resources/data/hints.ini: [hint:STEP] -msgid "" -"STEP\n" -"Did you know that you can improve your print quality by slicing a STEP file " -"instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a " -"lower resolution STL. Give it a try!" -msgstr "" -"ADIM\n" -"STL yerine STEP dosyasını dilimleyerek baskı kalitenizi artırabileceğinizi " -"biliyor muydunuz?\n" -"Orca Slicer, STEP dosyalarını dilimlemeyi destekleyerek daha düşük " -"çözünürlüklü bir STL'ye göre daha düzgün sonuçlar sağlar. Bir şans ver!" - -#: resources/data/hints.ini: [hint:Z seam location] -msgid "" -"Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even " -"paint it on your print, to have it in a less visible location? This improves " -"the overall look of your model. Check it out!" -msgstr "" -"Z dikiş konumu\n" -"Z dikişinin konumunu kişiselleştirebileceğinizi ve hatta daha az görünür bir " -"konuma getirmek için baskının üzerine boyayabileceğinizi biliyor muydunuz? " -"Bu, modelinizin genel görünümünü iyileştirir. Buna bir bak!" - -#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] -msgid "" -"Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking prints? " -"Depending on the material, you can improve the overall finish of the printed " -"model by doing some fine-tuning." -msgstr "" -"Akış hızı için ince ayar\n" -"Baskıların daha da iyi görünmesi için akış hızına ince ayar yapılabileceğini " -"biliyor muydunuz? Malzemeye bağlı olarak, bazı ince ayarlar yaparak " -"yazdırılan modelin genel yüzeyini iyileştirebilirsiniz." - -#: resources/data/hints.ini: [hint:Split your prints into plates] -msgid "" -"Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into " -"individual plates ready to print? This will simplify the process of keeping " -"track of all the parts." -msgstr "" -"Baskılarınızı plakalara ayırın\n" -"Çok sayıda parçası olan bir modeli baskıya hazır ayrı kalıplara " -"bölebileceğinizi biliyor muydunuz? Bu, tüm parçaları takip etme sürecini " -"basitleştirecektir." - -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer -#: Height] -msgid "" -"Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive " -"Layer Height option? Check it out!" -msgstr "" -"Uyarlanabilir Katman Yüksekliği ile baskınızı hızlandırın\n" -"Uyarlanabilir Katman Yüksekliği seçeneğini kullanarak bir modeli daha da " -"hızlı yazdırabileceğinizi biliyor muydunuz? Buna bir bak!" - -#: resources/data/hints.ini: [hint:Support painting] -msgid "" -"Support painting\n" -"Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the model " -"that actually need it." -msgstr "" -"Destek boyama\n" -"Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, " -"destek malzemesinin yalnızca modelin gerçekten ihtiyaç duyulan bölümlerine " -"yerleştirilmesini kolaylaştırır." - -#: resources/data/hints.ini: [hint:Different types of supports] -msgid "" -"Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree " -"supports work great for organic models, while saving filament and improving " -"print speed. Check them out!" -msgstr "" -"Farklı destek türleri\n" -"Birden fazla destek türü arasından seçim yapabileceğinizi biliyor muydunuz? " -"Ağaç destekleri organik modeller için harika çalışır, filamentten tasarruf " -"sağlar ve baskı hızını artırır. Onlara bir göz atın!" - -#: resources/data/hints.ini: [hint:Printing Silk Filament] -msgid "" -"Printing Silk Filament\n" -"Did you know that Silk filament needs special consideration to print it " -"successfully? Higher temperature and lower speed are always recommended for " -"the best results." -msgstr "" -"İpek Filament Baskı\n" -"İpek filamanın başarılı bir şekilde basılabilmesi için özel dikkat " -"gösterilmesi gerektiğini biliyor muydunuz? En iyi sonuçlar için her zaman " -"daha yüksek sıcaklık ve daha düşük hız önerilir." - -#: resources/data/hints.ini: [hint:Brim for better adhesion] -msgid "" -"Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with " -"the printing surface, it's recommended to use a brim?" -msgstr "" -"Daha iyi yapışma için kenar\n" -"Baskı modellerinde baskı yüzeyi ile küçük bir temas arayüzü bulunduğunda " -"siperlik kullanılması tavsiye edildiğini biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Set parameters for multiple objects] -msgid "" -"Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at " -"one time?" -msgstr "" -"Birden çok nesne için parametreleri ayarlama\n" -"Seçilen tüm nesneler için dilimleme parametrelerini aynı anda " -"ayarlayabileceğinizi biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -msgstr "" -"Nesneleri yığınla\n" -"Nesneleri bir bütün olarak istifleyebileceğinizi biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Flush into support/objects/infill] -msgid "" -"Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into " -"support/objects/infill during filament change?" -msgstr "" -"Desteğe/nesnelere/dolguya hizalayın\n" -"Filament değişimi sırasında, boşa harcanan filamanı desteğe/nesnelere/dolguya " -"yıkayarak kurtarabileceğinizi biliyor muydunuz?" - -#: resources/data/hints.ini: [hint:Improve strength] -msgid "" -"Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill " -"density to improve the strength of the model?" -msgstr "" -"Gücü artırın\n" -"Modelin gücünü artırmak için daha fazla duvar halkası ve daha yüksek seyrek " -"dolgu yoğunluğu kullanabileceğinizi biliyor muydunuz?" +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: OrcaSlicer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" +"PO-Revision-Date: 2023-09-16 06:41+0300\n" +"Last-Translator: Sadri Ercan\n" +"Language-Team: Türkçe\n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" +"X-Generator: Poedit 3.3.2\n" +"X-Loco-Version: 2.6.4-dev; wp-6.3.1\n" + +msgid "Supports Painting" +msgstr "Destek Boyama" + +msgid "Alt + Mouse wheel" +msgstr "Alt + Fare tekerleği" + +msgid "Section view" +msgstr "Bölüm görünümü" + +msgid "Reset direction" +msgstr "Yönü sıfırla" + +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl + Fare tekerleği" + +msgid "Pen size" +msgstr "Kalem boyutu" + +msgid "Left mouse button" +msgstr "Sol fare tuşu" + +msgid "Enforce supports" +msgstr "Destekleri zorunlu kılın" + +msgid "Right mouse button" +msgstr "Sağ fare tuşu" + +msgid "Block supports" +msgstr "Blok destekleri" + +msgid "Shift + Left mouse button" +msgstr "Shift + Sol fare düğmesi" + +msgid "Erase" +msgstr "Sil" + +msgid "Erase all painting" +msgstr "Tüm boyamayı sil" + +msgid "Highlight overhang areas" +msgstr "Çıkıntı alanlarını vurgulayın" + +msgid "Gap fill" +msgstr "Boşluk doldurma" + +msgid "Perform" +msgstr "Uygula" + +msgid "Gap area" +msgstr "Boşluk alanı" + +msgid "Tool type" +msgstr "Araç türü" + +msgid "Smart fill angle" +msgstr "Akıllı doldurma açısı" + +msgid "On overhangs only" +msgstr "Yalnızca çıkıntılarda" + +msgid "Auto support threshold angle: " +msgstr "Otomatik destek eşik açısı: " + +msgid "Circle" +msgstr "Daire" + +msgid "Sphere" +msgstr "Küre" + +msgid "Fill" +msgstr "Doldur" + +msgid "Gap Fill" +msgstr "Boşluk doldurma" + +#, boost-format +msgid "Allows painting only on facets selected by: \"%1%\"" +msgstr "" +"Yalnızca şu kişi tarafından seçilen yüzeylerde boyamaya izin verir: \"%1%\"" + +msgid "Highlight faces according to overhang angle." +msgstr "Yüzleri çıkıntı açısına göre vurgulayın." + +msgid "No auto support" +msgstr "Otomatik destek yok" + +msgid "Support Generated" +msgstr "Destek Oluşturuldu" + +msgid "Lay on face" +msgstr "Yüzüstü yatır" + +#, boost-format +msgid "" +"Filament count exceeds the maximum number that painting tool supports. only " +"the first %1% filaments will be available in painting tool." +msgstr "" +"Filament sayısı, boyama aracının desteklediği maksimum sayıyı aşıyor. Boyama " +"aracında yalnızca ilk %1% filament mevcut olacaktır." + +msgid "Color Painting" +msgstr "Renkli Boyama" + +msgid "Pen shape" +msgstr "Kalem şekli" + +msgid "Paint" +msgstr "Boyama" + +msgid "Key 1~9" +msgstr "Tuş 1~9" + +msgid "Choose filament" +msgstr "Filament seçin" + +msgid "Edge detection" +msgstr "Kenar algılama" + +msgid "Triangles" +msgstr "Üçgenler" + +msgid "Filaments" +msgstr "Filamentler" + +msgid "Brush" +msgstr "Fırça" + +msgid "Smart fill" +msgstr "Akıllı boyama" + +msgid "Bucket fill" +msgstr "Kova boya aracı" + +msgid "Height range" +msgstr "Yükseklik aralığı" + +msgid "Ctrl + Shift + Enter" +msgstr "Ctrl + Üst Karakter + Enter" + +msgid "Toggle Wireframe" +msgstr "Wireframe Göster/Gizle" + +msgid "Shortcut Key " +msgstr "Kısayol tuşu " + +msgid "Triangle" +msgstr "Üçgen" + +msgid "Height Range" +msgstr "Yükseklik Aralığı" + +msgid "Remove painted color" +msgstr "Boyalı rengi kaldır" + +#, boost-format +msgid "Painted using: Filament %1%" +msgstr "Şunlar kullanılarak boyanmıştır: Filament %1%" + +msgid "Move" +msgstr "Taşı" + +msgid "Rotate" +msgstr "Döndür" + +msgid "Optimize orientation" +msgstr "Yönü optimize edin" + +msgid "Apply" +msgstr "Uygula" + +msgid "Scale" +msgstr "Ölçeklendir" + +msgid "Error: Please close all toolbar menus first" +msgstr "Hata: Lütfen önce tüm araç çubuğu menülerini kapatın" + +msgid "Tool-Lay on Face" +msgstr "Yüzüstü Yatırma" + +msgid "in" +msgstr "in" + +msgid "mm" +msgstr "mm" + +msgid "Position" +msgstr "Konum" + +msgid "Rotation" +msgstr "Döndürme" + +msgid "Scale ratios" +msgstr "Ölçek oranları" + +msgid "Object Operations" +msgstr "Nesne İşlemleri" + +msgid "Volume Operations" +msgstr "Hacim İşlemleri" + +msgid "Translate" +msgstr "Çeviri" + +msgid "Group Operations" +msgstr "Grup Operasyonları" + +msgid "Set Position" +msgstr "Pozisyonu ayarla" + +msgid "Set Orientation" +msgstr "Yönü Ayarla" + +msgid "Set Scale" +msgstr "Ölçeği Ayarla" + +msgid "Reset Position" +msgstr "Konumu Sıfırla" + +msgid "Reset Rotation" +msgstr "Döndürmeyi Sıfırla" + +msgid "World coordinates" +msgstr "Dünya koordinatları" + +msgid "°" +msgstr "°" + +msgid "Size" +msgstr "Boyut" + +msgid "%" +msgstr "%" + +msgid "uniform scale" +msgstr "düzgün ölçek" + +msgid "Left click" +msgstr "Sol tık" + +msgid "Add connector" +msgstr "Bağlayıcı ekle" + +msgid "Right click" +msgstr "Sağ tık" + +msgid "Remove connector" +msgstr "Bağlayıcıyı kaldır" + +msgid "Drag" +msgstr "Sürükle" + +msgid "Move connector" +msgstr "Bağlayıcıyı taşı" + +msgid "Add connector to selection" +msgstr "Seçime bağlayıcı ekle" + +msgid "Remove connector from selection" +msgstr "Bağlayıcıyı seçimden kaldır" + +msgid "Select all connectors" +msgstr "Tüm bağlayıcıları seç" + +msgid "Cut" +msgstr "Kes" + +msgid "Connector" +msgstr "Bağlayıcı" + +msgid "Movement:" +msgstr "Hareket:" + +msgid "Movement" +msgstr "Hareket" + +msgid "Height" +msgstr "Yükseklik" + +msgid "Edit connectors" +msgstr "Bağlayıcıları düzenle" + +msgid "Add connectors" +msgstr "Bağlayıcı ekle" + +msgid "Upper part" +msgstr "Üst parça" + +msgid "Lower part" +msgstr "Alt kısım" + +msgid "Keep" +msgstr "Sakla" + +msgid "Place on cut" +msgstr "Kesime yerleştirin" + +msgid "Flip" +msgstr "Çevir" + +msgid "After cut" +msgstr "Kesildikten sonra" + +msgid "Cut to parts" +msgstr "Parçalara ayır" + +msgid "Auto Segment" +msgstr "Otomatik Segment" + +msgid "Perform cut" +msgstr "Kesimi gerçekleştir" + +msgid "Reset" +msgstr "Sıfırla" + +msgid "Connectors" +msgstr "Konektörler" + +msgid "Type" +msgstr "Tür" + +msgid "Style" +msgstr "Stil" + +msgid "Shape" +msgstr "Şekil" + +msgid "Depth ratio" +msgstr "Derinlik oranı" + +msgid "Remove connectors" +msgstr "Konektörleri kaldır" + +msgid "Prizm" +msgstr "Prizma" + +msgid "Frustum" +msgstr "Frustum" + +msgid "Square" +msgstr "Kare" + +msgid "Hexagon" +msgstr "Altıgen" + +msgid "Confirm connectors" +msgstr "Bağlayıcıları onayla" + +msgid "Cancel" +msgstr "İptal" + +msgid "Warning" +msgstr "Uyarı" + +msgid "Invalid connectors detected" +msgstr "Geçersiz bağlayıcılar algılandı" + +msgid "connector is out of cut contour" +msgstr "konnektör kesim konturunun dışında" + +msgid "connectors are out of cut contour" +msgstr "konektörler kesim konturunun dışında" + +msgid "connector is out of object" +msgstr "bağlayıcı nesnenin dışında" + +msgid "connectors is out of object" +msgstr "konektörler nesnenin dışında" + +msgid "Some connectors are overlapped" +msgstr "Bazı konektörler üst üste binmiş" + +msgid "" +"Invalid state. \n" +"No one part is selected for keep after cut" +msgstr "" +"Geçersiz durum.\n" +"Kesimden sonra tutmak için hiçbir parça seçilmedi" + +msgid "Plug" +msgstr "Tak" + +msgid "Dowel" +msgstr "Dübel" + +msgid "Tolerance" +msgstr "Tolerans" + +msgid "Mesh name" +msgstr "Mesh adı" + +msgid "Detail level" +msgstr "Detay seviyesi" + +msgid "Decimate ratio" +msgstr "Oranı azalt" + +#, boost-format +msgid "" +"Processing model '%1%' with more than 1M triangles could be slow. It is " +"highly recommended to simplify the model." +msgstr "" +"1 milyondan fazla üçgen içeren '%1%' modelinin işlenmesi yavaş olabilir. " +"Modelin basitleştirilmesi önemle tavsiye edilir." + +msgid "Simplify model" +msgstr "Modeli sadeleştir" + +msgid "Simplify" +msgstr "Sadeleştir" + +msgid "Simplification is currently only allowed when a single part is selected" +msgstr "" +"Sadeleştirmeye şu anda yalnızca tek bir parça seçildiğinde izin veriliyor" + +msgid "Error" +msgstr "Hata" + +msgid "Extra high" +msgstr "Ekstra yüksek" + +msgid "High" +msgstr "Yüksek" + +msgid "Medium" +msgstr "Orta" + +msgid "Low" +msgstr "Düşük" + +msgid "Extra low" +msgstr "Ekstra düşük" + +#, c-format, boost-format +msgid "%d triangles" +msgstr "%d üçgen" + +msgid "Show wireframe" +msgstr "Wireframe göster" + +#, boost-format +msgid "%1%" +msgstr "%1%" + +msgid "Can't apply when proccess preview." +msgstr "İşlem önizlemesi sırasında uygulanamaz." + +msgid "Operation already cancelling. Please wait few seconds." +msgstr "İşlem zaten iptal ediliyor. Lütfen birkaç saniye bekleyin." + +msgid "Face recognition" +msgstr "Yüz tanıma" + +msgid "Perform Recognition" +msgstr "Tanıma Gerçekleştir" + +msgid "Brush size" +msgstr "Fırça boyutu" + +msgid "Brush shape" +msgstr "Fırça şekli" + +msgid "Enforce seam" +msgstr "Dikişi uygula" + +msgid "Block seam" +msgstr "Blok dikişi" + +msgid "Seam painting" +msgstr "Dikiş boyama" + +msgid "Remove selection" +msgstr "Seçimi kaldır" + +msgid "Shift + Mouse move up or dowm" +msgstr "Shift + Fare yukarı veya aşağı hareket ettirir" + +msgid "Rotate text" +msgstr "Metni döndür" + +msgid "Text shape" +msgstr "Metin şekli" + +msgid "Font" +msgstr "Yazı tipi" + +msgid "Thickness" +msgstr "Kalınlık" + +msgid "Input text" +msgstr "Giriş metni" + +msgid "Embeded" +msgstr "Gömülü" + +msgid "Text Gap" +msgstr "Metin Boşluğu" + +msgid "Angle" +msgstr "Açı" + +msgid "" +"Embeded\n" +"depth" +msgstr "" +"Gömülü\n" +"derinlik" + +msgid "Surface" +msgstr "Yüzey" + +msgid "Horizontal text" +msgstr "Yatay metin" + +msgid "Ctrl+" +msgstr "Ctrl+" + +msgid "Notice" +msgstr "Bildirim" + +msgid "Undefined" +msgstr "Tanımsız" + +#, boost-format +msgid "%1% was replaced with %2%" +msgstr "%1%, %2% ile değiştirildi" + +msgid "The configuration may be generated by a newer version of OrcaSlicer." +msgstr "" +"Yapılandırma, OrcaSlicer'ın daha yeni bir sürümü tarafından oluşturulabilir." + +msgid "Some values have been replaced. Please check them:" +msgstr "Bazı değerler değiştirildi. Lütfen bunları kontrol edin:" + +msgid "Process" +msgstr "İşlem" + +msgid "Filament" +msgstr "Filament" + +msgid "Machine" +msgstr "Makine" + +msgid "Configuration package was loaded, but some values were not recognized." +msgstr "Yapılandırma paketi yüklendi ancak bazı değerler tanınamadı." + +#, boost-format +msgid "" +"Configuration file \"%1%\" was loaded, but some values were not recognized." +msgstr "\"%1%\" yapılandırma dosyası yüklendi ancak bazı değerler tanınamadı." + +msgid "V" +msgstr "V" + +msgid "" +"OrcaSlicer will terminate because of running out of memory.It may be a bug. " +"It will be appreciated if you report the issue to our team." +msgstr "" +"OrcaSlicer hafızasının yetersiz olması nedeniyle sonlandırılacak. Bir hata " +"olabilir. Sorunu ekibimize bildirirseniz seviniriz." + +msgid "Fatal error" +msgstr "Kritik hata" + +msgid "" +"OrcaSlicer will terminate because of a localization error. It will be " +"appreciated if you report the specific scenario this issue happened." +msgstr "" +"OrcaSlicer bir yerelleştirme hatası nedeniyle sonlandırılacak. Bu sorunun " +"gerçekleştiği spesifik senaryoyu bildirirseniz memnun oluruz." + +msgid "Critical error" +msgstr "Kritik hata" + +#, boost-format +msgid "OrcaSlicer got an unhandled exception: %1%" +msgstr "OrcaSlicer'da işlenmeyen bir istisna oluştu: %1%" + +msgid "Downloading Bambu Network Plug-in" +msgstr "Bambu Ağ Eklentisini İndirme" + +msgid "Login information expired. Please login again." +msgstr "Giriş bilgilerinin süresi doldu. Lütfen tekrar giriş yapın." + +msgid "Incorrect password" +msgstr "Yanlış parola" + +#, c-format, boost-format +msgid "Connect %s failed! [SN:%s, code=%s]" +msgstr "%s bağlantısı başarısız oldu! [SN:%s, kod=%s]" + +msgid "" +"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " +"features.\n" +"Click Yes to install it now." +msgstr "" +"Orca Slicer, belirli özellikleri çalıştırmak için Microsoft WebView2 Runtime " +"gerektirir.\n" +"Şimdi yüklemek için Evet'e tıklayın." + +msgid "WebView2 Runtime" +msgstr "WebView2 Çalışma Zamanı" + +msgid "" +"OrcaSlicer configuration file may be corrupted and is not abled to be parsed." +"Please delete the file and try again." +msgstr "" +"OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması mümkün " +"olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." + +#, c-format, boost-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"Devam etmek istiyor musun?" + +msgid "Remember my choice" +msgstr "Seçimimi hatırla" + +msgid "Loading configuration" +msgstr "Yapılandırma yükleniyor" + +#, c-format, boost-format +msgid "Click to download new version in default browser: %s" +msgstr "Yeni sürümü varsayılan tarayıcıda indirmek için tıklayın: %s" + +msgid "The Orca Slicer needs an upgrade" +msgstr "Orca Dilimleyicinin yükseltilmesi gerekiyor" + +msgid "This is the newest version." +msgstr "Bu en yeni versiyondur." + +msgid "Info" +msgstr "Bilgi" + +msgid "Rebuild" +msgstr "Yeniden yükleniyor" + +msgid "Loading current presets" +msgstr "Mevcut ön ayarlar yükleniyor" + +msgid "Loading a mode view" +msgstr "Mod görünümü yükleniyor" + +msgid "Choose one file (3mf):" +msgstr "Bir dosya seçin (3mf):" + +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" +msgstr "Bir veya daha fazla dosya seçin (3mf/step/stl/svg/obj/amf):" + +msgid "Choose one file (gcode/3mf):" +msgstr "Bir dosya seçin (gcode/3mf):" + +msgid "Some presets are modified." +msgstr "Bazı ön ayarlar değiştirildi." + +msgid "" +"You can keep the modifield presets to the new project, discard or save " +"changes as new presets." +msgstr "" +"Modifield ön ayarlarını yeni projede tutabilir, değişiklikleri atabilir veya " +"yeni ön ayarlar olarak kaydedebilirsiniz." + +msgid "User logged out" +msgstr "Kullanıcı oturumu kapattı" + +msgid "new or open project file is not allowed during the slicing process!" +msgstr "" +"dilimleme işlemi sırasında yeni veya açık proje dosyasına izin verilmez!" + +msgid "Open Project" +msgstr "Projeyi Aç" + +msgid "" +"The version of Orca Slicer is too low and needs to be updated to the latest " +"version before it can be used normally" +msgstr "" +"Orca Slicer'ın sürümü çok düşük ve normal şekilde kullanılabilmesi için en " +"son sürüme güncellenmesi gerekiyor" + +msgid "Privacy Policy Update" +msgstr "Gizlilik Politikası Güncellemesi" + +msgid "Loading" +msgstr "Yükleniyor" + +msgid "Loading user preset" +msgstr "Kullanıcı ön ayarı yükleniyor" + +msgid "Switching application language" +msgstr "Uygulama dilini değiştirme" + +msgid "Select the language" +msgstr "Dili seçin" + +msgid "Language" +msgstr "Dil" + +msgid "*" +msgstr "*" + +msgid "The uploads are still ongoing" +msgstr "Yüklemeler halen devam ediyor" + +msgid "Stop them and continue anyway?" +msgstr "Onları durdurup yine de devam etmek mi istiyorsunuz?" + +msgid "Ongoing uploads" +msgstr "Devam eden yüklemeler" + +msgid "Select a G-code file:" +msgstr "G kodu dosyası seçin:" + +msgid "Import File" +msgstr "Dosya İçe Aktar" + +msgid "Delete" +msgstr "Sil" + +msgid "Choose files" +msgstr "Dosyaları seç" + +msgid "New Folder" +msgstr "Yeni Klasör" + +msgid "Open" +msgstr "Aç" + +msgid "Rename" +msgstr "Yeniden adlandır" + +msgid "Orca Slicer GUI initialization failed" +msgstr "Orca Dilimleyici GUI'si başlatılamadı" + +#, boost-format +msgid "Fatal error, exception catched: %1%" +msgstr "Önemli hata, istisna yakalandı: %1%" + +msgid "Quality" +msgstr "Kalite" + +msgid "Shell" +msgstr "Kabuk" + +msgid "Infill" +msgstr "Dolgu" + +msgid "Support" +msgstr "Destek" + +msgid "Flush options" +msgstr "Filament Temizleme" + +msgid "Speed" +msgstr "Hız" + +msgid "Strength" +msgstr "Dayanıklılık" + +msgid "Top Solid Layers" +msgstr "Üst Katı Katmanlar" + +msgid "Top Minimum Shell Thickness" +msgstr "Üst Minimum Kabuk Kalınlığı" + +msgid "Bottom Solid Layers" +msgstr "Alt Katı Katmanlar" + +msgid "Bottom Minimum Shell Thickness" +msgstr "Alt Minimum Kabuk Kalınlığı" + +msgid "Ironing" +msgstr "Ütüleme" + +msgid "Fuzzy Skin" +msgstr "Bulanık Kaplama" + +msgid "Extruders" +msgstr "Ekstrüderler" + +msgid "Extrusion Width" +msgstr "Ekstrüzyon Genişliği" + +msgid "Wipe options" +msgstr "Temizleme seçenekleri" + +msgid "Bed adhension" +msgstr "Etek" + +msgid "Advanced" +msgstr "Gelişmiş" + +msgid "Add part" +msgstr "Parça ekle" + +msgid "Add negative part" +msgstr "Negatif kısım ekle" + +msgid "Add modifier" +msgstr "Değiştirici ekle" + +msgid "Add support blocker" +msgstr "Destek engelleyici ekle" + +msgid "Add support enforcer" +msgstr "Destek uygulayıcısı ekle" + +msgid "Select settings" +msgstr "Ayarları şeç" + +msgid "Hide" +msgstr "Gizle" + +msgid "Show" +msgstr "Göster" + +msgid "Del" +msgstr "Sil" + +msgid "Delete the selected object" +msgstr "Seçilen nesneyi sil" + +msgid "Edit Text" +msgstr "Metni düzenle" + +msgid "Load..." +msgstr "Yükle..." + +msgid "Orca Cube" +msgstr "Orca Küpü" + +msgid "3DBenchy" +msgstr "3DBenchy" + +msgid "Autodesk FDM Test" +msgstr "Autodesk FDM Testi" + +msgid "Voron Cube" +msgstr "Voron Küpü" + +msgid "Cube" +msgstr "Küp" + +msgid "Cylinder" +msgstr "Silindir" + +msgid "Cone" +msgstr "Koni" + +msgid "Height range Modifier" +msgstr "Yükseklik aralığı Değiştirici" + +msgid "Add settings" +msgstr "Ayar ekle" + +msgid "Change type" +msgstr "Türü değiştir" + +msgid "Set as an individual object" +msgstr "Ayrı bir nesne olarak ayarla" + +msgid "Set as individual objects" +msgstr "Bireysel nesneler olarak ayarla" + +msgid "Fill bed with copies" +msgstr "Yatağı kopyalarla doldurun" + +msgid "Fill the remaining area of bed with copies of the selected object" +msgstr "Yatağın kalan alanını seçilen nesnenin kopyalarıyla doldurun" + +msgid "Printable" +msgstr "Yazdırılabilir" + +msgid "Fix model" +msgstr "Modeli düzelt" + +msgid "Export as STL" +msgstr "STL olarak dışa aktar" + +msgid "Reload from disk" +msgstr "Diskten yeniden yükle" + +msgid "Reload the selected parts from disk" +msgstr "Seçilen parçaları diskten yeniden yükle" + +msgid "Replace with STL" +msgstr "STL ile değiştirin" + +msgid "Replace the selected part with new STL" +msgstr "Seçilen parçayı yeni STL ile değiştirin" + +msgid "Change filament" +msgstr "Filamenti değiştir" + +msgid "Set filament for selected items" +msgstr "Seçilen öğeler için filamenti ayarla" + +msgid "Default" +msgstr "Varsayılan" + +#, c-format, boost-format +msgid "Filament %d" +msgstr "Filament %d" + +msgid "active" +msgstr "aktif" + +msgid "Scale to build volume" +msgstr "Yapı hacmine göre ölçeklendir" + +msgid "Scale an object to fit the build volume" +msgstr "Bir nesneyi yapı hacmine uyacak şekilde ölçeklendirin" + +msgid "Flush Options" +msgstr "Hizalama Seçenekleri" + +msgid "Flush into objects' infill" +msgstr "Nesnelerin dolgusuna hizalayın" + +msgid "Flush into this object" +msgstr "Bu nesnenin içine hizala" + +msgid "Flush into objects' support" +msgstr "Nesnelerin desteğine hizalayın" + +msgid "Edit in Parameter Table" +msgstr "Parametre Tablosunda Düzenle" + +msgid "Convert from inch" +msgstr "İnçten dönüştür" + +msgid "Restore to inch" +msgstr "İnçe geri çevir" + +msgid "Convert from meter" +msgstr "Metreden dönüştür" + +msgid "Restore to meter" +msgstr "Metreye geri çevir" + +msgid "Assemble" +msgstr "Birleştir" + +msgid "Assemble the selected objects to an object with multiple parts" +msgstr "Seçilen nesneleri birden çok parçalı bir nesneyle birleştirin" + +msgid "Assemble the selected objects to an object with single part" +msgstr "Seçilen nesneleri tek parçalı bir nesneye birleştirin" + +msgid "Mesh boolean" +msgstr "Mesh bölme" + +msgid "Mesh boolean operations including union and subtraction" +msgstr "Birleştirme ve çıkarma dahil mesh bölme işlemleri" + +msgid "Along X axis" +msgstr "X ekseni boyunca" + +msgid "Mirror along the X axis" +msgstr "X ekseni boyunca aynalama" + +msgid "Along Y axis" +msgstr "Y ekseni boyunca" + +msgid "Mirror along the Y axis" +msgstr "Y ekseni boyunca aynalama" + +msgid "Along Z axis" +msgstr "Z ekseni boyunca" + +msgid "Mirror along the Z axis" +msgstr "Z ekseni boyunca aynalama" + +msgid "Mirror" +msgstr "Ayna" + +msgid "Mirror object" +msgstr "Nesneyi aynala" + +msgid "Invalidate cut info" +msgstr "Kesim bilgisini geçersiz kıl" + +msgid "Add Primitive" +msgstr "Primitif Ekle" + +msgid "Show Labels" +msgstr "Etiketleri Göster" + +msgid "To objects" +msgstr "Nesnelere" + +msgid "Split the selected object into multiple objects" +msgstr "Seçilen nesneyi birden çok nesneye bölme" + +msgid "To parts" +msgstr "Parçalara" + +msgid "Split the selected object into multiple parts" +msgstr "Seçilen nesneyi birden çok parçaya böl" + +msgid "Split" +msgstr "Böl" + +msgid "Split the selected object" +msgstr "Seçilen nesneyi böl" + +msgid "Auto orientation" +msgstr "Otomatik yönlendirme" + +msgid "Auto orient the object to improve print quality." +msgstr "Baskı kalitesini artırmak için nesneyi otomatik olarak yönlendirin." + +msgid "Split the selected object into mutiple objects" +msgstr "Seçilen nesneyi birden fazla nesneye bölme" + +msgid "Split the selected object into mutiple parts" +msgstr "Seçilen nesneyi birden fazla parçaya böl" + +msgid "Select All" +msgstr "Hepsini seç" + +msgid "select all objects on current plate" +msgstr "geçerli plakadaki tüm nesneleri seç" + +msgid "Delete All" +msgstr "Hepsini sil" + +msgid "delete all objects on current plate" +msgstr "geçerli plakadaki tüm nesneleri sil" + +msgid "Arrange" +msgstr "Hizala" + +msgid "arrange current plate" +msgstr "mevcut plakayı hizala" + +msgid "Auto Rotate" +msgstr "Otomatik döndürme" + +msgid "auto rotate current plate" +msgstr "geçerli plakayı otomatik döndürme" + +msgid "Delete Plate" +msgstr "Plakayı Sil" + +msgid "Remove the selected plate" +msgstr "Seçilen plakayı kaldır" + +msgid "Clone" +msgstr "Klon" + +msgid "Simplify Model" +msgstr "Modeli Basitleştir" + +msgid "Center" +msgstr "Merkez" + +msgid "Edit Process Settings" +msgstr "İşlem Ayarlarını Düzenle" + +msgid "Edit print parameters for a single object" +msgstr "Tek bir nesne için yazdırma parametrelerini düzenleme" + +msgid "Change Filament" +msgstr "Filamenti Değiştir" + +msgid "Set Filament for selected items" +msgstr "Seçilen öğeler için Filamenti Ayarla" + +msgid "current" +msgstr "geçerli" + +msgid "Unlock" +msgstr "Kilidi aç" + +msgid "Lock" +msgstr "Kilitle" + +msgid "Edit Plate Name" +msgstr "Plaka Adını Düzenle" + +msgid "Name" +msgstr "İsim" + +msgid "Fila." +msgstr "Fila." + +#, c-format, boost-format +msgid "%1$d error repaired" +msgid_plural "%1$d errors repaired" +msgstr[0] "%1$d hata onarıldı" +msgstr[1] "%1$d hata onarıldı" + +#, c-format, boost-format +msgid "Error: %1$d non-manifold edge." +msgid_plural "Error: %1$d non-manifold edges." +msgstr[0] "Hata: %1$d manifold olmayan kenar." +msgstr[1] "Hata: %1$d manifold olmayan kenar." + +msgid "Remaining errors" +msgstr "Kalan hatalar" + +#, c-format, boost-format +msgid "%1$d non-manifold edge" +msgid_plural "%1$d non-manifold edges" +msgstr[0] "%1$d manifold olmayan kenar" +msgstr[1] "%1$d manifold olmayan kenar" + +msgid "Right click the icon to fix model object" +msgstr "Model nesnesini düzeltmek için simgeye sağ tıklayın" + +msgid "Right button click the icon to drop the object settings" +msgstr "Nesne ayarlarını bırakmak için simgeye sağ tıklayın" + +msgid "Click the icon to reset all settings of the object" +msgstr "Nesnenin tüm ayarlarını sıfırlamak için simgeye tıklayın" + +msgid "Right button click the icon to drop the object printable property" +msgstr "Nesnenin yazdırılabilir özelliğini bırakmak için simgeye sağ tıklayın" + +msgid "Click the icon to toggle printable property of the object" +msgstr "Nesnenin yazdırılabilir özelliğini değiştirmek için simgeyi tıklayın" + +msgid "Click the icon to edit support painting of the object" +msgstr "Nesnenin destek resmini düzenlemek için simgeye tıklayın" + +msgid "Click the icon to edit color painting of the object" +msgstr "Nesnenin renk resmini düzenlemek için simgeye tıklayın" + +msgid "Click the icon to shift this object to the bed" +msgstr "Bu nesneyi yatağa taşımak için simgeye tıklayın" + +msgid "Loading file" +msgstr "Dosya yükleniyor" + +msgid "Error!" +msgstr "Hata!" + +msgid "Failed to get the model data in the current file." +msgstr "Geçerli dosyadaki model verileri alınamadı." + +msgid "Generic" +msgstr "Genel" + +msgid "Add Modifier" +msgstr "Değiştirici Ekle" + +msgid "Switch to per-object setting mode to edit modifier settings." +msgstr "Değiştirici ayarlarını düzenlemek için nesne başına ayar moduna geçin." + +msgid "" +"Switch to per-object setting mode to edit process settings of selected " +"objects." +msgstr "" +"Seçilen nesnelerin işlem ayarlarını düzenlemek için nesne başına ayar moduna " +"geçin." + +msgid "Delete connector from object which is a part of cut" +msgstr "Kesilen parçanın parçası olan nesneden bağlayıcıyı sil" + +msgid "Delete solid part from object which is a part of cut" +msgstr "Kesimin bir parçası olan nesneden katı parçayı silin" + +msgid "Delete negative volume from object which is a part of cut" +msgstr "Kesimin bir parçası olan nesneden negatif hacmi silin" + +msgid "" +"To save cut correspondence you can delete all connectors from all related " +"objects." +msgstr "" +"Kesilmiş yazışmaları kaydetmek için ilgili tüm nesnelerden tüm bağlayıcıları " +"silebilirsiniz." + +msgid "" +"This action will break a cut correspondence.\n" +"After that model consistency can't be guaranteed .\n" +"\n" +"To manipulate with solid parts or negative volumes you have to invalidate " +"cut infornation first." +msgstr "" +"Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" +"Bundan sonra model tutarlılığı garanti edilemez.\n" +"\n" +"Katı parçalarla veya negatif hacimlerle işlem yapmak için öncelikle kesim " +"bilgisini geçersiz kılmanız gerekir." + +msgid "Delete all connectors" +msgstr "Tüm bağlayıcıları sil" + +msgid "Deleting the last solid part is not allowed." +msgstr "Son katı kısmın silinmesine izin verilmez." + +msgid "The target object contains only one part and can not be splited." +msgstr "Hedef nesne yalnızca bir parça içerir ve bölünemez." + +msgid "Assembly" +msgstr "Birleştir" + +msgid "Cut Connectors information" +msgstr "Kesim Konnektörleri bilgileri" + +msgid "Object manipulation" +msgstr "Nesne manipülasyonu" + +msgid "Group manipulation" +msgstr "Grup manipülasyonu" + +msgid "Object Settings to modify" +msgstr "Değiştirilecek Nesne Ayarları" + +msgid "Part Settings to modify" +msgstr "Değiştirilecek Parça Ayarları" + +msgid "Layer range Settings to modify" +msgstr "Katman aralığı Değiştirilecek ayarlar" + +msgid "Part manipulation" +msgstr "Parça manipülasyonu" + +msgid "Instance manipulation" +msgstr "Örnek manipülasyonu" + +msgid "Height ranges" +msgstr "Yükseklik aralıkları" + +msgid "Settings for height range" +msgstr "Yükseklik aralığı ayarları" + +msgid "Object" +msgstr "Nesne" + +msgid "Part" +msgstr "Parça" + +msgid "Layer" +msgstr "Katman" + +msgid "Selection conflicts" +msgstr "Seçim çakışmaları" + +msgid "" +"If first selected item is an object, the second one should also be object." +msgstr "İlk seçilen öğe bir nesne ise ikincisi de nesne olmalıdır." + +msgid "" +"If first selected item is a part, the second one should be part in the same " +"object." +msgstr "" +"İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." + +msgid "The type of the last solid object part is not to be changed." +msgstr "Son katı nesne parçasının tipi değiştirilNozullidir." + +msgid "Negative Part" +msgstr "Negatif Kısım" + +msgid "Modifier" +msgstr "Değiştirici" + +msgid "Support Blocker" +msgstr "Destek Engelleyici" + +msgid "Support Enforcer" +msgstr "Destek Uygulayıcısı" + +msgid "Type:" +msgstr "Tip:" + +msgid "Choose part type" +msgstr "Parça tipini seçin" + +msgid "Enter new name" +msgstr "Yeni adı girin" + +msgid "Renaming" +msgstr "Yeniden adlandırma" + +msgid "Repairing model object" +msgstr "Model nesnesini onarma" + +msgid "Following model object has been repaired" +msgid_plural "Following model objects have been repaired" +msgstr[0] "Aşağıdaki model nesnesi onarıldı" +msgstr[1] "Aşağıdaki model objeler onarıldı" + +msgid "Failed to repair folowing model object" +msgid_plural "Failed to repair folowing model objects" +msgstr[0] "Aşağıdaki model nesnesi onarılamadı" +msgstr[1] "Aşağıdaki model nesneleri onarılamadı" + +msgid "Repairing was canceled" +msgstr "Onarım iptal edildi" + +msgid "Additional process preset" +msgstr "Ek işlem ön ayarı" + +msgid "Remove parameter" +msgstr "Parametreyi kaldır" + +msgid "to" +msgstr "ile" + +msgid "Remove height range" +msgstr "Yükseklik aralığını kaldır" + +msgid "Add height range" +msgstr "Yükseklik aralığı ekle" + +msgid "Invalid numeric." +msgstr "Geçersiz sayı." + +msgid "one cell can only be copied to one or multiple cells in the same column" +msgstr "" +"bir hücre aynı sütundaki yalnızca bir veya daha fazla hücreye kopyalanabilir" + +msgid "multiple cells copy is not supported" +msgstr "birden fazla hücre kopyalama desteklenmiyor" + +msgid "Outside" +msgstr "Dış" + +msgid " " +msgstr " " + +msgid "Layer height" +msgstr "Katman yüksekliği" + +msgid "Wall loops" +msgstr "Duvar döngüleri" + +msgid "Infill density(%)" +msgstr "Dolgu yoğunluğu (%)" + +msgid "Auto Brim" +msgstr "Otomatik Kenar" + +msgid "Auto" +msgstr "Otomatik" + +msgid "Mouse ear" +msgstr "Fare Kulağı" + +msgid "Outer brim only" +msgstr "Yalnızca dış kenar" + +msgid "Inner brim only" +msgstr "Yalnızca iç kenar" + +msgid "Outer and inner brim" +msgstr "Dış ve iç kenar" + +msgid "No-brim" +msgstr "Kenarsız" + +msgid "Outer wall speed" +msgstr "Dış duvar hızı" + +msgid "Plate" +msgstr "Plaka" + +msgid "Brim" +msgstr "Kenar" + +msgid "Object/Part Setting" +msgstr "Nesne/Parça Ayarı" + +msgid "Reset parameter" +msgstr "Parametreyi sıfırla" + +msgid "Multicolor Print" +msgstr "Çok Renkli Baskı" + +msgid "Line Type" +msgstr "Çizgi Tipi" + +msgid "More" +msgstr "Daha" + +msgid "Open Preferences." +msgstr "Tercihler'i açın." + +msgid "Open next tip." +msgstr "Sonraki ipucunu açın." + +msgid "Open Documentation in web browser." +msgstr "Belgeleri web tarayıcısında açın." + +msgid "Pause:" +msgstr "Duraklat:" + +msgid "Custom Template:" +msgstr "Özel Şablon:" + +msgid "Custom G-code:" +msgstr "Özel G kodu:" + +msgid "Custom G-code" +msgstr "Özel G kodu" + +msgid "Enter Custom G-code used on current layer:" +msgstr "Geçerli katmanda kullanılan Özel G kodunu girin:" + +msgid "OK" +msgstr "TAMAM" + +msgid "Jump to Layer" +msgstr "Katmana Atla" + +msgid "Jump to layer" +msgstr "Katmana atla" + +msgid "Please enter the layer number" +msgstr "Lütfen katman numarasını girin" + +msgid "Add Pause" +msgstr "Duraklatma Ekle" + +msgid "Insert a pause command at the beginning of this layer." +msgstr "Bu katmanın başına bir duraklatma komutu ekleyin." + +msgid "Add Custom G-code" +msgstr "Özel G Kodu Ekle" + +msgid "Insert custom G-code at the beginning of this layer." +msgstr "Bu katmanın başına özel G kodunu ekleyin." + +msgid "Add Custom Template" +msgstr "Özel Şablon Ekle" + +msgid "Insert template custom G-code at the beginning of this layer." +msgstr "Bu katmanın başlangıcına şablon özel G kodunu ekleyin." + +msgid "Filament " +msgstr "Filament " + +msgid "Change filament at the beginning of this layer." +msgstr "Bu katmanın başlangıcında filamenti değiştirin." + +msgid "Delete Pause" +msgstr "Duraklatmayı Sil" + +msgid "Delete Custom Template" +msgstr "Özel Şablonu Sil" + +msgid "Edit Custom G-code" +msgstr "Özel G Kodunu Düzenle" + +msgid "Delete Custom G-code" +msgstr "Özel G Kodunu Sil" + +msgid "Delete Filament Change" +msgstr "Filament Değişikliğini Sil" + +msgid "No printer" +msgstr "Yazıcı yok" + +msgid "..." +msgstr "..." + +msgid "Failed to connect to the server" +msgstr "Sunucuya bağlanırken hata oluştu" + +msgid "Check cloud service status" +msgstr "Bulut hizmeti durumunu kontrol edin" + +msgid "code" +msgstr "kod" + +msgid "Failed to connect to cloud service" +msgstr "Bulut hizmetine bağlanılamadı" + +msgid "Please click on the hyperlink above to view the cloud service status" +msgstr "" +"Bulut hizmeti durumunu görüntülemek için lütfen yukarıdaki köprüye tıklayın" + +msgid "Failed to connect to the printer" +msgstr "Yazıcıya bağlanılamadı" + +msgid "Connection to printer failed" +msgstr "Yazıcıya bağlantı başarısız oldu" + +msgid "Please check the network connection of the printer and Studio." +msgstr "Lütfen yazıcının ve Studio'nun ağ bağlantısını kontrol edin." + +msgid "Connecting..." +msgstr "Bağlanıyor..." + +msgid "?" +msgstr "?" + +msgid "/" +msgstr "" + +msgid "Empty" +msgstr "Boş" + +msgid "AMS" +msgstr "AMS" + +msgid "Auto Refill" +msgstr "Otomatik Doldurma" + +msgid "AMS not connected" +msgstr "AMS bağlı değil" + +msgid "Load Filament" +msgstr "Filament Yükle" + +msgid "Unload Filament" +msgstr "Filamenti Çıkarın" + +msgid "Ext Spool" +msgstr "Harici Makara" + +msgid "Tips" +msgstr "İpuçları" + +msgid "Guide" +msgstr "Rehber" + +msgid "Retry" +msgstr "Yeniden dene" + +msgid "Calibrating AMS..." +msgstr "AMS kalibre ediliyor..." + +msgid "A problem occured during calibration. Click to view the solution." +msgstr "" +"Kalibrasyon sırasında bir sorun oluştu. Çözümü görüntülemek için tıklayın." + +msgid "Calibrate again" +msgstr "Tekrar kalibre edin" + +msgid "Cancel calibration" +msgstr "Kalibrasyonu iptal et" + +msgid "Idling..." +msgstr "" + +msgid "Heat the nozzle" +msgstr "Nozulu ısıtın" + +msgid "Cut filament" +msgstr "Filamenti kes" + +msgid "Pull back current filament" +msgstr "Mevcut filamenti geri çekin" + +msgid "Push new filament into extruder" +msgstr "Yeni filamanı ekstrüdere itin" + +msgid "Purge old filament" +msgstr "Eski filamenti temizleyin" + +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" + +msgid "Grab new filament" +msgstr "Yeni filament al" + +msgid "" +"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " +"load or unload filiament." +msgstr "" +"Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası seçin " +"ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." + +msgid "Edit" +msgstr "Düzenle" + +msgid "" +"All the selected objects are on the locked plate,\n" +"We can not do auto-arrange on these objects." +msgstr "" +"Seçilen tüm nesneler kilitli plaka üzerindedir,\n" +"Bu nesneler üzerinde otomatik düzenleme yapamıyoruz." + +msgid "No arrangable objects are selected." +msgstr "Düzenlenebilir hiçbir nesne seçilmedi." + +msgid "" +"This plate is locked,\n" +"We can not do auto-arrange on this plate." +msgstr "" +"Bu plaka kilitli.\n" +"Bu plaka üzerinde otomatik düzenleme yapamıyoruz." + +msgid "Arranging..." +msgstr "Hizalanıyor..." + +msgid "" +"Arrange failed. Found some exceptions when processing object geometries." +msgstr "" +"Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar " +"bulundu." + +msgid "Arranging" +msgstr "Hizalanıyor" + +msgid "Arranging canceled." +msgstr "Hizalama iptal edildi." + +msgid "" +"Arranging is done but there are unpacked items. Reduce spacing and try again." +msgstr "" +"Hizalama yapıldı ancak paketlenmemiş ürünler var. Aralığı azaltın ve tekrar " +"deneyin." + +msgid "Arranging done." +msgstr "Hizalama tamamlandı." + +#, c-format, boost-format +msgid "" +"Arrangement ignored the following objects which can't fit into a single " +"bed:\n" +"%s" +msgstr "" +"Hizalama tek tablaya sığmayan aşağıdaki nesneler göz ardı edildi:\n" +"%s" + +msgid "" +"All the selected objects are on the locked plate,\n" +"We can not do auto-orient on these objects." +msgstr "" +"Seçilen tüm nesneler kilitli plaka üzerindedir,\n" +"Bu nesneler üzerinde otomatik yönlendirme yapamıyoruz." + +msgid "" +"This plate is locked,\n" +"We can not do auto-orient on this plate." +msgstr "" +"Bu plaka kilitli.\n" +"Bu plaka üzerinde otomatik yönlendirme yapamıyoruz." + +msgid "Orienting..." +msgstr "Yönlendiriliyor..." + +msgid "Orienting" +msgstr "Yönlendiriliyor" + +msgid "Filling bed " +msgstr "Yatak doldurma " + +msgid "Bed filling canceled." +msgstr "Yatak dolumu iptal edildi." + +msgid "Bed filling done." +msgstr "Yatak doldurma işlemi tamamlandı." + +msgid "Error! Unable to create thread!" +msgstr "Hata! Konu oluşturulamıyor!" + +msgid "Exception" +msgstr "Hata" + +msgid "Logging in" +msgstr "Giriş Yapılıyor" + +msgid "Login failed" +msgstr "Giriş başarısız oldu" + +msgid "Please check the printer network connection." +msgstr "Lütfen yazıcının ağ bağlantısını kontrol edin." + +msgid "Abnormal print file data. Please slice again." +msgstr "Anormal yazdırma dosyası verileri. Lütfen tekrar dilimleyin." + +msgid "Task canceled." +msgstr "Görev iptal edildi." + +msgid "Upload task timed out. Please check the network status and try again." +msgstr "" +"Yükleme görevi zaman aşımına uğradı. Lütfen ağ durumunu kontrol edin ve " +"tekrar deneyin." + +msgid "Cloud service connection failed. Please try again." +msgstr "Bulut hizmeti bağlantısı başarısız oldu. Lütfen tekrar deneyin." + +msgid "Print file not found. please slice again." +msgstr "Yazdırma dosyası bulunamadı. lütfen tekrar dilimleyin." + +msgid "" +"The print file exceeds the maximum allowable size (1GB). Please simplify the " +"model and slice again." +msgstr "" +"Yazdırma dosyası izin verilen maksimum boyutu (1 GB) aşıyor. Lütfen modeli " +"basitleştirin ve tekrar dilimleyin." + +msgid "Failed to send the print job. Please try again." +msgstr "Yazdırma işi gönderilemedi. Lütfen tekrar deneyin." + +msgid "Failed to upload file to ftp. Please try again." +msgstr "Dosya ftp'ye yüklenemedi. Lütfen tekrar deneyin." + +msgid "" +"Check the current status of the bambu server by clicking on the link above." +msgstr "" +"Yukarıdaki bağlantıya tıklayarak bambu sunucusunun mevcut durumunu kontrol " +"edin." + +msgid "" +"The size of the print file is too large. Please adjust the file size and try " +"again." +msgstr "" +"Yazdırma dosyasının boyutu çok büyük. Lütfen dosya boyutunu ayarlayıp tekrar " +"deneyin." + +msgid "Print file not found, Please slice it again and send it for printing." +msgstr "" +"Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." + +msgid "" +"Failed to upload print file to FTP. Please check the network status and try " +"again." +msgstr "" +"Yazdırma dosyası FTP'ye yüklenemedi. Lütfen ağ durumunu kontrol edin ve " +"tekrar deneyin." + +msgid "Sending print job over LAN" +msgstr "Yazdırma işi LAN üzerinden gönderiliyor" + +msgid "Sending print job through cloud service" +msgstr "Yazdırma işini bulut hizmeti aracılığıyla gönderme" + +msgid "Service Unavailable" +msgstr "Hizmet kullanılamıyor" + +msgid "Unkown Error." +msgstr "Bilinmeyen Hata." + +msgid "Sending print configuration" +msgstr "Yazdırma yapılandırması gönderiliyor" + +#, c-format, boost-format +msgid "Successfully sent. Will automatically jump to the device page in %ss" +msgstr "Başarıyla gönderildi. %ss'de otomatik olarak cihaz sayfasına atlayacak" + +#, c-format, boost-format +msgid "Successfully sent. Will automatically jump to the next page in %ss" +msgstr "" +"Başarıyla gönderildi. %ss'de otomatik olarak bir sonraki sayfaya atlayacak" + +msgid "An SD card needs to be inserted before printing via LAN." +msgstr "LAN yoluyla yazdırmadan önce bir SD kartın takılması gerekir." + +msgid "Sending gcode file over LAN" +msgstr "LAN üzerinden gcode dosyası gönderiliyor" + +msgid "Sending gcode file to sdcard" +msgstr "Gcode dosyası sdcard'a gönderiliyor" + +#, c-format, boost-format +msgid "Successfully sent. Close current page in %s s" +msgstr "Başarıyla gönderildi. %s s'de mevcut sayfayı kapat" + +msgid "An SD card needs to be inserted before sending to printer." +msgstr "Yazıcıya göndermeden önce bir SD kartın takılması gerekir." + +msgid "Choose SLA archive:" +msgstr "SLA arşivini seçin:" + +msgid "Import file" +msgstr "Dosyayı içe aktar" + +msgid "Import model and profile" +msgstr "Modeli ve profili içe aktar" + +msgid "Import profile only" +msgstr "Yalnızca profili içe aktar" + +msgid "Import model only" +msgstr "Yalnızca modeli içe aktar" + +msgid "Accurate" +msgstr "Doğru" + +msgid "Balanced" +msgstr "Dengeli" + +msgid "Quick" +msgstr "Hızlı" + +msgid "Importing SLA archive" +msgstr "SLA arşivi içe aktarılıyor" + +msgid "" +"The SLA archive doesn't contain any presets. Please activate some SLA " +"printer preset first before importing that SLA archive." +msgstr "" +"SLA arşivi herhangi bir ön ayar içermez. Lütfen SLA arşivini içe aktarmadan " +"önce bazı SLA yazıcı ön ayarlarını etkinleştirin." + +msgid "Importing canceled." +msgstr "İçe aktarma iptal edildi." + +msgid "Importing done." +msgstr "İçe aktarma tamamlandı." + +msgid "" +"The imported SLA archive did not contain any presets. The current SLA " +"presets were used as fallback." +msgstr "" +"İçe aktarılan SLA arşivi herhangi bir ön ayar içermiyordu. Geçerli SLA ön " +"ayarları geri dönüş olarak kullanıldı." + +msgid "You cannot load SLA project with a multi-part object on the bed" +msgstr "Çok parçalı bir nesne içeren SLA projesini yatağa yükleyemezsiniz" + +msgid "Please check your object list before preset changing." +msgstr "Lütfen ön ayarı değiştirmeden önce nesne listenizi kontrol edin." + +msgid "Attention!" +msgstr "Dikkat!" + +msgid "Downloading" +msgstr "İndiriliyor" + +msgid "Download failed" +msgstr "Yükleme başarısız" + +msgid "Cancelled" +msgstr "İptal edildi" + +msgid "Install successfully." +msgstr "Yükleme başarılı." + +msgid "Installing" +msgstr "Yükleniyor" + +msgid "Install failed" +msgstr "Yükleme başarısız" + +msgid "Portions copyright" +msgstr "Bazı bölümlerin telif hakkı" + +msgid "Copyright" +msgstr "Telif hakkı" + +msgid "License" +msgstr "Lisans" + +msgid "Orca Slicer is licensed under " +msgstr "Orca Dilimleyici şu lisansa sahiptir: " + +msgid "GNU Affero General Public License, version 3" +msgstr "GNU Affero Genel Kamu Lisansı, sürüm 3" + +msgid "" +"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " +"by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and " +"the RepRap community" +msgstr "" +"Orca Slicer, Prusa Research'ün PrusaSlicer'ından Bambulab'ın " +"BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve RepRap " +"topluluğu tarafından hazırlanan Slic3r'dendir" + +msgid "Libraries" +msgstr "Kütüphaneler" + +msgid "" +"This software uses open source components whose copyright and other " +"proprietary rights belong to their respective owners" +msgstr "" +"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait " +"olan açık kaynaklı bileşenleri kullanır" + +#, c-format, boost-format +msgid "About %s" +msgstr "Hakkında %s" + +msgid "Orca Slicer " +msgstr "Orca Dilimleyici " + +msgid "OrcaSlicer is based on BambuStudio, PrusaSlicer, and SuperSlicer." +msgstr "OrcaSlicer, BambuStudio, PrusaSlicer ve SuperSlicer'ı temel alır." + +msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." +msgstr "" +"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel " +"almaktadır." + +msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." +msgstr "" +"PrusaSlicer orijinal olarak Alessandro Ranellucci'nin Slic3r'sine " +"dayanmaktadır." + +msgid "" +"Slic3r was created by Alessandro Ranellucci with the help of many other " +"contributors." +msgstr "" +"Slic3r, Alessandro Ranellucci tarafından diğer birçok katkıda bulunanların " +"yardımıyla yaratıldı." + +msgid "Version" +msgstr "Sürüm" + +msgid "AMS Materials Setting" +msgstr "AMS Malzeme Ayarı" + +msgid "Confirm" +msgstr "Onayla" + +msgid "Close" +msgstr "Kapat" + +msgid "Colour" +msgstr "Renk" + +msgid "" +"Nozzle\n" +"Temperature" +msgstr "" +"Nozul\n" +"Sıcaklık" + +msgid "max" +msgstr "maks" + +msgid "min" +msgstr "min" + +#, boost-format +msgid "The input value should be greater than %1% and less than %2%" +msgstr "Giriş değeri %1%'den büyük ve %2%'den küçük olmalıdır" + +msgid "SN" +msgstr "SN" + +msgid "Setting AMS slot information while printing is not supported" +msgstr "Yazdırma sırasında AMS yuvası bilgilerinin ayarlanması desteklenmiyor" + +msgid "Factors of Flow Dynamics Calibration" +msgstr "Akış Dinamiği Kalibrasyonunun Faktörleri" + +msgid "PA Profile" +msgstr "PA Profili" + +msgid "Factor K" +msgstr "Faktör K" + +msgid "Factor N" +msgstr "Faktör N" + +msgid "Setting Virtual slot information while printing is not supported" +msgstr "Yazdırma desteklenmediğinde Sanal yuva bilgilerinin ayarlanması" + +msgid "Are you sure you want to clear the filament information?" +msgstr "Filament bilgisini temizlemek istediğinizden emin misiniz?" + +msgid "You need to select the material type and color first." +msgstr "Önce malzeme türünü ve rengini seçmeniz gerekir." + +msgid "Please input a valid value (K in 0~0.5)" +msgstr "Lütfen geçerli bir değer girin (0~0,5'te K)" + +msgid "Please input a valid value (K in 0~0.5, N in 0.6~2.0)" +msgstr "Lütfen geçerli bir değer girin (0~0,5'te K, 0,6~2,0'da N)" + +msgid "Other Color" +msgstr "Diğer renk" + +msgid "Custom Color" +msgstr "Özel renk" + +msgid "Dynamic flow calibration" +msgstr "Dinamik akış kalibrasyonu" + +msgid "" +"The nozzle temp and max volumetric speed will affect the calibration " +"results. Please fill in the same values as the actual printing. They can be " +"auto-filled by selecting a filament preset." +msgstr "" +"Nozul sıcaklığı ve maksimum hacimsel hız kalibrasyon sonuçlarını " +"etkileyecektir. Lütfen gerçek yazdırmayla aynı değerleri girin. Bir filament " +"ön ayarı seçilerek otomatik olarak doldurulabilirler." + +msgid "Nozzle Diameter" +msgstr "Nozul Çapı" + +msgid "Bed Type" +msgstr "Yatak Tipi" + +msgid "Nozzle temperature" +msgstr "Nozzle sıcaklığı" + +msgid "Bed Temperature" +msgstr "Yatak Sıcaklığı" + +msgid "Max volumetric speed" +msgstr "Maksimum hacimsel hız" + +msgid "℃" +msgstr "°C" + +msgid "Bed temperature" +msgstr "Yatak sıcaklığı" + +msgid "mm³" +msgstr "mm³" + +msgid "Start calibration" +msgstr "Kalibrasyonu başlat" + +msgid "Next" +msgstr "Sonraki" + +msgid "" +"Calibration completed. Please find the most uniform extrusion line on your " +"hot bed like the picture below, and fill the value on its left side into the " +"factor K input box." +msgstr "" +"Kalibrasyon tamamlandı. Lütfen sıcak yatağınızdaki en düzgün ekstrüzyon " +"hattını aşağıdaki resimdeki gibi bulun ve sol tarafındaki değeri K faktörü " +"giriş kutusuna girin." + +msgid "Save" +msgstr "Kaydet" + +msgid "Last Step" +msgstr "Son adım" + +msgid "Example" +msgstr "Örnek" + +#, c-format, boost-format +msgid "Calibrating... %d%%" +msgstr "Kalibre ediliyor... %d%%" + +msgid "Calibration completed" +msgstr "Kalibrasyon tamamlandı" + +#, c-format, boost-format +msgid "%s does not support %s" +msgstr "%s, %s'yi desteklemiyor" + +msgid "Dynamic flow Calibration" +msgstr "Dinamik akış kalibrasyonu" + +msgid "Step" +msgstr "Adım" + +msgid "AMS Slots" +msgstr "AMS Yuvaları" + +msgid "" +"Note: Only the AMS slots loaded with the same material type can be selected." +msgstr "Not: Yalnızca aynı malzeme türüne sahip AMS yuvaları seçilebilir." + +msgid "Enable AMS" +msgstr "AMS'yi etkinleştir" + +msgid "Print with filaments in the AMS" +msgstr "AMS'deki filamentlerle yazdırma" + +msgid "Disable AMS" +msgstr "AMS'yi devre dışı bırak" + +msgid "Print with the filament mounted on the back of chassis" +msgstr "Şasinin arkasına monte edilmiş filamanla yazdırma" + +msgid "Cabin humidity" +msgstr "Kabin nemi" + +msgid "" +"Green means that AMS humidity is normal, orange represent humidity is high, " +"red represent humidity is too high.(Hygrometer: lower the better.)" +msgstr "" +"Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, kırmızı " +"ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar düşükse o kadar " +"iyidir.)" + +msgid "Desiccant status" +msgstr "Kurutucu durumu" + +msgid "" +"A desiccant status lower than two bars indicates that desiccant may be " +"inactive. Please change the desiccant.(The bars: higher the better.)" +msgstr "" +"İki çubuktan daha düşük bir kurutucu durumu, kurutucunun etkin olmadığını " +"gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa o " +"kadar iyidir.)" + +msgid "" +"Note: When the lid is open or the desiccant pack is changed, it can take " +"hours or a night to absorb the moisture. Low temperatures also slow down the " +"process. During this time, the indicator may not represent the chamber " +"accurately." +msgstr "" +"Not: Kapak açıkken veya kurutucu paketi değiştirildiğinde, nemin emilmesi " +"saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. Bu " +"süre zarfında gösterge hazneyi doğru şekilde temsil etmeyebilir." + +msgid "" +"Config which AMS slot should be used for a filament used in the print job" +msgstr "" +"Yazdırma işinde kullanılan filament için hangi AMS yuvasının kullanılması " +"gerektiğini yapılandırma" + +msgid "Filament used in this print job" +msgstr "Bu yazdırma işinde kullanılan filament" + +msgid "AMS slot used for this filament" +msgstr "Bu filament için kullanılan AMS yuvası" + +msgid "Click to select AMS slot manually" +msgstr "AMS yuvasını manuel olarak seçmek için tıklayın" + +msgid "Do not Enable AMS" +msgstr "AMS'yi Etkinleştirme" + +msgid "Print using materials mounted on the back of the case" +msgstr "Kasanın arkasına monte edilen malzemeleri kullanarak yazdırma" + +msgid "Print with filaments in ams" +msgstr "Ams içerisindeki filamentlerle yazdırma" + +msgid "Print with filaments mounted on the back of the chassis" +msgstr "Kasanın arkasına monte edilmiş filamentler ile yazdırma" + +msgid "" +"When the current material run out, the printer will continue to print in the " +"following order." +msgstr "" +"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam " +"edecektir." + +msgid "Group" +msgstr "Grup" + +msgid "" +"There are currently no identical spare consumables available, and automatic " +"replenishment is currently not possible. \n" +"(Currently supporting automatic supply of consumables with the same brand, " +"material type, and color)" +msgstr "" +"Şu anda aynı yedek sarf malzemesi mevcut değildir ve otomatik yenileme şu " +"anda mümkün değildir.\n" +"(Şu anda aynı marka, malzeme türü ve renkte sarf malzemelerinin otomatik " +"olarak tedarik edilmesi desteklenmektedir)" + +msgid "AMS Settings" +msgstr "AMS Ayarları" + +msgid "Insertion update" +msgstr "Ekleme güncellemesi" + +msgid "" +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament. This takes about 20 seconds." +msgstr "" +"AMS, yeni bir Bambu Lab filamanı takıldığında filament bilgilerini otomatik " +"olarak okuyacaktır. Bu yaklaşık 20 saniye sürer." + +msgid "" +"Note: if new filament is inserted during printing, the AMS will not " +"automatically read any information until printing is completed." +msgstr "" +"Not: Yazdırma sırasında yeni filament takılırsa AMS, yazdırma tamamlanana " +"kadar herhangi bir bilgiyi otomatik olarak okumayacaktır." + +msgid "" +"When inserting a new filament, the AMS will not automatically read its " +"information, leaving it blank for you to enter manually." +msgstr "" +"Yeni bir filament yerleştirirken AMS, bilgileri otomatik olarak okumaz ve " +"manuel olarak girmeniz için boş bırakır." + +msgid "Power on update" +msgstr "Güncellemeyi aç" + +msgid "" +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will roll filament " +"spools." +msgstr "" +"AMS, başlangıçta takılan filamanın bilgilerini otomatik olarak okuyacaktır. " +"Yaklaşık 1 dakika sürecektir. Okuma işlemi filament makaralarını saracaktır." + +msgid "" +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." +msgstr "" +"AMS, başlatma sırasında takılan filamandan bilgileri otomatik olarak okumaz " +"ve son kapatmadan önce kaydedilen bilgileri kullanmaya devam eder." + +msgid "Update remaining capacity" +msgstr "Kalan kapasiteyi güncelle" + +msgid "" +"The AMS will estimate Bambu filament's remaining capacity after the filament " +"info is updated. During printing, remaining capacity will be updated " +"automatically." +msgstr "" +"AMS, filament bilgisi güncellendikten sonra Bambu filamanının kalan " +"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik " +"olarak güncellenecektir." + +msgid "AMS filament backup" +msgstr "AMS filament yedeklemesi" + +msgid "" +"AMS will continue to another spool with the same properties of filament " +"automatically when current filament runs out" +msgstr "" +"AMS, mevcut filament bittiğinde otomatik olarak aynı özelliklere sahip başka " +"bir makaraya devam edecektir" + +msgid "File" +msgstr "Dosya" + +msgid "Calibration" +msgstr "Kalibrasyon" + +msgid "" +"Failed to download the plug-in. Please check your firewall settings and vpn " +"software, check and retry." +msgstr "" +"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn " +"yazılımınızı kontrol edin, kontrol edip yeniden deneyin." + +msgid "" +"Failed to install the plug-in. Please check whether it is blocked or deleted " +"by anti-virus software." +msgstr "" +"Eklenti yüklenemedi. Lütfen anti-virüs yazılımı tarafından engellenip " +"engellenmediğini veya silinip silinmediğini kontrol edin." + +msgid "click here to see more info" +msgstr "daha fazla bilgi görmek için burayı tıklayın" + +msgid "Please home all axes (click " +msgstr "Lütfen tüm eksenleri hizalayın (tıklayın) " + +msgid "" +") to locate the toolhead's position. This prevents device moving beyond the " +"printable boundary and causing equipment wear." +msgstr "" +") takım kafasının konumunu bulmak için. Bu, cihazın yazdırılabilir sınırın " +"dışına çıkmasını ve ekipmanın aşınmasına neden olmasını önler." + +msgid "Go Home" +msgstr "Anasayfaya Git" + +msgid "" +"A error occurred. Maybe memory of system is not enough or it's a bug of the " +"program" +msgstr "" +"Bir hata oluştu. Belki sistemin hafızası yeterli değildir veya programın bir " +"hatasıdır" + +msgid "Please save project and restart the program. " +msgstr "Lütfen projeyi kaydedin ve programı yeniden başlatın. " + +msgid "Processing G-Code from Previous file..." +msgstr "Önceki dosyadan G Kodu işleniyor..." + +msgid "Slicing complete" +msgstr "Dilimleme tamamlandı" + +msgid "Access violation" +msgstr "Erişim ihlali" + +msgid "Illegal instruction" +msgstr "Yasa dışı talimat" + +msgid "Divide by zero" +msgstr "Devide By Zero Hatası" + +msgid "Overflow" +msgstr "Yüksek Akış" + +msgid "Underflow" +msgstr "Düşük Akış" + +msgid "Floating reserved operand" +msgstr "Floating reserved operand" + +msgid "Stack overflow" +msgstr "Stack overflow" + +msgid "Unknown error when export G-code." +msgstr "G kodunu dışa aktarırken bilinmeyen hata." + +#, boost-format +msgid "" +"Failed to save gcode file.\n" +"Error message: %1%.\n" +"Source file %2%." +msgstr "" +"Gcode dosyası kaydedilemedi.\n" +"Hata mesajı: %1%.\n" +"Kaynak dosya %2%." + +#, boost-format +msgid "Succeed to export G-code to %1%" +msgstr "G kodunu %1%'e aktarmayı başardınız" + +msgid "Running post-processing scripts" +msgstr "İşlem sonrası komut dosyalarını çalıştırma" + +msgid "Copying of the temporary G-code to the output G-code failed" +msgstr "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu" + +#, boost-format +msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" +msgstr "" +"\"%1%\" hedefine yükleme planlanıyor. Bkz. Pencere -> Ana Bilgisayar Yükleme " +"Sırasını Yazdır" + +msgid "Origin" +msgstr "Menşei" + +msgid "Diameter" +msgstr "Çap" + +msgid "Size in X and Y of the rectangular plate." +msgstr "Dikdörtgen plakanın X ve Y boyutları." + +msgid "" +"Distance of the 0,0 G-code coordinate from the front left corner of the " +"rectangle." +msgstr "0,0 G kodu koordinatının dikdörtgenin sol ön köşesinden uzaklığı." + +msgid "" +"Diameter of the print bed. It is assumed that origin (0,0) is located in the " +"center." +msgstr "Baskı yatağının çapı. Orjinin (0,0) merkezde olduğu varsayılmaktadır." + +msgid "Rectangular" +msgstr "Dikdörtgen" + +msgid "Circular" +msgstr "Dairesel" + +msgid "Custom" +msgstr "Özel" + +msgid "Load shape from STL..." +msgstr "Şekli STL'den yükle..." + +msgid "Settings" +msgstr "Ayarlar" + +msgid "Texture" +msgstr "Doku" + +msgid "Remove" +msgstr "Kaldır" + +msgid "Not found:" +msgstr "Bulunamadı:" + +msgid "Model" +msgstr "Model" + +msgid "Choose an STL file to import bed shape from:" +msgstr "Yatak şeklini içe aktarmak için bir STL dosyası seçin:" + +msgid "Invalid file format." +msgstr "Geçersiz dosya formatı." + +msgid "Error! Invalid model" +msgstr "Hata! Geçersiz model" + +msgid "The selected file contains no geometry." +msgstr "Seçilen dosya geometri içermiyor." + +msgid "" +"The selected file contains several disjoint areas. This is not supported." +msgstr "Seçilen dosya birkaç ayrık alan içeriyor. Bu desteklenmiyor." + +msgid "Choose a file to import bed texture from (PNG/SVG):" +msgstr "Yatak dokusunu içe aktarmak için bir dosya seçin (PNG/SVG):" + +msgid "Choose an STL file to import bed model from:" +msgstr "Yatak modelini içe aktarmak için bir STL dosyası seçin:" + +msgid "Bed Shape" +msgstr "Yatak Şekli" + +msgid "" +"Nozzle may be blocked when the temperature is out of recommended range.\n" +"Please make sure whether to use the temperature to print.\n" +"\n" +msgstr "" +"Sıcaklık önerilen aralığın dışında olduğunda nozül tıkanmış olabilir.\n" +"Lütfen yazdırmak için sıcaklığı kullanıp kullanmayacağınızdan emin olun.\n" +"\n" + +#, c-format, boost-format +msgid "" +"Recommended nozzle temperature of this filament type is [%d, %d] degree " +"centigrade" +msgstr "" +"Bu filament tipinin tavsiye edilen Nozul sıcaklığı [%d, %d] derece " +"santigrattır" + +msgid "" +"Too small max volumetric speed.\n" +"Reset to 0.5" +msgstr "" +"Maksimum hacimsel hız çok küçük.\n" +"0,5'e sıfırla" + +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + +msgid "" +"Too small layer height.\n" +"Reset to 0.2" +msgstr "" +"Katman yüksekliği çok küçük.\n" +"0,2'ye sıfırla" + +msgid "" +"Too small ironing spacing.\n" +"Reset to 0.1" +msgstr "" +"Çok küçük ütüleme aralığı.\n" +"0,1'e sıfırla" + +msgid "" +"Zero initial layer height is invalid.\n" +"\n" +"The first layer height will be reset to 0.2." +msgstr "" +"Sıfır başlangıç katman yüksekliği geçersiz.\n" +"\n" +"İlk katmanın yüksekliği 0,2'ye sıfırlanacaktır." + +msgid "" +"This setting is only used for model size tunning with small value in some " +"cases.\n" +"For example, when model size has small error and hard to be assembled.\n" +"For large size tuning, please use model scale function.\n" +"\n" +"The value will be reset to 0." +msgstr "" +"Bu ayar yalnızca bazı durumlarda küçük değere sahip model boyutu ayarı için " +"kullanılır.\n" +"Örneğin, model boyutunda hata küçük olduğunda ve montajı zor olduğunda.\n" +"Büyük boyutlu ayarlama için lütfen model ölçeği işlevini kullanın.\n" +"\n" +"Değer 0'a sıfırlanacaktır." + +msgid "" +"Too large elefant foot compensation is unreasonable.\n" +"If really have serious elephant foot effect, please check other settings.\n" +"For example, whether bed temperature is too high.\n" +"\n" +"The value will be reset to 0." +msgstr "" +"Çok büyük fil ayağı telafisi mantıksızdır.\n" +"Gerçekten fil ayağı etkisi ciddi ise lütfen diğer ayarları kontrol edin.\n" +"Örneğin yatak sıcaklığının çok yüksek olup olmadığı.\n" +"\n" +"Değer 0'a sıfırlanacaktır." + +msgid "" +"Spiral mode only works when wall loops is 1, support is disabled, top shell " +"layers is 0, sparse infill density is 0 and timelapse type is traditional." +msgstr "" +"Spiral mod yalnızca duvar döngüleri 1 olduğunda, destek devre dışı " +"bırakıldığında, üst kabuk katmanları 0 olduğunda, seyrek dolgu yoğunluğu 0 " +"olduğunda ve timelapse türü geleneksel olduğunda çalışır." + +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + +msgid "" +"Change these settings automatically? \n" +"Yes - Change these settings and enable spiral mode automatically\n" +"No - Give up using spiral mode this time" +msgstr "" +"Bu ayarlar otomatik olarak değiştirilsin mi?\n" +"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak " +"etkinleştirin\n" +"Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" + +msgid "" +"Prime tower does not work when Adaptive Layer Height or Independent Support " +"Layer Height is on.\n" +"Which do you want to keep?\n" +"YES - Keep Prime Tower\n" +"NO - Keep Adaptive Layer Height and Independent Support Layer Height" +msgstr "" +"Prime tower, Uyarlanabilir Katman Yüksekliği veya Bağımsız Destek Katmanı " +"Yüksekliği açıkken çalışmaz.\n" +"Hangisini saklamak istiyorsun?\n" +"EVET - Prime Tower'ı Koruyun\n" +"HAYIR - Uyarlanabilir Katman Yüksekliğini ve Bağımsız Destek Katmanı " +"Yüksekliğini Koruyun" + +msgid "" +"Prime tower does not work when Adaptive Layer Height is on.\n" +"Which do you want to keep?\n" +"YES - Keep Prime Tower\n" +"NO - Keep Adaptive Layer Height" +msgstr "" +"Uyarlanabilir Katman Yüksekliği açıkken Prime tower çalışmıyor.\n" +"Hangisini saklamak istiyorsun?\n" +"EVET - Prime Tower'ı Koruyun\n" +"HAYIR - Uyarlanabilir Katman Yüksekliğini Koruyun" + +msgid "" +"Prime tower does not work when Independent Support Layer Height is on.\n" +"Which do you want to keep?\n" +"YES - Keep Prime Tower\n" +"NO - Keep Independent Support Layer Height" +msgstr "" +"Prime tower, Bağımsız Destek Katmanı Yüksekliği açıkken çalışmaz.\n" +"Hangisini saklamak istiyorsun?\n" +"EVET - Prime Tower'ı Koruyun\n" +"HAYIR - Bağımsız Destek Katmanı Yüksekliğini Koruyun" + +#, boost-format +msgid "%1% infill pattern doesn't support 100%% density." +msgstr "%1% dolgu deseni 100%% yoğunluğu desteklemiyor." + +msgid "" +"Switch to rectilinear pattern?\n" +"Yes - switch to rectilinear pattern automaticlly\n" +"No - reset density to default non 100% value automaticlly" +msgstr "" +"Doğrusal desene geçilsin mi?\n" +"Evet - otomatik olarak doğrusal desene geçin\n" +"Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere sıfırlayın" + +msgid "" +"While printing by Object, the extruder may collide skirt.\n" +"Thus, reset the skirt layer to 1 to avoid that." +msgstr "" +"Nesne ile yazdırma sırasında ekstruder etekle çarpışabilir.\n" +"Bu durumu önlemek için etek katmanını 1'e sıfırlayın." + +msgid "Auto bed leveling" +msgstr "Otomatik yatak tesviyesi" + +msgid "Heatbed preheating" +msgstr "Isıtma yatağı ön ısıtması" + +msgid "Sweeping XY mech mode" +msgstr "Süpürme XY mekanik modu" + +msgid "Changing filament" +msgstr "Filament Değişimi" + +msgid "M400 pause" +msgstr "M400 duraklatma" + +msgid "Paused due to filament runout" +msgstr "Filament bittiği için duraklatıldı" + +msgid "Heating hotend" +msgstr "Hotend ısıtılıyor" + +msgid "Calibrating extrusion" +msgstr "Ekstrüzyon kalibre ediliyor" + +msgid "Scanning bed surface" +msgstr "Yatak yüzeyi taranıyor" + +msgid "Inspecting first layer" +msgstr "İlk katmanın incelenmesi" + +msgid "Identifying build plate type" +msgstr "Yapı plakası türünü belirleme" + +msgid "Calibrating Micro Lidar" +msgstr "Mikro Lidar'ın Kalibre Ediliyor" + +msgid "Homing toolhead" +msgstr "Baskı Kafası Home Pozisyonuna Getiriliyor" + +msgid "Cleaning nozzle tip" +msgstr "Nozul temizleme ipucu" + +msgid "Checking extruder temperature" +msgstr "Ekstruder sıcaklığının kontrol edilmesi" + +msgid "Printing was paused by the user" +msgstr "Yazdırma kullanıcı tarafından duraklatıldı" + +msgid "Pause of front cover falling" +msgstr "Ön kapağın düşmesinin duraklaması" + +msgid "Calibrating the micro lida" +msgstr "Mikro Lida'nın kalibre edilmesi" + +msgid "Calibrating extrusion flow" +msgstr "Ekstrüzyon akışını kalibre et" + +msgid "Paused due to nozzle temperature malfunction" +msgstr "Nozül sıcaklığı arızası nedeniyle duraklatıldı" + +msgid "Paused due to heat bed temperature malfunction" +msgstr "Isıtma yatağı sıcaklığı arızası nedeniyle duraklatıldı" + +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + +msgid "MC" +msgstr "MC" + +msgid "MainBoard" +msgstr "Anakart" + +msgid "TH" +msgstr "TH" + +msgid "XCam" +msgstr "XCam" + +msgid "Unknown" +msgstr "Bilinmeyen" + +msgid "Fatal" +msgstr "Kritik" + +msgid "Serious" +msgstr "Ciddi" + +msgid "Common" +msgstr "Yaygın" + +msgid "Update successful." +msgstr "Güncelleme başarılı." + +msgid "Downloading failed." +msgstr "İndirme başarısız oldu." + +msgid "Verification failed." +msgstr "Doğrulama başarısız oldu." + +msgid "Update failed." +msgstr "Güncelleme başarısız oldu." + +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + +msgid "Failed to start printing job" +msgstr "Yazdırma işi başlatılamadı" + +msgid "Invalid nozzle diameter" +msgstr "Geçersiz nozul çapı" + +msgid "Calibration error" +msgstr "Kalibrasyon hatası" + +msgid "TPU is not supported by AMS." +msgstr "TPU, AMS tarafından desteklenmez." + +msgid "Bambu PET-CF/PA6-CF is not supported by AMS." +msgstr "Bambu PET-CF/PA6-CF, AMS tarafından desteklenNozulktedir." + +msgid "" +"Damp PVA will become flexible and get stuck inside AMS,please take care to " +"dry it before use." +msgstr "" +"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan " +"önce kurutmaya dikkat edin." + +msgid "" +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " +"AMS, please use with caution." +msgstr "" +"CF/GF filamentleri sert ve kırılgandır. AMS'de kırılması veya sıkışması " +"kolaydır, lütfen dikkatli kullanın." + +msgid "default" +msgstr "varsayılan" + +msgid "parameter name" +msgstr "parametre adı" + +msgid "N/A" +msgstr "N/A" + +#, c-format, boost-format +msgid "%s can't be percentage" +msgstr "%s yüzde olamaz" + +#, c-format, boost-format +msgid "Value %s is out of range, continue?" +msgstr "Değer %s aralık dışında, devam edilsin mi?" + +msgid "Parameter validation" +msgstr "Parametre doğrulama" + +msgid "Value is out of range." +msgstr "Değer aralık dışında." + +#, c-format, boost-format +msgid "" +"Is it %s%% or %s %s?\n" +"YES for %s%%, \n" +"NO for %s %s." +msgstr "" +"%s%% mi yoksa %s %s mi?\n" +"%s%% için EVET,\n" +"%s %s için HAYIR." + +#, boost-format +msgid "Invalid format. Expected vector format: \"%1%\"" +msgstr "Geçersiz format. Beklenen vektör formatı: \"%1%\"" + +msgid "Layer Height" +msgstr "Katman Yüksekliği" + +msgid "Line Width" +msgstr "Katman Genişliği" + +msgid "Fan Speed" +msgstr "Fan hızı" + +msgid "Temperature" +msgstr "Sıcaklık" + +msgid "Flow" +msgstr "Akış" + +msgid "Tool" +msgstr "Araç" + +msgid "Layer Time" +msgstr "Katman Süresi" + +msgid "Layer Time (log)" +msgstr "Katman Süresi (günlük)" + +msgid "Height: " +msgstr "Yükseklik: " + +msgid "Width: " +msgstr "Genişlik: " + +msgid "Speed: " +msgstr "Hız: " + +msgid "Flow: " +msgstr "Akış: " + +msgid "Layer Time: " +msgstr "Katman Süresi: " + +msgid "Fan: " +msgstr "Fan: " + +msgid "Temperature: " +msgstr "Sıcaklık: " + +msgid "Loading G-codes" +msgstr "G kodları yükleniyor" + +msgid "Generating geometry vertex data" +msgstr "Geometri köşe verileri oluşturma" + +msgid "Generating geometry index data" +msgstr "Geometri indeksi verileri oluşturuluyor" + +msgid "Statistics of All Plates" +msgstr "Tüm Plakaların İstatistikleri" + +msgid "Display" +msgstr "Ekran" + +msgid "Flushed" +msgstr "Temizlenmiş" + +msgid "Total" +msgstr "Toplam" + +msgid "Total Estimation" +msgstr "Toplam Tahmin" + +msgid "Total time" +msgstr "Toplam Süre" + +msgid "Total cost" +msgstr "" + +msgid "up to" +msgstr "kadar" + +msgid "above" +msgstr "üstünde" + +msgid "from" +msgstr "itibaren" + +msgid "Color Scheme" +msgstr "Renk Şeması" + +msgid "Time" +msgstr "Zaman" + +msgid "Percent" +msgstr "Yüzde" + +msgid "Layer Height (mm)" +msgstr "Katman Yüksekliği (mm)" + +msgid "Line Width (mm)" +msgstr "Çizgi Genişliği (mm)" + +msgid "Speed (mm/s)" +msgstr "Hız (mm/s)" + +msgid "Fan Speed (%)" +msgstr "Fan hızı (%)" + +msgid "Temperature (°C)" +msgstr "Sıcaklık (°C)" + +msgid "Volumetric flow rate (mm³/s)" +msgstr "Hacimsel akış hızı (mm³/s)" + +msgid "Used filament" +msgstr "Kullanılan filament" + +msgid "Travel" +msgstr "Seyahat" + +msgid "Seams" +msgstr "Dikişler" + +msgid "Retract" +msgstr "Geri çekme" + +msgid "Unretract" +msgstr "İleri İtme" + +msgid "Filament Changes" +msgstr "Filament Değişiklikleri" + +msgid "Wipe" +msgstr "Temizleme" + +msgid "Options" +msgstr "Seçenekler" + +msgid "travel" +msgstr "seyahat" + +msgid "Extruder" +msgstr "Ekstruder" + +msgid "Filament change times" +msgstr "Filament değişim süreleri" + +msgid "Cost" +msgstr "Maliyet" + +msgid "Color change" +msgstr "Renk değişimi" + +msgid "Print" +msgstr "Yazdır" + +msgid "Pause" +msgstr "Duraklat" + +msgid "Printer" +msgstr "Yazıcı" + +msgid "Print settings" +msgstr "Yazdırma ayarları" + +msgid "Time Estimation" +msgstr "Zaman Tahmini" + +msgid "Normal mode" +msgstr "Normal mod" + +msgid "Prepare time" +msgstr "Hazırlık süresi" + +msgid "Model printing time" +msgstr "Model yazdırma süresi" + +msgid "Switch to silent mode" +msgstr "Sessiz moda geç" + +msgid "Switch to normal mode" +msgstr "Normal moda geç" + +msgid "Variable layer height" +msgstr "Değişken katman yüksekliği" + +msgid "Adaptive" +msgstr "Uyarlanabilir" + +msgid "Quality / Speed" +msgstr "Kalite / Hız" + +msgid "Smooth" +msgstr "Pürüzsüz" + +msgid "Radius" +msgstr "Yarıçap" + +msgid "Keep min" +msgstr "Min. tut" + +msgid "Left mouse button:" +msgstr "Sol fare tuşu:" + +msgid "Add detail" +msgstr "Ayrıntı ekle" + +msgid "Right mouse button:" +msgstr "Sağ fare tuşu:" + +msgid "Remove detail" +msgstr "Ayrıntıyı kaldır" + +msgid "Shift + Left mouse button:" +msgstr "Shift + Sol fare düğmesi:" + +msgid "Reset to base" +msgstr "Tabana sıfırla" + +msgid "Shift + Right mouse button:" +msgstr "Shift + Sağ fare düğmesi:" + +msgid "Smoothing" +msgstr "Pürüzsüzleştirme" + +msgid "Mouse wheel:" +msgstr "Fare tekerleği:" + +msgid "Increase/decrease edit area" +msgstr "Düzenleme alanını artır/azalt" + +msgid "Sequence" +msgstr "Sekans" + +msgid "Mirror Object" +msgstr "Nesneyi Aynala" + +msgid "Tool Move" +msgstr "Araç Taşıma" + +msgid "Tool Rotate" +msgstr "Araç Döndürme" + +msgid "Move Object" +msgstr "Nesneyi Taşı" + +msgid "Auto Orientation options" +msgstr "Otomatik Yönlendirme seçenekleri" + +msgid "Enable rotation" +msgstr "Döndürmeyi etkinleştir" + +msgid "Optimize support interface area" +msgstr "Destek arayüzü alanını optimize edin" + +msgid "Orient" +msgstr "Yön" + +msgid "Arrange options" +msgstr "Hizalama seçenekleri" + +msgid "Spacing" +msgstr "Boşluk" + +msgid "Auto rotate for arrangement" +msgstr "Düzenleme için otomatik döndür" + +msgid "Allow multiple materials on same plate" +msgstr "Aynı plaka üzerinde birden fazla malzemeye izin ver" + +msgid "Avoid extrusion calibration region" +msgstr "Ekstrüzyon kalibrasyon bölgesinden kaçının" + +msgid "Align to Y axis" +msgstr "" + +msgid "Add" +msgstr "Ekle" + +msgid "Add plate" +msgstr "Plaka ekle" + +msgid "Auto orient" +msgstr "Otomatik yönlendir" + +msgid "Arrange all objects" +msgstr "Tüm nesneleri hizala" + +msgid "Arrange objects on selected plates" +msgstr "Seçilen plakalardaki nesneleri hizala" + +msgid "Split to objects" +msgstr "Nesnelere böl" + +msgid "Split to parts" +msgstr "Parçalara bölme" + +msgid "Assembly View" +msgstr "Montaj Görünümü" + +msgid "Select Plate" +msgstr "Plaka Seç" + +msgid "Assembly Return" +msgstr "Montaj İptali" + +msgid "return" +msgstr "geri dön" + +msgid "Paint Toolbar" +msgstr "Boyama Araç Çubuğu" + +msgid "Explosion Ratio" +msgstr "Patlama Oranı" + +msgid "Section View" +msgstr "Bölüm Görünümü" + +msgid "Assemble Control" +msgstr "Montaj Kontrolü" + +msgid "Total Volume:" +msgstr "Toplam Hacim:" + +msgid "Assembly Info" +msgstr "Montaj Bilgisi" + +msgid "Volume:" +msgstr "Hacim:" + +msgid "Size:" +msgstr "Boyut:" + +#, c-format, boost-format +msgid "" +"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " +"separate the conflicted objects farther (%s <-> %s)." +msgstr "" +"%d katmanında gcode yollarında çakışmalar bulundu, z = %.2lf mm. Lütfen " +"çakışan nesneleri daha uzağa ayırın (%s <-> %s)." + +msgid "An object is layed over the boundary of plate." +msgstr "Plakanın sınırına bir nesne serilir." + +msgid "A G-code path goes beyond the max print height." +msgstr "Bir G kodu yolu maksimum baskı yüksekliğinin ötesine geçer." + +msgid "A G-code path goes beyond the boundary of plate." +msgstr "Bir G kodu yolu plakanın sınırlarının ötesine geçer." + +msgid "Only the object being edit is visible." +msgstr "Yalnızca düzenlenen nesne görünür." + +msgid "" +"An object is laid over the boundary of plate or exceeds the height limit.\n" +"Please solve the problem by moving it totally on or off the plate, and " +"confirming that the height is within the build volume." +msgstr "" +"Plaka sınırının üzerine bir nesne döşenir veya yükseklik sınırını aşar.\n" +"Lütfen sorunu tamamen plakanın üzerine veya dışına hareket ettirerek ve " +"yüksekliğin yapım hacmi dahilinde olduğunu doğrulayarak çözün." + +msgid "Calibration step selection" +msgstr "Kalibrasyon adımı seçimi" + +msgid "Micro lidar calibration" +msgstr "Mikro lidar kalibrasyonu" + +msgid "Bed leveling" +msgstr "Yatak tesviye" + +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" + +msgid "Calibration program" +msgstr "Kalibrasyon programı" + +msgid "" +"The calibration program detects the status of your device automatically to " +"minimize deviation.\n" +"It keeps the device performing optimally." +msgstr "" +"Kalibrasyon programı, sapmayı en aza indirmek için cihazınızın durumunu " +"otomatik olarak algılar.\n" +"Cihazın en iyi şekilde çalışmasını sağlar." + +msgid "Calibration Flow" +msgstr "Kalibrasyon Akışı" + +msgid "Start Calibration" +msgstr "Kalibrasyonu Başlat" + +msgid "No step selected" +msgstr "" + +msgid "Completed" +msgstr "Tamamlandı" + +msgid "Calibrating" +msgstr "Kalibre ediliyor" + +msgid "Auto-record Monitoring" +msgstr "Otomatik Kayıt İzleme" + +msgid "Go Live" +msgstr "Canlı Yayına Geçin" + +msgid "Resolution" +msgstr "Çözünürlük" + +msgid "Show \"Live Video\" guide page." +msgstr "\"Canlı Video\" kılavuz sayfasını gösterin." + +msgid "720p" +msgstr "720p" + +msgid "1080p" +msgstr "1080p" + +msgid "ConnectPrinter(LAN)" +msgstr "ConnectPrinter(LAN)" + +msgid "Please input the printer access code:" +msgstr "Lütfen yazıcı erişim kodunu girin:" + +msgid "" +"You can find it in \"Settings > Network > Connection code\"\n" +"on the printer, as shown in the figure:" +msgstr "" +"Bunu \"Ayarlar > Ağ > Bağlantı kodu\" bölümünde bulabilirsiniz.\n" +"şekilde gösterildiği gibi yazıcıda:" + +msgid "Invalid input." +msgstr "Geçersiz Giriş." + +msgid "New Window" +msgstr "Yeni Pencere" + +msgid "Open a new window" +msgstr "Yeni pencere aç" + +msgid "Application is closing" +msgstr "Uygulama kapanıyor" + +msgid "Closing Application while some presets are modified." +msgstr "Bazı ön ayarlar değiştirilirken Uygulama kapatılıyor." + +msgid "Logging" +msgstr "Günlük kaydı" + +msgid "Prepare" +msgstr "Hazırlık" + +msgid "Preview" +msgstr "Ön İzleme" + +msgid "Device" +msgstr "Yazıcı" + +msgid "Project" +msgstr "Proje" + +msgid "Yes" +msgstr "Evet" + +msgid "No" +msgstr "HAYIR" + +msgid "will be closed before creating a new model. Do you want to continue?" +msgstr "" +"yeni bir model oluşturulmadan önce kapatılacaktır. Devam etmek istiyor musun?" + +msgid "Slice plate" +msgstr "Plakayı dilimle" + +msgid "Print plate" +msgstr "Plakayı Yazdır" + +msgid "Slice all" +msgstr "Hepsini dilimle" + +msgid "Export G-code file" +msgstr "G-kod dosyasını dışa aktar" + +msgid "Send" +msgstr "Gönder" + +msgid "Export plate sliced file" +msgstr "Dilimlenmiş plaka dosyasını dışa aktar" + +msgid "Export all sliced file" +msgstr "Tüm dilimlenmiş dosyayı dışa aktar" + +msgid "Print all" +msgstr "Tümünü yazdır" + +msgid "Send all" +msgstr "Hepsini gönder" + +msgid "Keyboard Shortcuts" +msgstr "Klavye kısayolları" + +msgid "Show the list of the keyboard shortcuts" +msgstr "Klavye kısayollarının listesini göster" + +msgid "Setup Wizard" +msgstr "Kurulum sihirbazı" + +msgid "Show Configuration Folder" +msgstr "Yapılandırma Klasörünü Göster" + +msgid "Show Tip of the Day" +msgstr "Günün İpucunu Göster" + +msgid "Check for Update" +msgstr "Güncellemeleri kontrol et" + +msgid "Open Network Test" +msgstr "Ağ Testini Aç" + +#, c-format, boost-format +msgid "&About %s" +msgstr "&Hakkında %s" + +msgid "Upload Models" +msgstr "Modelleri Yükle" + +msgid "Download Models" +msgstr "Modelleri İndir" + +msgid "Default View" +msgstr "Varsayılan görünüm" + +#. TRN To be shown in the main menu View->Top +msgid "Top" +msgstr "Üst" + +msgid "Top View" +msgstr "Üstten görünüm" + +#. TRN To be shown in the main menu View->Bottom +msgid "Bottom" +msgstr "Alt" + +msgid "Bottom View" +msgstr "Alttan görünüm" + +msgid "Front" +msgstr "Ön" + +msgid "Front View" +msgstr "Önden görünüm" + +msgid "Rear" +msgstr "Arka" + +msgid "Rear View" +msgstr "Arkadan Görünüm" + +msgid "Left" +msgstr "Sol" + +msgid "Left View" +msgstr "Soldan Görünüm" + +msgid "Right" +msgstr "Sağ" + +msgid "Right View" +msgstr "Sağdan Görünüm" + +msgid "Start a new window" +msgstr "Yeni pencere" + +msgid "New Project" +msgstr "Yeni proje" + +msgid "Start a new project" +msgstr "Yeni bir proje başlat" + +msgid "Open a project file" +msgstr "Proje dosyasını aç" + +msgid "Recent projects" +msgstr "Son Projeler" + +msgid "Save Project" +msgstr "Projeyi Kaydet" + +msgid "Save current project to file" +msgstr "Mevcut projeyi dosyaya kaydet" + +msgid "Save Project as" +msgstr "Projeyi farklı kaydet" + +msgid "Shift+" +msgstr "Shift+" + +msgid "Save current project as" +msgstr "Mevcut projeyi farklı kaydet" + +msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" +msgstr "3MF/STL/STEP/SVG/OBJ/AMF'yi içe aktar" + +msgid "Load a model" +msgstr "Model yükle" + +msgid "Import Configs" +msgstr "Yapılandırmaları İçe Aktar" + +msgid "Load configs" +msgstr "Yapılandırmaları yükle" + +msgid "Import" +msgstr "İçe aktar" + +msgid "Export all objects as STL" +msgstr "Tüm nesneleri STL olarak dışa aktar" + +msgid "Export Generic 3MF" +msgstr "Genel 3MF olarak dışa aktar" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "3mf dosyasını bazı 3mf uzantılarını kullanmadan dışa aktarın" + +msgid "Export current sliced file" +msgstr "Geçerli dilimlenmiş dosyayı dışa aktar" + +msgid "Export all plate sliced file" +msgstr "Dilimlenmiş tüm plaka dosyalarını dışa aktar" + +msgid "Export G-code" +msgstr "G-kodunu dışa aktar" + +msgid "Export current plate as G-code" +msgstr "Geçerli plakayı G kodu olarak dışa aktar" + +msgid "Export &Configs" +msgstr "Yapılandırmaları Dışa Aktar" + +msgid "Export current configuration to files" +msgstr "Geçerli yapılandırmayı dosyalara aktar" + +msgid "Export" +msgstr "Dışa Aktar" + +msgid "Quit" +msgstr "Çıkış" + +msgid "Undo" +msgstr "Geri al" + +msgid "Redo" +msgstr "İleri Al" + +msgid "Cut selection to clipboard" +msgstr "Seçimi panoya kes" + +msgid "Copy" +msgstr "Kopyala" + +msgid "Copy selection to clipboard" +msgstr "Seçimi panoya kopyala" + +msgid "Paste" +msgstr "Yapıştır" + +msgid "Paste clipboard" +msgstr "Panoyu yapıştır" + +msgid "Delete selected" +msgstr "Seçileni sil" + +msgid "Deletes the current selection" +msgstr "Geçerli seçimi sil" + +msgid "Delete all" +msgstr "Hepsini sil" + +msgid "Deletes all objects" +msgstr "Tüm nesneleri sil" + +msgid "Clone selected" +msgstr "Seçili olanı klonla" + +msgid "Clone copies of selections" +msgstr "Seçimlerin kopyalarını kopyala" + +msgid "Select all" +msgstr "Hepsini seç" + +msgid "Selects all objects" +msgstr "Tüm nesneleri seç" + +msgid "Deselect all" +msgstr "Hiçbirini seçme" + +msgid "Deselects all objects" +msgstr "Tüm nesnelerin seçimini kaldırır" + +msgid "Use Perspective View" +msgstr "Perspektif Görünüm" + +msgid "Use Orthogonal View" +msgstr "Ortogonal Görünüm" + +msgid "Show &Labels" +msgstr "Etiketleri Göster" + +msgid "Show object labels in 3D scene" +msgstr "3B sahnede nesne etiketlerini göster" + +msgid "Show &Overhang" +msgstr "Çıkıntıyı Göster" + +msgid "Show object overhang highlight in 3D scene" +msgstr "3B sahnede nesne çıkıntısı vurgusunu göster" + +msgid "Preferences" +msgstr "Tercihler" + +msgid "View" +msgstr "Görünüm" + +msgid "Help" +msgstr "Yardım" + +msgid "Temperature Calibration" +msgstr "Sıcaklık Kalibrasyonu" + +msgid "Pass 1" +msgstr "Geçiş 1" + +msgid "Flow rate test - Pass 1" +msgstr "Akış hızı testi - Başarılı 1" + +msgid "Pass 2" +msgstr "Geçiş 2" + +msgid "Flow rate test - Pass 2" +msgstr "Akış hızı testi - Geçiş 2" + +msgid "Flow rate" +msgstr "Akış hızı" + +msgid "Pressure advance" +msgstr "Basınç avansı" + +msgid "Retraction test" +msgstr "Geri çekme testi" + +msgid "Orca Tolerance Test" +msgstr "Orca Tolerans Testi" + +msgid "Max flowrate" +msgstr "Maksimum akış hızı" + +msgid "VFA" +msgstr "VFA" + +msgid "More..." +msgstr "Daha fazla..." + +msgid "Tutorial" +msgstr "Öğretici" + +msgid "Calibration help" +msgstr "Kalibrasyon yardımı" + +msgid "More calibrations" +msgstr "Daha fazla kalibrasyon" + +msgid "&Open G-code" +msgstr "&G kodunu aç" + +msgid "Open a G-code file" +msgstr "G kodu dosyası aç" + +msgid "Re&load from Disk" +msgstr "Diskten yeniden yükle" + +msgid "Reload the plater from disk" +msgstr "Plakalayıcıyı diskten yeniden yükle" + +msgid "Export &Toolpaths as OBJ" +msgstr "&Takımyollarını OBJ olarak dışa aktar" + +msgid "Export toolpaths as OBJ" +msgstr "Takımyollarını OBJ olarak dışa aktar" + +msgid "Open &Studio" +msgstr "&Stüdyo'yu aç" + +msgid "Open Studio" +msgstr "Stüdyoyu Aç" + +msgid "&Quit" +msgstr "&Çıkış" + +#, c-format, boost-format +msgid "Quit %s" +msgstr "%s'den çık" + +msgid "&File" +msgstr "&Dosya" + +msgid "&View" +msgstr "&Görünüm" + +msgid "&Help" +msgstr "&Yardım" + +#, c-format, boost-format +msgid "A file exists with the same name: %s, do you want to override it." +msgstr "Aynı adda bir dosya var: %s, üzerine yazmak istiyor musunuz." + +#, c-format, boost-format +msgid "A config exists with the same name: %s, do you want to override it." +msgstr "Aynı adda bir yapılandırma mevcut: %s, üzerine yazmak istiyor musunuz." + +msgid "Overwrite file" +msgstr "Dosyanın üzerine yaz" + +msgid "Yes to All" +msgstr "Tümüne evet" + +msgid "No to All" +msgstr "Tümüne hayır" + +msgid "Choose a directory" +msgstr "Dizin seç" + +#, c-format, boost-format +msgid "There is %d config exported. (Only non-system configs)" +msgid_plural "There are %d configs exported. (Only non-system configs)" +msgstr[0] "" +"Dışa aktarılan %d yapılandırma var. (Yalnızca sistem dışı yapılandırmalar)" +msgstr[1] "" +"Dışa aktarılan %d yapılandırma var. (Yalnızca sistem dışı yapılandırmalar)" + +msgid "Export result" +msgstr "Sonucu dışa aktar" + +msgid "Select profile to load:" +msgstr "Yüklenecek profili seç:" + +#, c-format, boost-format +msgid "There is %d config imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "" +"İçe aktarılan %d yapılandırma var. (Yalnızca sistem dışı ve uyumlu " +"yapılandırmalar)" +msgstr[1] "" +"İçe aktarılan %d yapılandırma var. (Yalnızca sistem dışı ve uyumlu " +"yapılandırmalar)" + +msgid "Import result" +msgstr "Sonucu içe aktar" + +msgid "File is missing" +msgstr "Dosya eksik" + +msgid "The project is no longer available." +msgstr "Proje artık mevcut değil." + +msgid "Filament Settings" +msgstr "Filament Ayarları" + +msgid "" +"Do you want to synchronize your personal data from Bambu Cloud? \n" +"It contains the following information:\n" +"1. The Process presets\n" +"2. The Filament presets\n" +"3. The Printer presets" +msgstr "" +"Kişisel verilerinizi Bambu Cloud'dan senkronize etmek ister misiniz?\n" +"Aşağıdaki bilgileri içerir:\n" +"1. Süreç ön ayarları\n" +"2. Filament ön ayarları\n" +"3. Yazıcı ön ayarları" + +msgid "Synchronization" +msgstr "Senkronizasyon" + +msgid "Initialize failed (No Device)!" +msgstr "Başlatma başarısız (Cihaz Yok)!" + +msgid "Initialize failed (Device connection not ready)!" +msgstr "Başlatma başarısız oldu (Cihaz bağlantısı hazır değil)!" + +msgid "Initialize failed (No Camera Device)!" +msgstr "Başlatma başarısız oldu (Kamera Cihazı Yok)!" + +msgid "Printer is busy downloading, Please wait for the downloading to finish." +msgstr "" +"Yazıcı indirme işlemiyle meşgul. Lütfen indirme işleminin bitmesini bekleyin." + +msgid "Loading..." +msgstr "Yükleniyor..." + +msgid "Initialize failed (Not supported on the current printer version)!" +msgstr "Başlatma başarısız oldu (Geçerli yazıcı sürümünde desteklenmiyor)!" + +msgid "Initialize failed (Not accessible in LAN-only mode)!" +msgstr "Başlatma başarısız oldu (Yalnızca LAN modunda erişilemez)!" + +msgid "Initialize failed (Missing LAN ip of printer)!" +msgstr "Başlatma başarısız oldu (Yazıcının LAN ip'si eksik)!" + +msgid "Initializing..." +msgstr "Başlatılıyor..." + +#, c-format, boost-format +msgid "Initialize failed (%s)!" +msgstr "Başlatma başarısız oldu (%s)!" + +msgid "Network unreachable" +msgstr "Ağa ulaşılamıyor" + +#, c-format, boost-format +msgid "Stopped [%d]!" +msgstr "[%d] durduruldu!" + +msgid "Stopped." +msgstr "Durdu." + +msgid "LAN Connection Failed (Failed to start liveview)" +msgstr "LAN Bağlantısı Başarısız Oldu (Canlı izleme başlatılamadı)" + +msgid "" +"Virtual Camera Tools is required for this task!\n" +"Do you want to install them?" +msgstr "" +"Bu görev için Sanal Kamera Araçları gereklidir!\n" +"Bunları yüklemek istiyor musunuz?" + +msgid "Downloading Virtual Camera Tools" +msgstr "Sanal Kamera Araçlarını İndirme" + +msgid "" +"Another virtual camera is running.\n" +"Bambu Studio supports only a single virtual camera.\n" +"Do you want to stop this virtual camera?" +msgstr "" +"Başka bir sanal kamera çalışıyor.\n" +"Bambu Studio yalnızca tek bir sanal kamerayı destekler.\n" +"Bu sanal kamerayı durdurmak istiyor musunuz?" + +#, c-format, boost-format +msgid "Virtual camera initialize failed (%s)!" +msgstr "Sanal kameranın başlatılması başarısız oldu (%s)!" + +msgid "Information" +msgstr "Bilgi" + +msgid "Playing..." +msgstr "Oynatılıyor..." + +#, c-format, boost-format +msgid "Load failed [%d]!" +msgstr "Yükleme başarısız [%d]!" + +msgid "Year" +msgstr "Yıl" + +msgid "Month" +msgstr "Ay" + +msgid "All Files" +msgstr "Tüm dosyalar" + +msgid "Group files by year, recent first." +msgstr "Dosyaları yıllara göre gruplandırın, en yenisi önce olsun." + +msgid "Group files by month, recent first." +msgstr "Dosyaları aya göre gruplandırın, en yenisi önce olsun." + +msgid "Show all files, recent first." +msgstr "Tüm dosyaları göster, en yenisi önce." + +msgid "Timelapse" +msgstr "Timelapse" + +msgid "Switch to timelapse files." +msgstr "Timelapse dosyalarına geç." + +msgid "Video" +msgstr "Video" + +msgid "Switch to video files." +msgstr "Video dosyalarına geç." + +msgid "Switch to 3mf model files." +msgstr "3mf model dosyalarına geçin." + +msgid "Delete selected files from printer." +msgstr "Seçilen dosyaları yazıcıdan silin." + +msgid "Download" +msgstr "İndir" + +msgid "Download selected files from printer." +msgstr "Seçilen dosyaları yazıcıdan indirin." + +msgid "Select" +msgstr "Seç" + +msgid "Batch manage files." +msgstr "Dosyaları toplu olarak yönet." + +msgid "No printers." +msgstr "Yazıcı yok." + +#, c-format, boost-format +msgid "Connect failed [%d]!" +msgstr "Bağlantı başarısız oldu [%d]!" + +msgid "Loading file list..." +msgstr "Dosya listesi yükleniyor..." + +#, c-format, boost-format +msgid "No files [%d]" +msgstr "Dosya yok [%d]" + +#, c-format, boost-format +msgid "Load failed [%d]" +msgstr "Yükleme başarısız [%d]" + +#, c-format, boost-format +msgid "You are going to delete %u file from printer. Are you sure to continue?" +msgid_plural "" +"You are going to delete %u files from printer. Are you sure to continue?" +msgstr[0] "" +"%u dosyasını yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" +msgstr[1] "" +"%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" + +msgid "Delete files" +msgstr "Dosyaları sil" + +#, c-format, boost-format +msgid "Do you want to delete the file '%s' from printer?" +msgstr "'%s' dosyasını yazıcıdan silmek istiyor musunuz?" + +msgid "Delete file" +msgstr "Dosyayı sil" + +msgid "Fetching model infomations ..." +msgstr "Model bilgileri alınıyor..." + +msgid "Failed to fetching model infomations from printer." +msgstr "Model bilgileri yazıcıdan alınamadı." + +msgid "Failed to parse model infomations." +msgstr "Model bilgileri ayrıştırılamadı." + +msgid "" +"The .gcode.3mf file contains no G-code data.Please slice it whthBambu Studio " +"and export a new .gcode.3mf file." +msgstr "" +".gcode.3mf dosyası hiçbir G kodu verisi içermiyor. Lütfen dosyayı Bambu " +"Studio ile dilimleyin ve yeni bir .gcode.3mf dosyasını dışa aktarın." + +#, c-format, boost-format +msgid "File '%s' was lost! Please download it again." +msgstr "'%s' dosyası kayboldu! Lütfen tekrar indirin." + +msgid "Download waiting..." +msgstr "İndirme bekleniyor..." + +msgid "Play" +msgstr "Oynat" + +msgid "Open Folder" +msgstr "Klasörü Aç" + +msgid "Download finished" +msgstr "İndirme tamamlandı" + +#, c-format, boost-format +msgid "Downloading %d%%..." +msgstr "%d%% indiriliyor..." + +msgid "Not supported on the current printer version." +msgstr "Geçerli yazıcı sürümünde desteklenmiyor." + +msgid "Storage unavailable, insert SD card." +msgstr "Depolama alanı kullanılamıyor, SD kartı takın." + +msgid "Speed:" +msgstr "Hız:" + +msgid "Deadzone:" +msgstr "Ölü bölge:" + +msgid "Options:" +msgstr "Seçenekler:" + +msgid "Zoom" +msgstr "Yakınlaştır" + +msgid "Translation/Zoom" +msgstr "Çeviri/Yakınlaştırma" + +msgid "3Dconnexion settings" +msgstr "3D bağlantı ayarları" + +msgid "Swap Y/Z axes" +msgstr "Y/Z eksenlerini değiştirin" + +msgid "Invert X axis" +msgstr "X eksenini ters çevir" + +msgid "Invert Y axis" +msgstr "Y eksenini ters çevir" + +msgid "Invert Z axis" +msgstr "Z eksenini ters çevir" + +msgid "Invert Yaw axis" +msgstr "Sapma eksenini ters çevir" + +msgid "Invert Pitch axis" +msgstr "Pitch eksenini ters çevir" + +msgid "Invert Roll axis" +msgstr "Silindir eksenini ters çevir" + +msgid "Printing Progress" +msgstr "Yazdırma İlerlemesi" + +msgid "Resume" +msgstr "Sürdür" + +msgid "Stop" +msgstr "Durdur" + +msgid "0" +msgstr "0" + +msgid "Layer: N/A" +msgstr "Katman: Yok" + +msgid "Clear" +msgstr "Temizle" + +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + +msgid "Camera" +msgstr "Kamera" + +msgid "SD Card" +msgstr "Hafıza kartı" + +msgid "Camera Setting" +msgstr "Kamera Ayarı" + +msgid "Control" +msgstr "Kontrol" + +msgid "Print Options" +msgstr "Yazdırma Seçenekleri" + +msgid "100%" +msgstr "100%" + +msgid "Lamp" +msgstr "Lamba" + +msgid "Aux" +msgstr "Yardımcı" + +msgid "Cham" +msgstr "Cham" + +msgid "Bed" +msgstr "Yatak" + +msgid "Unload" +msgstr "Boşalt" + +msgid "Debug Info" +msgstr "Hata Ayıklama Bilgisi" + +msgid "No SD Card" +msgstr "SD Kart Yok" + +msgid "SD Card Abnormal" +msgstr "SD Kart Anormal" + +msgid "Cancel print" +msgstr "Yazdırmayı iptal et" + +msgid "Are you sure you want to cancel this print?" +msgstr "Bu yazdırmayı iptal etmek istediğinizden emin misiniz?" + +msgid "Done" +msgstr "Tamamlandı" + +msgid "Downloading..." +msgstr "İndiriliyor..." + +msgid "Cloud Slicing..." +msgstr "Bulut Dilimleme..." + +#, c-format, boost-format +msgid "In Cloud Slicing Queue, there are %s tasks ahead." +msgstr "Bulut Dilimleme Sırasında önünüzde %s görev var." + +#, c-format, boost-format +msgid "Layer: %s" +msgstr "Katman: %s" + +#, c-format, boost-format +msgid "Layer: %d/%d" +msgstr "Katman: %d/%d" + +msgid "Please heat the nozzle to above 170 degree before loading filament." +msgstr "Filamenti yüklemeden önce lütfen Nozulu 170 derecenin üzerine ısıtın." + +msgid "Still unload" +msgstr "Daha Fazla Boşalt" + +msgid "Still load" +msgstr "Daha Fazla Yükle" + +msgid "Please select an AMS slot before calibration" +msgstr "Lütfen kalibrasyondan önce bir AMS yuvası seçin" + +msgid "" +"Cannot read filament info: the filament is loaded to the tool head,please " +"unload the filament and try again." +msgstr "" +"Filament bilgisi okunamıyor: Filament alet kafasına yüklenmiştir, lütfen " +"filamanı boşaltın ve tekrar deneyin." + +msgid "This only takes effect during printing" +msgstr "Bu yalnızca yazdırma sırasında etkili olur" + +msgid "Silent" +msgstr "Sessiz" + +msgid "Standard" +msgstr "Standart" + +msgid "Sport" +msgstr "Spor" + +msgid "Ludicrous" +msgstr "Gülünç" + +msgid "Can't start this without SD card." +msgstr "SD kart olmadan bunu başlatamıyorum." + +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "bilgi" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + +msgid "Status" +msgstr "Durum" + +msgid "Update" +msgstr "Güncelle" + +msgid "HMS" +msgstr "HMS" + +msgid "Don't show again" +msgstr "Bir daha gösterme" + +#, c-format, boost-format +msgid "%s error" +msgstr "%s hata" + +#, c-format, boost-format +msgid "%s has encountered an error" +msgstr "%s bir hatayla karşılaştı" + +#, c-format, boost-format +msgid "%s warning" +msgstr "%s uyarı" + +#, c-format, boost-format +msgid "%s has a warning" +msgstr "%s'de uyarı var" + +#, c-format, boost-format +msgid "%s info" +msgstr "%s bilgi" + +#, c-format, boost-format +msgid "%s information" +msgstr "%s bilgisi" + +msgid "Skip" +msgstr "Atla" + +msgid "3D Mouse disconnected." +msgstr "3D Fare bağlantısı kesildi." + +msgid "Configuration can update now." +msgstr "Yapılandırma şimdi güncellenebilir." + +msgid "Detail." +msgstr "Detay." + +msgid "Integration was successful." +msgstr "Entegrasyon başarılı oldu." + +msgid "Integration failed." +msgstr "Entegrasyon başarısız oldu." + +msgid "Undo integration was successful." +msgstr "Entegrasyonun geri alınması başarılı oldu." + +msgid "New network plug-in available." +msgstr "Yeni ağ eklentisi mevcut." + +msgid "Details" +msgstr "Detaylar" + +msgid "Undo integration failed." +msgstr "Entegrasyon geri alınamadı." + +msgid "Exporting." +msgstr "Dışa Aktarılıyor." + +msgid "Software has New version." +msgstr "Yazılımın Yeni sürümü var." + +msgid "Goto download page." +msgstr "İndirme sayfasına gidin." + +msgid "Open Folder." +msgstr "Klasörü Aç." + +msgid "Safely remove hardware." +msgstr "Donanımı Güvenle Kaldır." + +#, c-format, boost-format +msgid "%1$d Object has custom supports." +msgid_plural "%1$d Objects have custom supports." +msgstr[0] "%1$d Nesnenin özel destekleri var." +msgstr[1] "%1$d Nesnelerin özel destekleri var." + +#, c-format, boost-format +msgid "%1$d Object has color painting." +msgid_plural "%1$d Objects have color painting." +msgstr[0] "%1$d Nesnenin renkli resmi var." +msgstr[1] "%1$d Nesnelerin renkli boyaması var." + +#, c-format, boost-format +msgid "%1$d object was loaded as a part of cut object." +msgid_plural "%1$d objects were loaded as parts of cut object" +msgstr[0] "%1$d nesne, kesme nesnesinin bir parçası olarak yüklendi." +msgstr[1] "%1$d nesne, kesme nesnesinin parçaları olarak yüklendi" + +msgid "ERROR" +msgstr "HATA" + +msgid "CANCELED" +msgstr "İPTAL EDİLDİ" + +msgid "COMPLETED" +msgstr "TAMAMLANDI" + +msgid "Cancel upload" +msgstr "Yüklemeyi iptal et" + +msgid "Slice ok." +msgstr "Dilimleme tamam." + +msgid "Jump to" +msgstr "Git" + +msgid "Error:" +msgstr "Hata:" + +msgid "Warning:" +msgstr "Uyarı:" + +msgid "Export successfully." +msgstr "Başarıyla dışa aktarıldı." + +msgid "Model file downloaded." +msgstr "" + +msgid "Serious warning:" +msgstr "Ciddi uyarı:" + +msgid " (Repair)" +msgstr " (Onar)" + +msgid " Click here to install it." +msgstr " Yüklemek için tıklayın." + +msgid "WARNING:" +msgstr "UYARI:" + +msgid "Your model needs support ! Please make support material enable." +msgstr "" +"Modelinizin desteğe ihtiyacı var! Lütfen destek materyalini etkinleştirin." + +msgid "Gcode path overlap" +msgstr "Gcode yolu çakışması" + +msgid "Support painting" +msgstr "Destek boyama" + +msgid "Color painting" +msgstr "Renkli boyama" + +msgid "Cut connectors" +msgstr "Konektörleri kes" + +msgid "Layers" +msgstr "Katmanlar" + +msgid "Range" +msgstr "Aralık" + +msgid "" +"The application cannot run normally because OpenGL version is lower than " +"2.0.\n" +msgstr "" +"OpenGL sürümü 2.0'dan düşük olduğundan uygulama normal şekilde çalışamıyor.\n" + +msgid "Please upgrade your graphics card driver." +msgstr "Lütfen grafik kartı sürücünüzü yükseltin." + +msgid "Unsupported OpenGL version" +msgstr "Desteklenmeyen OpenGL sürümü" + +#, c-format, boost-format +msgid "" +"Unable to load shaders:\n" +"%s" +msgstr "" +"Gölgelendiriciler yüklenemiyor:\n" +"%s" + +msgid "Error loading shaders" +msgstr "Gölgelendiriciler yüklenirken hata oluştu" + +msgctxt "Layers" +msgid "Top" +msgstr "Üst" + +msgctxt "Layers" +msgid "Bottom" +msgstr "Alt" + +msgid "Enable AI monitoring of printing" +msgstr "Yazdırmanın AI izlemesini etkinleştirin" + +msgid "Sensitivity of pausing is" +msgstr "Duraklatma hassasiyeti" + +msgid "Enable detection of build plate position" +msgstr "Yapı plakası konumunun algılanmasını etkinleştir" + +msgid "" +"The localization tag of build plate is detected, and printing is paused if " +"the tag is not in predefined range." +msgstr "" +"Baskı plakasının yerelleştirme etiketi algılanır ve etiket önceden " +"tanımlanmış aralıkta değilse yazdırma duraklatılır." + +msgid "First Layer Inspection" +msgstr "Birinci Katman Denetimi" + +msgid "Auto-recovery from step loss" +msgstr "Adım kaybından otomatik kurtarma" + +msgid "Allow Prompt Sound" +msgstr "" + +msgid "Global" +msgstr "Genel" + +msgid "Objects" +msgstr "Nesneler" + +msgid "Advance" +msgstr "Gelişmiş" + +msgid "Compare presets" +msgstr "Ön ayarları karşılaştır" + +msgid "View all object's settings" +msgstr "Nesnenin tüm ayarları" + +msgid "Filament settings" +msgstr "Filament ayarları" + +msgid "Printer settings" +msgstr "Yazıcı ayarları" + +msgid "Untitled" +msgstr "İsimsiz" + +#, boost-format +msgid " plate %1%:" +msgstr " plaka %1%:" + +msgid "Invalid name, the following characters are not allowed:" +msgstr "Geçersiz ad, aşağıdaki karakterlere izin verilmiyor:" + +msgid "Sliced Info" +msgstr "Dilimleme bilgisi" + +msgid "Used Filament (m)" +msgstr "Kullanılan Filament (m)" + +msgid "Used Filament (mm³)" +msgstr "Kullanılan Filament (mm³)" + +msgid "Used Filament (g)" +msgstr "Kullanılan Filament (g)" + +msgid "Used Materials" +msgstr "Kullanılan Malzemeler" + +msgid "Estimated time" +msgstr "Tahmini süresi" + +msgid "Filament changes" +msgstr "Filament değişiklikleri" + +msgid "Click to edit preset" +msgstr "Ön ayarı düzenlemek için tıklayın" + +msgid "Connection" +msgstr "Bağlantı" + +msgid "Bed type" +msgstr "Yatak türü" + +msgid "Flushing volumes" +msgstr "Yıkama hacimleri" + +msgid "Add one filament" +msgstr "Bir filament ekle" + +msgid "Remove last filament" +msgstr "Son filamenti kaldır" + +msgid "Synchronize filament list from AMS" +msgstr "Filament listesini AMS'den senkronize edin" + +msgid "Set filaments to use" +msgstr "Kullanılacak filamentleri ayarla" + +msgid "" +"No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgstr "" +"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' " +"sayfasında bir yazıcı seçin." + +msgid "Sync filaments with AMS" +msgstr "Filamentleri AMS ile senkronize et" + +msgid "" +"Sync filaments with AMS will drop all current selected filament presets and " +"colors. Do you want to continue?" +msgstr "" +"Filamentleri AMS ile senkronize etmek, seçili tüm mevcut filament ön " +"ayarlarını ve renklerini kaldıracaktır. Devam etmek istiyor musun?" + +msgid "" +"Already did a synchronization, do you want to sync only changes or resync " +"all?" +msgstr "" +"Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek " +"mi yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" + +msgid "Sync" +msgstr "Senkronizasyon" + +msgid "Resync" +msgstr "Yeniden eşitleme" + +msgid "There are no compatible filaments, and sync is not performed." +msgstr "Uyumlu filament yok ve senkronizasyon gerçekleştirilmiyor." + +msgid "" +"There are some unknown filaments mapped to generic preset. Please update " +"Orca Slicer or restart Orca Slicer to check if there is an update to system " +"presets." +msgstr "" +"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön " +"ayarlarında bir güncelleme olup olmadığını kontrol etmek için lütfen Orca " +"Slicer'ı güncelleyin veya Orca Slicer'ı yeniden başlatın." + +#, boost-format +msgid "Do you want to save changes to \"%1%\"?" +msgstr "\"%1%\" dosyasındaki değişiklikleri kaydetmek istiyor musunuz?" + +#, c-format, boost-format +msgid "" +"Successfully unmounted. The device %s(%s) can now be safely removed from the " +"computer." +msgstr "" +"Başarıyla kaldırıldı. %s(%s) aygıtı artık bilgisayardan güvenli bir şekilde " +"kaldırılabilir." + +#, c-format, boost-format +msgid "Ejecting of device %s(%s) has failed." +msgstr "%s(%s) aygıtının çıkarılması başarısız oldu." + +msgid "Previous unsaved project detected, do you want to restore it?" +msgstr "Önceki kaydedilmemiş proje algılandı, geri yüklemek istiyor musunuz?" + +msgid "Restore" +msgstr "Geri Yükleme" + +msgid "" +"The bed temperature exceeds filament's vitrification temperature. Please " +"open the front door of printer before printing to avoid nozzle clog." +msgstr "" +"Yatak sıcaklığı filamanın vitrifikasyon sıcaklığını aşıyor. Püskürtme ucunun " +"tıkanmasını önlemek için lütfen yazdırmadan önce yazıcının ön kapısını açın." + +msgid "" +"The nozzle hardness required by the filament is higher than the default " +"nozzle hardness of the printer. Please replace the hardened nozzle or " +"filament, otherwise, the nozzle will be attrited or damaged." +msgstr "" +"Filamentin gerektirdiği nozul sertliği, yazıcının varsayılan nozul " +"sertliğinden daha yüksektir. Lütfen sertleşmiş nozülü veya filamanı " +"değiştirin, aksi takdirde nozül aşınır veya hasar görür." + +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + +#, c-format, boost-format +msgid "Loading file: %s" +msgstr "Dosya yükleniyor: %s" + +msgid "The 3mf is not supported by OrcaSlicer, load geometry data only." +msgstr "" + +msgid "Load 3mf" +msgstr "3mf yükle" + +msgid "The Config can not be loaded." +msgstr "Yapılandırma yüklenemiyor." + +msgid "The 3mf is generated by old Orca Slicer, load geometry data only." +msgstr "" +"3mf, eski Orca Slicer tarafından oluşturulmuştur, yalnızca geometri " +"verilerini yükleyin." + +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Found following keys " +"unrecognized:" +msgstr "" +"3mf'nin %s sürümü, %s'in %s sürümünden daha yeni, Aşağıdaki anahtarlar " +"tanınmadan bulundu:" + +msgid "You'd better upgrade your software.\n" +msgstr "Yazılımınızı yükseltseniz iyi olur.\n" + +msgid "Newer 3mf version" +msgstr "Daha yeni 3mf sürümü" + +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software." +msgstr "" +"3mf'nin %s sürümü, %s'in %s sürümünden daha yeni, Yazılımınızı yükseltmenizi " +"öneririz." + +msgid "Invalid values found in the 3mf:" +msgstr "3mf'de geçersiz değerler bulundu:" + +msgid "Please correct them in the param tabs" +msgstr "Lütfen bunları parametre sekmelerinde düzeltin" + +msgid "The 3mf is not compatible, load geometry data only!" +msgstr "3mf uyumlu değil, yalnızca geometri verilerini yükleyin!" + +msgid "Incompatible 3mf" +msgstr "Uyumsuz 3mf" + +msgid "Name of components inside step file is not UTF8 format!" +msgstr "Adım dosyasındaki bileşenlerin adı UTF8 formatında değil!" + +msgid "The name may show garbage characters!" +msgstr "İsimde çöp karakterler görünebilir!" + +#, boost-format +msgid "Failed loading file \"%1%\". An invalid configuration was found." +msgstr "\"%1%\" dosyası yüklenemedi. Geçersiz bir yapılandırma bulundu." + +msgid "Objects with zero volume removed" +msgstr "Sıfır hacimli nesneler kaldırıldı" + +msgid "The volume of the object is zero" +msgstr "Cismin hacmi sıfır" + +#, c-format, boost-format +msgid "" +"The object from file %s is too small, and maybe in meters or inches.\n" +" Do you want to scale to millimeters?" +msgstr "" +"%s dosyasındaki nesne çok küçük; metre veya inç cinsinden olabilir.\n" +" Milimetreye ölçeklendirmek istiyor musunuz?" + +msgid "Object too small" +msgstr "Nesne çok küçük" + +msgid "" +"This file contains several objects positioned at multiple heights.\n" +"Instead of considering them as multiple objects, should \n" +"the file be loaded as a single object having multiple parts?" +msgstr "" +"Bu dosya birden fazla yükseklikte konumlandırılmış birkaç nesne içerir.\n" +"Bunları birden fazla nesne olarak düşünmek yerine,\n" +"dosya birden fazla parçaya sahip tek bir nesne olarak mı yüklenecek?" + +msgid "Multi-part object detected" +msgstr "Çok parçalı nesne algılandı" + +msgid "Load these files as a single object with multiple parts?\n" +msgstr "" +"Bu dosyalar birden fazla parçadan oluşan tek bir nesne olarak mı yüklensin?\n" + +msgid "Object with multiple parts was detected" +msgstr "Birden fazla parçaya sahip nesne algılandı" + +msgid "The file does not contain any geometry data." +msgstr "Dosya herhangi bir geometri verisi içermiyor." + +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" +msgstr "" +"Nesneniz çok büyük görünüyor. Isı yatağına sığacak şekilde otomatik olarak " +"küçültmek istiyor musunuz?" + +msgid "Object too large" +msgstr "Nesne çok büyük" + +msgid "Export STL file:" +msgstr "STL dosyasını dışa aktar:" + +msgid "Save file as:" +msgstr "Farklı kaydet:" + +msgid "Delete object which is a part of cut object" +msgstr "Kesilen nesnenin bir parçası olan nesneyi silin" + +msgid "" +"You try to delete an object which is a part of a cut object.\n" +"This action will break a cut correspondence.\n" +"After that model consistency can't be guaranteed." +msgstr "" +"Kesilmiş bir nesnenin parçası olan bir nesneyi silmeye çalışıyorsunuz.\n" +"Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" +"Bundan sonra model tutarlılığı garanti edilemez." + +msgid "The selected object couldn't be split." +msgstr "Seçilen nesne bölünemedi." + +msgid "Another export job is running." +msgstr "Başka bir ihracat işi yürütülüyor." + +msgid "Select a new file" +msgstr "Yeni dosya seç" + +msgid "File for the replace wasn't selected" +msgstr "Değiştirme dosyası seçilmedi" + +msgid "Error during replace" +msgstr "Değiştirme sırasında hata" + +msgid "Please select a file" +msgstr "Dosya seçin" + +msgid "Slicing" +msgstr "Dilimleniyor" + +msgid "There are warnings after slicing models:" +msgstr "Modellerin dilimlenmesinden sonra uyarılar vardır:" + +msgid "warnings" +msgstr "uyarılar" + +msgid "Invalid data" +msgstr "Geçersiz veri" + +msgid "Slicing Canceled" +msgstr "Dilimleme İptal Edildi" + +#, c-format, boost-format +msgid "Slicing Plate %d" +msgstr "Plaka %d dilimleniyor" + +msgid "Please resolve the slicing errors and publish again." +msgstr "Lütfen dilimleme hatalarını giderip tekrar yayınlayın." + +msgid "" +"Network Plug-in is not detected. Network related features are unavailable." +msgstr "Ağ Eklentisi algılanmadı. Ağla ilgili özellikler kullanılamıyor." + +msgid "" +"Preview only mode:\n" +"The loaded file contains gcode only, Can not enter the Prepare page" +msgstr "" +"Yalnızca önizleme modu:\n" +"Yüklenen dosya yalnızca gcode içeriyor, Hazırlama sayfasına girilemiyor" + +msgid "You can keep the modified presets to the new project or discard them" +msgstr "Değiştirilen ön ayarları yeni projede tutabilir veya silebilirsiniz" + +msgid "Creating a new project" +msgstr "Yeni bir proje oluşturma" + +msgid "Load project" +msgstr "Projeyi Aç" + +msgid "" +"Failed to save the project.\n" +"Please check whether the folder exists online or if other programs open the " +"project file." +msgstr "" +"Proje kaydedilemedi.\n" +"Lütfen klasörün çevrimiçi olup olmadığını veya proje dosyasını başka " +"programların açıp açmadığını kontrol edin." + +msgid "Save project" +msgstr "Projeyi kaydet" + +msgid "Importing Model" +msgstr "Model İçe aktarılıyor" + +msgid "prepare 3mf file..." +msgstr "3mf dosyasını hazırla..." + +msgid "downloading project ..." +msgstr "proje indiriliyor..." + +#, c-format, boost-format +msgid "Project downloaded %d%%" +msgstr "Proje %d%% indirildi" + +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + +msgid "The selected file" +msgstr "Seçili dosya" + +msgid "does not contain valid gcode." +msgstr "geçerli gcode içermiyor." + +msgid "Error occurs while loading G-code file" +msgstr "G kodu dosyası yüklenirken hata oluşuyor" + +msgid "Drop project file" +msgstr "Proje dosyasını sürükle" + +msgid "Please select an action" +msgstr "İşlem seçin" + +msgid "Open as project" +msgstr "Proje olarak aç" + +msgid "Import geometry only" +msgstr "Yalnızca geometriyi içe aktar" + +msgid "Only one G-code file can be opened at the same time." +msgstr "Aynı anda yalnızca bir G kodu dosyası açılabilir." + +msgid "G-code loading" +msgstr "G-kod yükleniyor" + +msgid "G-code files can not be loaded with models together!" +msgstr "G kodu dosyaları modellerle birlikte yüklenemez!" + +msgid "Can not add models when in preview mode!" +msgstr "Önizleme modundayken model eklenemiyor!" + +msgid "Add Models" +msgstr "Model Ekle" + +msgid "All objects will be removed, continue?" +msgstr "Tüm nesneler kaldırılacak, devam edilsin mi?" + +msgid "The current project has unsaved changes, save it before continue?" +msgstr "" +"Mevcut projede kaydedilmemiş değişiklikler var. Devam etmeden önce " +"kaydedilsin mi?" + +msgid "Remember my choice." +msgstr "Seçimimi hatırla." + +msgid "Number of copies:" +msgstr "Kopya sayısı:" + +msgid "Copies of the selected object" +msgstr "Seçilen nesnenin kopyaları" + +msgid "Save G-code file as:" +msgstr "G-kod dosyasını şu şekilde kaydedin:" + +msgid "Save Sliced file as:" +msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" + +#, c-format, boost-format +msgid "" +"The file %s has been sent to the printer's storage space and can be viewed " +"on the printer." +msgstr "" +"%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda " +"görüntülenebiliyor." + +msgid "" +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be exported." +msgstr "" +"Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca pozitif parçalar " +"ihraç edilecektir." + +msgid "Is the printer ready? Is the print sheet in place, empty and clean?" +msgstr "Yazıcı hazır mı? Baskı plakası takılı, boş ve temiz mi?" + +msgid "Upload and Print" +msgstr "Yükle ve Yazdır" + +msgid "" +"Print By Object: \n" +"Suggest to use auto-arrange to avoid collisions when printing." +msgstr "" +"Nesneye Göre Yazdır:\n" +"Yazdırma sırasında çarpışmaları önlemek için otomatik düzenlemeyi " +"kullanmanızı önerin." + +msgid "Send G-code" +msgstr "G-kodu gönder" + +msgid "Send to printer" +msgstr "Yazıcıya gönder" + +msgid "Custom supports and color painting were removed before repairing." +msgstr "Tamir edilmeden önce özel destekler ve renkli boyalar kaldırıldı." + +msgid "Invalid number" +msgstr "Geçersiz numara" + +msgid "Plate Settings" +msgstr "Plaka Ayarları" + +#, boost-format +msgid "Number of currently selected parts: %1%\n" +msgstr "Şu anda seçili parça sayısı: %1%\n" + +#, boost-format +msgid "Number of currently selected objects: %1%\n" +msgstr "Şu anda seçili nesnelerin sayısı: %1%\n" + +#, boost-format +msgid "Part name: %1%\n" +msgstr "Parça adı: %1%\n" + +#, boost-format +msgid "Object name: %1%\n" +msgstr "Nesne adı: %1%\n" + +#, boost-format +msgid "Size: %1% x %2% x %3% in\n" +msgstr "Boyut: %1% x %2% x %3%\n" + +#, boost-format +msgid "Size: %1% x %2% x %3% mm\n" +msgstr "Boyut: %1% x %2% x %3% mm\n" + +#, boost-format +msgid "Volume: %1% in³\n" +msgstr "Hacim: %1% in³\n" + +#, boost-format +msgid "Volume: %1% mm³\n" +msgstr "Hacim: %1% mm³\n" + +#, boost-format +msgid "Triangles: %1%\n" +msgstr "Üçgenler: %1%\n" + +msgid "Tips:" +msgstr "İpuçları:" + +msgid "" +"\"Fix Model\" feature is currently only on Windows. Please repair the model " +"on Orca Slicer(windows) or CAD softwares." +msgstr "" +"\"Modeli Onar\" özelliği şu anda yalnızca Windows'ta bulunmaktadır. Lütfen " +"modeli Orca Slicer (windows) veya CAD yazılımlarında onarın." + +#, c-format, boost-format +msgid "" +"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " +"still want to do this printing, please set this filament's bed temperature " +"to non zero." +msgstr "" +"Plaka% d: %s'nin %s(%s) filamanını yazdırmak için kullanılması önerilmez. " +"Eğer yine de bu baskıyı yapmak istiyorsanız, lütfen bu filamanın yatak " +"sıcaklığını sıfır olmayan bir değere ayarlayın." + +msgid "Switching the language requires application restart.\n" +msgstr "Dili değiştirmek uygulamanın yeniden başlatılmasını gerektirir.\n" + +msgid "Do you want to continue?" +msgstr "Devam etmek istiyor musun?" + +msgid "Language selection" +msgstr "Dil seçimi" + +msgid "Switching application language while some presets are modified." +msgstr "Bazı ön ayarlar değiştirilirken uygulama dilinin değiştirilmesi." + +msgid "Changing application language" +msgstr "Dil değiştiriliyor" + +msgid "Changing the region will log out your account.\n" +msgstr "Bölgeyi değiştirmek hesabınızdan çıkış yapmanıza neden olacaktır.\n" + +msgid "Region selection" +msgstr "Bölge seçimi" + +msgid "Second" +msgstr "Saniye" + +msgid "Browse" +msgstr "Aç" + +msgid "Choose Download Directory" +msgstr "İndirme Dizini seçin" + +msgid "General Settings" +msgstr "Genel Ayarlar" + +msgid "Asia-Pacific" +msgstr "Asya Pasifik" + +msgid "China" +msgstr "Çin" + +msgid "Europe" +msgstr "Avrupa" + +msgid "North America" +msgstr "Kuzey Amerika" + +msgid "Others" +msgstr "Diğer" + +msgid "Login Region" +msgstr "Giriş Bölgesi" + +msgid "Stealth Mode" +msgstr "Gizli mod" + +msgid "Metric" +msgstr "Metrik" + +msgid "Imperial" +msgstr "Imperial" + +msgid "Units" +msgstr "Birimler" + +msgid "Zoom to mouse position" +msgstr "Fare konumuna yakınlaştır" + +msgid "" +"Zoom in towards the mouse pointer's position in the 3D view, rather than the " +"2D window center." +msgstr "" +"2B pencere merkezi yerine, 3B görünümde fare işaretçisinin konumuna doğru " +"yakınlaştırın." + +msgid "Show \"Tip of the day\" notification after start" +msgstr "Başlangıçtan sonra \"Günün ipucu\" bildirimini göster" + +msgid "If enabled, useful hints are displayed at startup." +msgstr "Etkinleştirilirse başlangıçta faydalı ipuçları görüntülenir." + +msgid "Show g-code window" +msgstr "G kodu penceresini göster" + +msgid "If enabled, g-code window will be displayed." +msgstr "Etkinleştirilirse g kodu penceresi görüntülenecektir." + +msgid "Presets" +msgstr "Ön ayarlar" + +msgid "Auto sync user presets(Printer/Filament/Process)" +msgstr "Kullanıcı ön ayarları otomatik senkronizasyon (Yazıcı/Filament/İşlem)" + +msgid "User Sync" +msgstr "Kullanıcı Senkronizasyonu" + +msgid "Update built-in Presets automatically." +msgstr "Yerleşik Ön Ayarları otomatik olarak güncelleyin." + +msgid "System Sync" +msgstr "Sistem Senkronizasyonu" + +msgid "Clear my choice on the unsaved presets." +msgstr "Kaydedilmemiş ön ayarlardaki seçimimi temizle." + +msgid "Associate files to OrcaSlicer" +msgstr "Dosyaları OrcaSlicer ile ilişkilendirin" + +msgid "Associate .3mf files to OrcaSlicer" +msgstr ".3mf dosyalarını OrcaSlicer ile ilişkilendirin" + +msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" +msgstr "" +"Etkinleştirilirse, OrcaSlicer'ı .3mf dosyalarını açacak varsayılan uygulama " +"olarak ayarlar" + +msgid "Associate .stl files to OrcaSlicer" +msgstr ".stl dosyalarını OrcaSlicer ile ilişkilendirin" + +msgid "If enabled, sets OrcaSlicer as default application to open .stl files" +msgstr "" +"Etkinleştirilirse OrcaSlicer'ı .stl dosyalarını açmak için varsayılan " +"uygulama olarak ayarlar" + +msgid "Associate .step/.stp files to OrcaSlicer" +msgstr ".step/.stp dosyalarını OrcaSlicer ile ilişkilendirin" + +msgid "If enabled, sets OrcaSlicer as default application to open .step files" +msgstr "" +"Etkinleştirilirse, OrcaSlicer'ı .step dosyalarını açmak için varsayılan " +"uygulama olarak ayarlar" + +msgid "Online Models" +msgstr "Çevrimiçi Modeller" + +msgid "Show online staff-picked models on the home page" +msgstr "Personelin çevrimiçi olarak seçtiği modelleri ana sayfada göster" + +msgid "Maximum recent projects" +msgstr "Maksimum yeni proje" + +msgid "Maximum count of recent projects" +msgstr "Maksimum yeni proje sayısı" + +msgid "Clear my choice on the unsaved projects." +msgstr "Kaydedilmemiş projelerdeki seçimimi temizle." + +msgid "Auto-Backup" +msgstr "Otomatik yedekleme" + +msgid "" +"Backup your project periodically for restoring from the occasional crash." +msgstr "" +"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi " +"düzenli aralıklarla yedekleyin." + +msgid "every" +msgstr "her" + +msgid "The peroid of backup in seconds." +msgstr "Saniye cinsinden yedekleme periyodu." + +msgid "Downloads" +msgstr "İndirilenler" + +msgid "Dark Mode" +msgstr "Karanlık Mod" + +msgid "Enable Dark mode" +msgstr "Karanlık modu etkinleştir" + +msgid "Develop mode" +msgstr "Geliştirici Modu" + +msgid "Skip AMS blacklist check" +msgstr "AMS kara liste kontrolünü atla" + +msgid "Home page and daily tips" +msgstr "Ana sayfa ve günlük ipuçları" + +msgid "Show home page on startup" +msgstr "Başlangıçta ana sayfayı göster" + +msgid "Sync settings" +msgstr "Ayarları senkronize et" + +msgid "User sync" +msgstr "Kullanıcı senkronizasyonu" + +msgid "Preset sync" +msgstr "Ön ayar senkronizasyonu" + +msgid "Preferences sync" +msgstr "Tercihler senkronizasyonu" + +msgid "View control settings" +msgstr "Kontrol ayarlarını görüntüle" + +msgid "Rotate of view" +msgstr "Görünümü döndür" + +msgid "Move of view" +msgstr "Görüşün taşınması" + +msgid "Zoom of view" +msgstr "Görünümü yakınlaştır" + +msgid "Other" +msgstr "Diğer" + +msgid "Mouse wheel reverses when zooming" +msgstr "Yakınlaştırma sırasında fare tekerleği ters dönüyor" + +msgid "Enable SSL(MQTT)" +msgstr "SSL'yi etkinleştir(MQTT)" + +msgid "Enable SSL(FTP)" +msgstr "SSL'yi (FTP) etkinleştir" + +msgid "Internal developer mode" +msgstr "Dahili geliştirici modu" + +msgid "Log Level" +msgstr "Günlük Düzeyi" + +msgid "fatal" +msgstr "kritik" + +msgid "error" +msgstr "hata" + +msgid "warning" +msgstr "uyarı" + +msgid "debug" +msgstr "hata ayıklama" + +msgid "trace" +msgstr "iz" + +msgid "Host Setting" +msgstr "Yazıcı Ayarı" + +msgid "DEV host: api-dev.bambu-lab.com/v1" +msgstr "DEV ana bilgisayarı: api-dev.bambu-lab.com/v1" + +msgid "QA host: api-qa.bambu-lab.com/v1" +msgstr "QA ana bilgisayarı: api-qa.bambu-lab.com/v1" + +msgid "PRE host: api-pre.bambu-lab.com/v1" +msgstr "ÖN ana bilgisayar: api-pre.bambu-lab.com/v1" + +msgid "Product host" +msgstr "Ürün ana bilgisayarı" + +msgid "debug save button" +msgstr "hata ayıklama kaydet düğmesi" + +msgid "save debug settings" +msgstr "hata ayıklama ayarlarını kaydet" + +msgid "DEBUG settings have saved successfully!" +msgstr "DEBUG ayarları başarıyla kaydedildi!" + +msgid "Switch cloud environment, Please login again!" +msgstr "Bulut ortamını değiştirin, lütfen tekrar giriş yapın!" + +msgid "System presets" +msgstr "Sistem ön ayarları" + +msgid "User presets" +msgstr "Kullanıcı ön ayarları" + +msgid "Incompatible presets" +msgstr "Uyumsuz ön ayarlar" + +msgid "AMS filaments" +msgstr "AMS filamentler" + +msgid "Click to pick filament color" +msgstr "Filament rengini seçmek için tıklayın" + +msgid "Please choose the filament colour" +msgstr "Lütfen filament rengini seçin" + +msgid "Add/Remove presets" +msgstr "Ön ayarları ekle/kaldır" + +msgid "Edit preset" +msgstr "Ön ayarı düzenle" + +msgid "Project-inside presets" +msgstr "Proje içi ön ayarlar" + +msgid "Add/Remove filaments" +msgstr "Filament Ekle/Kaldır" + +msgid "Add/Remove materials" +msgstr "Materyal Ekle/Kaldır" + +msgid "Add/Remove printers" +msgstr "Yazıcı Ekle/Kaldır" + +msgid "Incompatible" +msgstr "Uyumsuz" + +msgid "The selected preset is null!" +msgstr "Seçilen ön ayar boş!" + +msgid "Plate name" +msgstr "Plaka adı" + +msgid "Same as Global Print Sequence" +msgstr "Global Yazdırma Sırasıyla aynı" + +msgid "Print sequence" +msgstr "Yazdırma sırası" + +msgid "Customize" +msgstr "Özelleştirmek" + +msgid "First layer filament sequence" +msgstr "İlk katman filament dizisi" + +msgid "Same as Global Plate Type" +msgstr "Global Plaka Tipi ile aynı" + +msgid "Same as Global Bed Type" +msgstr "Global Yatak Tipi ile aynı" + +msgid "By Layer" +msgstr "Katmana göre" + +msgid "By Object" +msgstr "Nesneye göre" + +msgid "Accept" +msgstr "Kabul etmek" + +msgid "Log Out" +msgstr "Çıkış" + +msgid "Slice all plate to obtain time and filament estimation" +msgstr "Zaman ve filament tahminini elde etmek için tüm plakayı dilimleyin" + +msgid "Packing project data into 3mf file" +msgstr "Proje verilerini 3mf dosyasına paketleme" + +msgid "Uploading 3mf" +msgstr "3mf yükleniyor" + +msgid "Jump to model publish web page" +msgstr "Model yayınlama web sayfasına git" + +msgid "Note: The preparation may takes several minutes. Please be patiant." +msgstr "Not: Hazırlık birkaç dakika sürebilir. Lütfen sabırlı olun." + +msgid "Publish" +msgstr "Yayınla" + +msgid "Publish was cancelled" +msgstr "Yayınlama iptal edildi" + +msgid "Slicing Plate 1" +msgstr "Dilimleme Plakası 1" + +msgid "Packing data to 3mf" +msgstr "Verileri 3mf'ye paketle" + +msgid "Jump to webpage" +msgstr "Web sayfasına atla" + +#, c-format, boost-format +msgid "Save %s as" +msgstr "%s'yi farklı kaydet" + +msgid "User Preset" +msgstr "Kullanıcı Ön Ayarı" + +msgid "Project Inside Preset" +msgstr "Ön ayar içerisinde proje" + +msgid "Name is invalid;" +msgstr "Geçersiz isim;" + +msgid "illegal characters:" +msgstr "yasadışı karakterler:" + +msgid "illegal suffix:" +msgstr "yasadışı sonek:" + +msgid "Name is unavailable." +msgstr "Ad kullanılamıyor." + +msgid "Overwrite a system profile is not allowed" +msgstr "Sistem profilinin üzerine yazmaya izin verilmiyor" + +#, boost-format +msgid "Preset \"%1%\" already exists." +msgstr "\"%1%\" ön ayarı zaten mevcut." + +#, boost-format +msgid "Preset \"%1%\" already exists and is incompatible with current printer." +msgstr "\"%1%\" ön ayarı zaten mevcut ve mevcut yazıcıyla uyumlu değil." + +msgid "Please note that saving action will replace this preset" +msgstr "Kaydetme eyleminin bu ön ayarın yerini alacağını lütfen unutmayın" + +msgid "The name is not allowed to be empty." +msgstr "Ad alanı boş bırakılamaz." + +msgid "The name is not allowed to start with space character." +msgstr "Adın boşluk karakteriyle başlamasına izin verilmez." + +msgid "The name is not allowed to end with space character." +msgstr "Adın boşluk karakteriyle bitmesine izin verilmez." + +msgid "The name cannot be the same as a preset alias name." +msgstr "Ad, önceden ayarlanmış bir takma adla aynı olamaz." + +msgid "Save preset" +msgstr "Ön ayarı kaydet" + +msgctxt "PresetName" +msgid "Copy" +msgstr "Kopyala" + +#, boost-format +msgid "Printer \"%1%\" is selected with preset \"%2%\"" +msgstr "\"%1%\" yazıcısı \"%2%\" ön ayarıyla seçildi" + +#, boost-format +msgid "Please choose an action with \"%1%\" preset after saving." +msgstr "Lütfen kaydettikten sonra \"%1%\" ön ayarına sahip bir eylem seçin." + +#, boost-format +msgid "For \"%1%\", change \"%2%\" to \"%3%\" " +msgstr "\"%1%\" için \"%2%\"yi \"%3%\" olarak değiştirin " + +#, boost-format +msgid "For \"%1%\", add \"%2%\" as a new preset" +msgstr "\"%1%\" için \"%2%\"yi yeni ön ayar olarak ekleyin" + +#, boost-format +msgid "Simply switch to \"%1%\"" +msgstr "Kolayca \"%1%\"e geçin" + +msgid "Task canceled" +msgstr "Görev iptal edildi" + +msgid "(LAN)" +msgstr "(LAN)" + +msgid "My Device" +msgstr "Cihazım" + +msgid "Other Device" +msgstr "Diğer Cihaz" + +msgid "Online" +msgstr "Çevrimiçi" + +msgid "Input access code" +msgstr "Erişim kodunu girin" + +msgid "Can't find my devices?" +msgstr "Cihazlarımı bulamıyor musunuz?" + +msgid "Log out successful." +msgstr "Çıkış Başarılı." + +msgid "Offline" +msgstr "Çevrimdışı" + +msgid "Busy" +msgstr "Meşgul" + +msgid "Bambu Cool Plate" +msgstr "Bambu Soğuk Plaka" + +msgid "PLA Plate" +msgstr "PLA Plaka" + +msgid "Bambu Engineering Plate" +msgstr "" + +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" + +msgid "Send print job to" +msgstr "Yazdırma işini şuraya gönder" + +msgid "Refresh" +msgstr "Yenile" + +msgid "Bed Leveling" +msgstr "Yatak Tesviyesi" + +msgid "Flow Dynamics Calibration" +msgstr "Akış Dinamiği Kalibrasyonu" + +msgid "Click here if you can't connect to the printer" +msgstr "" + +msgid "send completed" +msgstr "gönderme tamamlandı" + +msgid "Error code" +msgstr "Hata kodu" + +msgid "Check the status of current system services" +msgstr "Mevcut sistem hizmetlerinin durumunu kontrol edin" + +msgid "Printer local connection failed, please try again." +msgstr "Yazıcının yerel bağlantısı başarısız oldu, lütfen tekrar deneyin." + +msgid "No login account, only printers in LAN mode are displayed" +msgstr "" +"Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" + +msgid "Connecting to server" +msgstr "Sunucuya baglanıyor" + +msgid "Synchronizing device information" +msgstr "Cihaz bilgileri senkronize ediliyor" + +msgid "Synchronizing device information time out" +msgstr "Cihaz bilgilerinin senkronize edilmesi zaman aşımı" + +msgid "Cannot send the print job when the printer is updating firmware" +msgstr "Yazıcı ürün yazılımını güncellerken yazdırma işi gönderilemiyor" + +msgid "" +"The printer is executing instructions. Please restart printing after it ends" +msgstr "" +"Yazıcı talimatları yürütüyor. Lütfen bittikten sonra yazdırmayı yeniden " +"başlatın" + +msgid "The printer is busy on other print job" +msgstr "Yazıcı başka bir yazdırma işiyle meşgul" + +#, c-format, boost-format +msgid "" +"Filament %s exceeds the number of AMS slots. Please update the printer " +"firmware to support AMS slot assignment." +msgstr "" +"%s filamanı AMS yuvası sayısını aşıyor. AMS yuvası atamasını desteklemek " +"için lütfen yazıcının ürün yazılımını güncelleyin." + +msgid "" +"Filament exceeds the number of AMS slots. Please update the printer firmware " +"to support AMS slot assignment." +msgstr "" +"Filament, AMS yuvalarının sayısını aşıyor. AMS yuvası atamasını desteklemek " +"için lütfen yazıcının ürün yazılımını güncelleyin." + +msgid "" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" +msgstr "" +"AMS slot eşlemelerine yönelik filamanlar oluşturulmuştur. Eşleme AMS " +"yuvasını değiştirmek için yukarıdaki filamentlerden birine tıklayabilirsiniz" + +msgid "" +"Please click each filament above to specify its mapping AMS slot before " +"sending the print job" +msgstr "" +"Yazdırma işini göndermeden önce eşleme AMS yuvasını belirtmek için lütfen " +"yukarıdaki her filamente tıklayın" + +#, c-format, boost-format +msgid "" +"Filament %s does not match the filament in AMS slot %s. Please update the " +"printer firmware to support AMS slot assignment." +msgstr "" +"%s filamanı, %s AMS yuvasındaki filamanla eşleşmiyor. AMS yuvası atamasını " +"desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." + +msgid "" +"Filament does not match the filament in AMS slot. Please update the printer " +"firmware to support AMS slot assignment." +msgstr "" +"Filament, AMS yuvasındaki filamanla eşleşmiyor. AMS yuvası atamasını " +"desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." + +msgid "" +"The printer firmware only supports sequential mapping of filament => AMS " +"slot." +msgstr "" +"Yazıcı ürün yazılımı yalnızca filament => AMS yuvasının sıralı eşlemesini " +"destekler." + +msgid "An SD card needs to be inserted before printing." +msgstr "Yazdırmadan önce bir SD kartın takılması gerekir." + +msgid "The selected printer is incompatible with the chosen printer presets." +msgstr "Seçilen yazıcı, seçilen yazıcı ön ayarlarıyla uyumlu değil." + +msgid "An SD card needs to be inserted to record timelapse." +msgstr "Hızlandırılmış çekim kaydetmek için bir SD kartın takılması gerekir." + +msgid "" +"Cannot send the print job to a printer whose firmware is required to get " +"updated." +msgstr "" +"Yazdırma işi, ürün yazılımının güncellenmesi gereken bir yazıcıya " +"gönderilemiyor." + +msgid "Cannot send the print job for empty plate" +msgstr "Boş kalıp için yazdırma işi gönderilemiyor" + +msgid "This printer does not support printing all plates" +msgstr "Bu yazıcı tüm kalıpların yazdırılmasını desteklemiyor" + +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + +msgid "Errors" +msgstr "Hatalar" + +msgid "Please check the following:" +msgstr "Lütfen aşağıdakileri kontrol edin:" + +msgid "" +"The printer type selected when generating G-Code is not consistent with the " +"currently selected printer. It is recommended that you use the same printer " +"type for slicing." +msgstr "" +"G Kodu oluşturulurken seçilen yazıcı türü mevcut seçili yazıcıyla tutarlı " +"değil. Dilimleme için aynı yazıcı tipini kullanmanız tavsiye edilir." + +#, c-format, boost-format +msgid "%s is not supported by AMS." +msgstr "%s AMS tarafından desteklenmiyor." + +msgid "" +"There are some unknown filaments in the AMS mappings. Please check whether " +"they are the required filaments. If they are okay, press \"Confirm\" to " +"start printing." +msgstr "" +"AMS eşlemelerinde bazı bilinmeyen filamentler var. Lütfen bunların gerekli " +"filamentler olup olmadığını kontrol edin. Sorun yoksa, yazdırmayı başlatmak " +"için \"Onayla\"ya basın." + +msgid "" +"Please click the confirm button if you still want to proceed with printing." +msgstr "" +"Hala yazdırma işlemine devam etmek istiyorsanız lütfen onayla düğmesine " +"tıklayın." + +msgid "" +"Connecting to the printer. Unable to cancel during the connection process." +msgstr "Yazıcıya bağlanılıyor. Bağlantı işlemi sırasında iptal edilemiyor." + +msgid "Preparing print job" +msgstr "Yazdırma için hazırlanıyor" + +msgid "Abnormal print file data. Please slice again" +msgstr "Anormal yazdırma dosyası verileri. Lütfen tekrar dilimleyin" + +msgid "The name length exceeds the limit." +msgstr "Ad uzunluğu sınırı aşıyor." + +msgid "" +"Caution to use! Flow calibration on Textured PEI Plate may fail due to the " +"scattered surface." +msgstr "" +"Kullanmaya dikkat edin! Dokulu PEI Plakasındaki akış kalibrasyonu, dağınık " +"yüzey nedeniyle başarısız olabilir." + +msgid "Automatic flow calibration using Micro Lidar" +msgstr "Mikro Lidar kullanarak otomatik akış kalibrasyonu" + +msgid "Modifying the device name" +msgstr "Cihaz adını değiştir" + +msgid "Send to Printer SD card" +msgstr "Yazıcı SD kartına gönder" + +msgid "Cannot send the print task when the upgrade is in progress" +msgstr "Yükseltme devam ederken yazdırma görevi gönderilemiyor" + +msgid "An SD card needs to be inserted before send to printer SD card." +msgstr "Yazıcı SD kartına gönderilmeden önce bir SD kartın takılması gerekir." + +msgid "The printer is required to be in the same LAN as Bambu Studio." +msgstr "Yazıcının Bambu Studio ile aynı LAN'da olması gerekir." + +msgid "The printer does not support sending to printer SD card." +msgstr "Yazıcı, yazıcı SD kartına gönderimi desteklemiyor." + +msgid "Failed to create socket" +msgstr "Soket oluşturulamadı" + +msgid "Failed to connect socket" +msgstr "Soket bağlanamadı" + +msgid "Failed to publish login request" +msgstr "Giriş isteği yayınlanamadı" + +msgid "Get ticket from device timeout" +msgstr "Cihaz zaman aşımından bilet al" + +msgid "Get ticket from server timeout" +msgstr "Sunucu zaman aşımından bilet al" + +msgid "Failed to post ticket to server" +msgstr "Sunucuya bilet gönderilemedi" + +msgid "Failed to parse login report reason" +msgstr "Giriş raporu nedeni ayrıştırılamadı" + +msgid "Receive login report timeout" +msgstr "Giriş raporu alma zaman aşımı" + +msgid "Unknown Failure" +msgstr "Bilinmeyen Arıza" + +msgid "Log in printer" +msgstr "Yazıcıda oturum aç" + +msgid "Would you like to log in this printer with current account?" +msgstr "Bu yazıcıda geçerli hesapla oturum açmak ister misiniz?" + +msgid "Check the reason" +msgstr "Sebebini kontrol edin" + +msgid "Read and accept" +msgstr "Oku ve kabul et" + +msgid "Terms and Conditions" +msgstr "Şartlar ve koşullar" + +msgid "" +"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " +"device, please read the termsand conditions.By clicking to agree to use your " +"Bambu Lab device, you agree to abide by the Privacy Policyand Terms of " +"Use(collectively, the \"Terms\"). If you do not comply with or agree to the " +"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." +msgstr "" +"Bir Bambu Lab cihazı satın aldığınız için teşekkür ederiz.Bambu Lab " +"cihazınızı kullanmadan önce lütfen şartlar ve koşulları okuyun.Bambu Lab " +"cihazınızı kullanmayı kabul etmek için tıklayarak, Gizlilik Politikasına ve " +"Kullanım Koşullarına (topluca \"Şartlar\" olarak anılacaktır) uymayı kabul " +"etmiş olursunuz. \"). Bambu Lab Gizlilik Politikasına uymuyorsanız veya bu " +"Politikayı kabul etmiyorsanız lütfen Bambu Lab ekipmanlarını ve hizmetlerini " +"kullanmayın." + +msgid "and" +msgstr "ve" + +msgid "Privacy Policy" +msgstr "Gizlilik Politikası" + +msgid "We ask for your help to improve everyone's printer" +msgstr "Herkesin yazıcısını geliştirmek için yardımınızı istiyoruz" + +msgid "Statement about User Experience Improvement Program" +msgstr "Kullanıcı Deneyimini İyileştirme Programına İlişkin Açıklama" + +#, c-format, boost-format +msgid "" +"In the 3D Printing community, we learn from each other's successes and " +"failures to adjust our own slicing parameters and settings. %s follows the " +"same principle and uses machine learning to improve its performance from the " +"successes and failures of the vast number of prints by our users. We are " +"training %s to be smarter by feeding them the real-world data. If you are " +"willing, this service will access information from your error logs and usage " +"logs, which may include information described in Privacy Policy. We will " +"not collect any Personal Data by which an individual can be identified " +"directly or indirectly, including without limitation names, addresses, " +"payment information, or phone numbers. By enabling this service, you agree " +"to these terms and the statement about Privacy Policy." +msgstr "" +"3D Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı " +"düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. " +"%s aynı prensibi takip ediyor ve kullanıcılarımızın yaptığı çok sayıda " +"baskının başarı ve başarısızlıklarından performansını artırmak için " +"yazıcıöğrenimini kullanıyor. %s'yi gerçek dünya verileriyle besleyerek daha " +"akıllı olmaları için eğitiyoruz. İsterseniz bu hizmet, hata günlüklerinizden " +"ve kullanım günlüklerinizden, Gizlilik Politikasında açıklanan bilgileri de " +"içerebilecek bilgilere erişecektir. İsimler, adresler, ödeme bilgileri veya " +"telefon numaraları dahil ancak bunlarla sınırlı olmamak üzere, bir bireyin " +"doğrudan veya dolaylı olarak tanımlanmasını sağlayacak hiçbir Kişisel Veri " +"toplamayacağız. Bu hizmeti etkinleştirerek bu şartları ve Gizlilik " +"Politikasına ilişkin beyanı kabul etmiş olursunuz." + +msgid "Statement on User Experience Improvement Plan" +msgstr "Kullanıcı Deneyimi İyileştirme Planına İlişkin Açıklama" + +msgid "Log in successful." +msgstr "Giriş başarılı." + +msgid "Log out printer" +msgstr "Yazıcıdan çıkış yap" + +msgid "Would you like to log out the printer?" +msgstr "Yazıcıdaki oturumu kapatmak ister misiniz?" + +msgid "Please log in first." +msgstr "Lütfen önce giriş yapın." + +msgid "There was a problem connecting to the printer. Please try again." +msgstr "Yazıcıya bağlanırken bir sorun oluştu. Lütfen tekrar deneyin." + +msgid "Failed to log out." +msgstr "Oturum kapatılamadı." + +#. TRN "Save current Settings" +#, c-format, boost-format +msgid "Save current %s" +msgstr "Mevcut %s kaydet" + +msgid "Delete this preset" +msgstr "Bu ön ayarı sil" + +msgid "Search in preset" +msgstr "Ön ayarda ara" + +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." + +msgid "" +"Prime tower is required for smooth timeplase. There may be flaws on the " +"model without prime tower. Are you sure you want to disable prime tower?" +msgstr "" +"Sorunsuz timeplace için Prime Tower gereklidir. Prime tower olmayan modelde " +"kusurlar olabilir. Prime tower'ı devre dışı bırakmak istediğinizden emin " +"misiniz?" + +msgid "" +"Prime tower is required for smooth timelapse. There may be flaws on the " +"model without prime tower. Do you want to enable prime tower?" +msgstr "" +"Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower " +"olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor " +"musunuz?" + +msgid "" +"We have added an experimental style \"Tree Slim\" that features smaller " +"support volume but weaker strength.\n" +"We recommend using it with: 0 interface layers, 0 top distance, 2 walls." +msgstr "" +"Daha küçük destek hacmine ancak daha zayıf güce sahip deneysel bir tarz olan " +"\"Tree Slim\" ekledik.\n" +"Şunlarla kullanmanızı öneririz: 0 arayüz katmanı, 0 üst mesafe, 2 duvar." + +msgid "" +"Change these settings automatically? \n" +"Yes - Change these settings automatically\n" +"No - Do not change these settings for me" +msgstr "" +"Bu ayarlar otomatik olarak değiştirilsin mi?\n" +"Evet - Bu ayarları otomatik olarak değiştir\n" +"Hayır - Bu ayarları benim için değiştirme" + +msgid "" +"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " +"settings: at least 2 interface layers, at least 0.1mm top z distance or " +"using support materials on interface." +msgstr "" +"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en " +"az 2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " +"malzemeleri kullanılması." + +msgid "" +"When using support material for the support interface, We recommend the " +"following settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable " +"independent support layer height" +msgstr "" +"Destek arayüzü için destek materyali kullanırken aşağıdaki ayarları " +"öneriyoruz:\n" +"0 üst z mesafesi, 0 arayüz aralığı, eş merkezli desen ve bağımsız destek " +"katmanı yüksekliğini devre dışı bırakma" + +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 "" +"Araç başlığı olmadan timelapse kaydederken, bir \"Timelapse Wipe Tower\" " +"eklenmesi önerilir.\n" +"Yapı plakasının boş konumuna sağ tıklayın ve \"İlkel Ekle\" -> \"Timelapse " +"Temizleme Kulesi\" seçeneğini seçin." + +msgid "Line width" +msgstr "Katman Genişliği" + +msgid "Seam" +msgstr "Dikiş (Seam)" + +msgid "Precision" +msgstr "Hassasiyet" + +msgid "Wall generator" +msgstr "Duvarlar" + +msgid "Walls" +msgstr "Duvarlar" + +msgid "Top/bottom shells" +msgstr "Alt / Üst Katmanlar" + +msgid "Initial layer speed" +msgstr "Başlangıç Katmanı" + +msgid "Other layers speed" +msgstr "Diğer Katmanlar" + +msgid "Overhang speed" +msgstr "Çıkıntılar (Overhang)" + +msgid "" +"This is the speed for various overhang degrees. Overhang degrees are " +"expressed as a percentage of line width. 0 speed means no slowing down for " +"the overhang degree range and wall speed is used" +msgstr "" +"Bu, çeşitli sarkma dereceleri için hızdır. Çıkıntı dereceleri çizgi " +"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı " +"için yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" + +msgid "Bridge" +msgstr "Köprü" + +msgid "Set speed for external and internal bridges" +msgstr "Harici ve dahili köprüler için hızı ayarlayın" + +msgid "Travel speed" +msgstr "Seyahat hızı" + +msgid "Acceleration" +msgstr "Hızlanma" + +msgid "Jerk(XY)" +msgstr "Jerk(XY)" + +msgid "Raft" +msgstr "Raft" + +msgid "Support filament" +msgstr "Destek filamenti" + +msgid "Tree supports" +msgstr "" + +msgid "Prime tower" +msgstr "Prime kulesi" + +msgid "Special mode" +msgstr "Özel mod" + +msgid "G-code output" +msgstr "G kodu çıktısı" + +msgid "Post-processing Scripts" +msgstr "İşlem Sonrası Komut Dosyaları" + +msgid "Notes" +msgstr "Notlar" + +msgid "Frequent" +msgstr "Sıklıkla" + +#, c-format, boost-format +msgid "" +"Following line %s contains reserved keywords.\n" +"Please remove it, or will beat G-code visualization and printing time " +"estimation." +msgid_plural "" +"Following lines %s contain reserved keywords.\n" +"Please remove them, or will beat G-code visualization and printing time " +"estimation." +msgstr[0] "" +"Aşağıdaki %s satırı ayrılmış anahtar kelimeler içeriyor.\n" +"Lütfen onu kaldırın, aksi takdirde G kodu görselleştirmesini ve yazdırma " +"süresi tahminini geçeceksiniz." +msgstr[1] "" +"Aşağıdaki satırlar %s ayrılmış anahtar sözcükler içeriyor.\n" +"Lütfen bunları kaldırın, aksi takdirde G kodu görselleştirmesini ve yazdırma " +"süresi tahminini geçeceksiniz." + +msgid "Reserved keywords found" +msgstr "Ayrılmış anahtar kelimeler bulundu" + +msgid "Setting Overrides" +msgstr "Ayarların Üzerine Yazma" + +msgid "Retraction" +msgstr "Geri çekme" + +msgid "Basic information" +msgstr "Temel bilgiler" + +msgid "Recommended nozzle temperature" +msgstr "Önerilen Nozul sıcaklığı" + +msgid "Recommended nozzle temperature range of this filament. 0 means no set" +msgstr "" +"Bu filamentin önerilen Nozul sıcaklığı aralığı. 0 ayar yok anlamına gelir" + +msgid "Print temperature" +msgstr "Yazdırma sıcaklığı" + +msgid "Nozzle" +msgstr "Nozul" + +msgid "Nozzle temperature when printing" +msgstr "Yazdırma sırasında nozul sıcaklığı" + +msgid "Cool plate" +msgstr "Soğuk plaka" + +msgid "" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate" +msgstr "" +"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool " +"Plate üzerine yazdırmayı desteklemediği anlamına gelir" + +msgid "Engineering plate" +msgstr "Mühendislik plakası" + +msgid "" +"Bed temperature when engineering plate is installed. Value 0 means the " +"filament does not support to print on the Engineering Plate" +msgstr "" +"Mühendislik plakası takıldığında yatak sıcaklığı. Değer 0, filamentin " +"Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" + +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" + +msgid "" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" +msgstr "" + +msgid "Textured PEI Plate" +msgstr "Dokulu PEI Plaka" + +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" +"Dokulu PEI Plaka takıldığında yatak sıcaklığı. 0 Değeri, filamentin Dokulu " +"PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" + +msgid "Volumetric speed limitation" +msgstr "Hacimsel hız sınırlaması" + +msgid "Cooling" +msgstr "Soğutma" + +msgid "Cooling for specific layer" +msgstr "Belirli katman için soğutma" + +msgid "Part cooling fan" +msgstr "Parça soğutma fanı" + +msgid "Min fan speed threshold" +msgstr "Minimum fan hızı" + +msgid "" +"Part cooling fan speed will start to run at min speed when the estimated " +"layer time is no longer than the layer time in setting. When layer time is " +"shorter than threshold, fan speed is interpolated between the minimum and " +"maximum fan speed according to layer printing time" +msgstr "" +"Tahmini katman süresi ayardaki katman süresinden uzun olmadığında parça " +"soğutma fanı hızı minimum hızda çalışmaya başlayacaktır. Katman süresi " +"eşikten kısa olduğunda fan hızı, katman yazdırma süresine göre minimum ve " +"maksimum fan hızı arasında enterpole edilir" + +msgid "Max fan speed threshold" +msgstr "Maksimum fan hızı" + +msgid "" +"Part cooling fan speed will be max when the estimated layer time is shorter " +"than the setting value" +msgstr "" +"Tahmini katman süresi ayar değerinden kısa olduğunda parça soğutma fanı hızı " +"maksimum olacaktır" + +msgid "Auxiliary part cooling fan" +msgstr "Yardımcı parça soğutma fanı" + +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + +msgid "Filament start G-code" +msgstr "Filament başlangıç G kodu" + +msgid "Filament end G-code" +msgstr "Filament bitiş G kodu" + +msgid "Multimaterial" +msgstr "Çoklu Malzeme" + +msgid "Wipe tower parameters" +msgstr "Silme kulesi parametreleri" + +msgid "Toolchange parameters with single extruder MM printers" +msgstr "Tek ekstrüderli MM yazıcılarda araç değiştirme parametreleri" + +msgid "Ramming settings" +msgstr "Sıkıştırma ayarları" + +msgid "Toolchange parameters with multi extruder MM printers" +msgstr "Çoklu ekstrüder MM yazıcılarda araç değiştirme parametreleri" + +msgid "Printable space" +msgstr "Tabla Ayarı" + +msgid "Cooling Fan" +msgstr "Soğutucu fan" + +msgid "Fan speed-up time" +msgstr "Fan hızlanma süresi" + +msgid "Extruder Clearance" +msgstr "Ekstrüder Boşluğu" + +msgid "Accessory" +msgstr "Aksesuar" + +msgid "Machine gcode" +msgstr "YazıcıG-kod" + +msgid "Machine start G-code" +msgstr "Yazıcı başlangıç G-kod" + +msgid "Machine end G-code" +msgstr "Yazıcı bitiş G-kod" + +msgid "Before layer change G-code" +msgstr "Katman değişimi öncesi G-kod" + +msgid "Layer change G-code" +msgstr "Katman değişimi G-kod" + +msgid "Time lapse G-code" +msgstr "" + +msgid "Change filament G-code" +msgstr "Filament değişimi G-kod" + +msgid "Pause G-code" +msgstr "Duraklatma G-Kod" + +msgid "Template Custom G-code" +msgstr "Şablon Özel G-kod" + +msgid "Motion ability" +msgstr "Hareket" + +msgid "Normal" +msgstr "Normal" + +msgid "Speed limitation" +msgstr "Hız sınırlaması" + +msgid "Acceleration limitation" +msgstr "Hızlanma sınırlaması" + +msgid "Jerk limitation" +msgstr "Jerk sınırlaması" + +msgid "Single extruder multimaterial setup" +msgstr "Tek ekstrüder çoklu malzeme kurulumu" + +msgid "Wipe tower" +msgstr "Silme kulesi" + +msgid "Single extruder multimaterial parameters" +msgstr "Tek ekstrüder çoklu malzeme parametreleri" + +msgid "Layer height limits" +msgstr "Katman yüksekliği sınırları" + +msgid "Lift Z Enforcement" +msgstr "Z Kaldırma Uygulaması" + +msgid "Retraction when switching material" +msgstr "Malzemeyi değiştirirken geri çekme" + +msgid "" +"The Wipe option is not available when using the Firmware Retraction mode.\n" +"\n" +"Shall I disable it in order to enable Firmware Retraction?" +msgstr "" +"Firmware Geri Çekme modunu kullanırken Temizleme seçeneği kullanılamaz.\n" +"\n" +"Firmware Geri Çekmeyi etkinleştirmek için bunu devre dışı bırakmalı mıyım?" + +msgid "Firmware Retraction" +msgstr "Firmware Geri Çekme" + +msgid "Detached" +msgstr "Söküldü" + +msgid "Following preset will be deleted too." +msgid_plural "Following presets will be deleted too." +msgstr[0] "Aşağıdaki ön ayar da silinecektir." +msgstr[1] "Aşağıdaki ön ayarlar da silinecektir." + +#, boost-format +msgid "Are you sure to %1% the selected preset?" +msgstr "Seçilen ön ayarı %1% yaptığınızdan emin misiniz?" + +#. TRN Remove/Delete +#, boost-format +msgid "%1% Preset" +msgstr "%1% Ön Ayar" + +msgid "All" +msgstr "Tümü" + +msgid "Set" +msgstr "Ayarla" + +msgid "Click to reset current value and attach to the global value." +msgstr "Geçerli değeri sıfırlamak ve genel değere eklemek için tıklayın." + +msgid "Click to drop current modify and reset to saved value." +msgstr "" +"Geçerli değişikliği bırakmak ve kaydedilen değere sıfırlamak için tıklayın." + +msgid "Process Settings" +msgstr "İşlem Ayarları" + +msgid "Undef" +msgstr "Tanımsız" + +msgid "Unsaved Changes" +msgstr "Kaydedilmemiş Değişiklikler" + +msgid "Discard or Keep changes" +msgstr "Değişiklikleri Çıkart veya Sakla" + +msgid "Old Value" +msgstr "Eski Değer" + +msgid "New Value" +msgstr "Yeni değer" + +msgid "Transfer" +msgstr "Aktar" + +msgid "Don't save" +msgstr "Kaydetme" + +msgid "Discard" +msgstr "Çıkart" + +msgid "Click the right mouse button to display the full text." +msgstr "Tam metni görüntülemek için farenin sağ tuşuna tıklayın." + +msgid "All changes will not be saved" +msgstr "Tüm değişiklikler kaydedilmeyecek" + +msgid "All changes will be discarded." +msgstr "Tüm değişiklikler iptal edilecek." + +msgid "Save the selected options." +msgstr "Seçilen seçenekleri kaydedin." + +msgid "Keep the selected options." +msgstr "Seçilen seçenekleri sakla." + +msgid "Transfer the selected options to the newly selected preset." +msgstr "Seçilen seçenekleri yeni seçilen ön ayara aktarın." + +#, boost-format +msgid "" +"Save the selected options to preset \n" +"\"%1%\"." +msgstr "" +"Seçilen seçenekleri ön ayara kaydedin\n" +"\"%1%\"." + +#, boost-format +msgid "" +"Transfer the selected options to the newly selected preset \n" +"\"%1%\"." +msgstr "" +"Seçilen seçenekleri yeni seçilen ön ayara aktarın\n" +"\"%1%\"." + +#, boost-format +msgid "Preset \"%1%\" contains the following unsaved changes:" +msgstr "\"%1%\" ön ayarı aşağıdaki kaydedilmemiş değişiklikleri içeriyor:" + +#, boost-format +msgid "" +"Preset \"%1%\" is not compatible with the new printer profile and it " +"contains the following unsaved changes:" +msgstr "" +"Ön ayar \"%1%\", yeni yazıcı profiliyle uyumlu değil ve aşağıdaki " +"kaydedilmemiş değişiklikleri içeriyor:" + +#, boost-format +msgid "" +"Preset \"%1%\" is not compatible with the new process profile and it " +"contains the following unsaved changes:" +msgstr "" +"Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki " +"kaydedilmemiş değişiklikleri içeriyor:" + +#, boost-format +msgid "" +"You have changed some settings of preset \"%1%\". \n" +"Would you like to keep these changed settings (new value) after switching " +"preset?" +msgstr "" +"\"%1%\" ön ayarının bazı ayarlarını değiştirdiniz.\n" +"Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) korumak " +"ister misiniz?" + +msgid "" +"You have changed some preset settings. \n" +"Would you like to keep these changed settings (new value) after switching " +"preset?" +msgstr "" +"Bazı ön ayar ayarlarını değiştirdiniz.\n" +"Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) korumak " +"ister misiniz?" + +msgid "Extruders count" +msgstr "Ekstruder sayısı" + +msgid "General" +msgstr "Genel" + +msgid "Capabilities" +msgstr "Yetenekler" + +msgid "Select presets to compare" +msgstr "Karşılaştırılacak ön ayarları seçin" + +msgid "Show all presets (including incompatible)" +msgstr "Tüm ön ayarları göster (uyumsuz olanlar dahil)" + +msgid "Add File" +msgstr "Dosya Ekle" + +msgid "Set as cover" +msgstr "Kapak olarak ayarla" + +msgid "Cover" +msgstr "Kapak" + +#, boost-format +msgid "The name \"%1%\" already exists." +msgstr "\"%1%\" adı zaten mevcut." + +msgid "Basic Info" +msgstr "Temel bilgi" + +msgid "Pictures" +msgstr "Resimler" + +msgid "Bill of Materials" +msgstr "Malzeme Listesi" + +msgid "Assembly Guide" +msgstr "Montaj Kılavuzu" + +msgid "Author" +msgstr "Yazar" + +msgid "Model Name" +msgstr "Model adı" + +#, c-format, boost-format +msgid "%s Update" +msgstr "%s Güncelleme" + +msgid "A new version is available" +msgstr "Yeni bir sürüm mevcut" + +msgid "Configuration update" +msgstr "Yapılandırma güncellemesi" + +msgid "A new configuration package available, Do you want to install it?" +msgstr "Yeni bir konfigürasyon paketi mevcut. Kurmak istiyor musunuz?" + +msgid "Description:" +msgstr "Açıklama:" + +msgid "Configuration incompatible" +msgstr "Yapılandırma uyumsuz" + +msgid "the configuration package is incompatible with current application." +msgstr "yapılandırma paketi mevcut uygulamayla uyumlu değil." + +#, c-format, boost-format +msgid "" +"The configuration package is incompatible with current application.\n" +"%s will update the configuration package, Otherwise it won't be able to start" +msgstr "" +"Yapılandırma paketi mevcut uygulamayla uyumlu değil.\n" +"%s yapılandırma paketini güncelleyecek, Aksi halde başlatılamayacak" + +#, c-format, boost-format +msgid "Exit %s" +msgstr "%s'den çık" + +msgid "the Configuration package is incompatible with current APP." +msgstr "yapılandırma paketi mevcut APP ile uyumlu değil." + +msgid "Configuration updates" +msgstr "Yapılandırma güncellemeleri" + +msgid "No updates available." +msgstr "Güncelleme mevcut değil." + +msgid "The configuration is up to date." +msgstr "Yapılandırma güncel." + +msgid "Ramming customization" +msgstr "Sıkıştırma özelleştirme" + +msgid "" +"Ramming denotes the rapid extrusion just before a tool change in a single-" +"extruder MM printer. Its purpose is to properly shape the end of the " +"unloaded filament so it does not prevent insertion of the new filament and " +"can itself be reinserted later. This phase is important and different " +"materials can require different extrusion speeds to get the good shape. For " +"this reason, the extrusion rates during ramming are adjustable.\n" +"\n" +"This is an expert-level setting, incorrect adjustment will likely lead to " +"jams, extruder wheel grinding into filament etc." +msgstr "" +"Sıkıştırma, tek ekstrüderli bir MM yazıcıda takım değişiminden hemen önce " +"yapılan hızlı ekstrüzyonu ifade eder. Amacı, yeni filamentin " +"yerleştirilmesini engellememesi ve daha sonra yeniden yerleştirilebilmesi " +"için boşaltılmış filamentin ucunu düzgün bir şekilde şekillendirmektir. Bu " +"aşama önemlidir ve farklı malzemeler iyi bir şekil elde etmek için farklı " +"ekstrüzyon hızları gerektirebilir. Bu nedenle, sıkıştırma sırasındaki " +"ekstrüzyon hızları ayarlanabilir.\n" +"\n" +"Bu uzman düzeyinde bir ayardır, yanlış ayarlama muhtemelen sıkışmalara, " +"ekstrüder tekerleğinin filamente sürtünmesine vb. yol açacaktır." + +msgid "Total ramming time" +msgstr "Toplam sıkıştırma süresi" + +msgid "s" +msgstr "s" + +msgid "Total rammed volume" +msgstr "Toplam sıkıştırılmış hacim" + +msgid "Ramming line width" +msgstr "Sıkıştırma hattı genişliği" + +msgid "Ramming line spacing" +msgstr "Sıkıştırma hattı aralığı" + +msgid "Auto-Calc" +msgstr "Otomatik Hesaplama" + +msgid "Flushing volumes for filament change" +msgstr "Filament değişimi için temizleme hacmi" + +msgid "Multiplier" +msgstr "Çarpan" + +msgid "Flushing volume (mm³) for each filament pair." +msgstr "Her filament çifti için yıkama hacmi (mm³)." + +#, c-format, boost-format +msgid "Suggestion: Flushing Volume in range [%d, %d]" +msgstr "Öneri: Yıkama Hacmi [%d, %d] aralığında" + +#, c-format, boost-format +msgid "The multiplier should be in range [%.2f, %.2f]." +msgstr "Çarpan [%.2f, %.2f] aralığında olmalıdır." + +msgid "unloaded" +msgstr "boşaltılmış" + +msgid "loaded" +msgstr "yüklenmiş" + +msgid "Filament #" +msgstr "Filament #" + +msgid "From" +msgstr "İtibaren" + +msgid "To" +msgstr "İle" + +msgid "Login" +msgstr "Giriş yap" + +msgid "The configuration package is changed in previous Config Guide" +msgstr "Yapılandırma paketi önceki Yapılandırma Kılavuzu'nda değiştirildi" + +msgid "Configuration package changed" +msgstr "Yapılandırma paketi değiştirildi" + +msgid "Toolbar" +msgstr "Araç Çubuğu" + +msgid "Objects list" +msgstr "Nesne listesi" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "STL/STEP/3MF/OBJ/AMF dosyalarından geometri verilerini içe aktarın" + +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" + +msgid "Copy to clipboard" +msgstr "Panoya kopyala" + +msgid "Paste from clipboard" +msgstr "Panodan yapıştır" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "3Dconnexion cihazları ayarları iletişim kutusunu Göster/Gizle" + +msgid "Show keyboard shortcuts list" +msgstr "Klavye kısayolları listesini göster" + +msgid "Global shortcuts" +msgstr "Genel kısayollar" + +msgid "Rotate View" +msgstr "Görüntüyü döndür" + +msgid "Pan View" +msgstr "Pan Görünümü" + +msgid "Mouse wheel" +msgstr "Fare tekerleği" + +msgid "Zoom View" +msgstr "Zoom Görünümü" + +msgid "Shift+A" +msgstr "Shift+A" + +msgid "Shift+R" +msgstr "Shift+R" + +msgid "" +"Auto orientates selected objects or all objects.If there are selected " +"objects, it just orientates the selected ones.Otherwise, it will orientates " +"all objects in the current disk." +msgstr "" +"Seçilen nesneleri veya tüm nesneleri otomatik olarak yönlendirir. Seçilen " +"nesneler varsa, yalnızca seçilenleri yönlendirir. Aksi takdirde, geçerli " +"diskteki tüm nesneleri yönlendirir." + +msgid "Shift+Tab" +msgstr "Shift+Tab" + +msgid "Collapse/Expand the sidebar" +msgstr "Kenar çubuğunu daralt/genişlet" + +msgid "⌘+Any arrow" +msgstr "⌘+Herhangi bir ok" + +msgid "Movement in camera space" +msgstr "Kamera alanında hareket" + +msgid "⌥+Left mouse button" +msgstr "⌥+Sol fare düğmesi" + +msgid "Select a part" +msgstr "Parça seçin" + +msgid "⌘+Left mouse button" +msgstr "⌘+Sol fare düğmesi" + +msgid "Select multiple objects" +msgstr "Birden fazla nesne seç" + +msgid "Ctrl+Any arrow" +msgstr "Ctrl+Herhangi bir yön tuşu" + +msgid "Alt+Left mouse button" +msgstr "Alt+Sol fare düğmesi" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Sol fare düğmesi" + +msgid "Shift+Left mouse button" +msgstr "Shift+Sol fare düğmesi" + +msgid "Select objects by rectangle" +msgstr "Nesneleri dikdörtgene göre seç" + +msgid "Arrow Up" +msgstr "Yukarı ok" + +msgid "Move selection 10 mm in positive Y direction" +msgstr "Seçimi pozitif Y yönünde 10 mm taşı" + +msgid "Arrow Down" +msgstr "Aşağı ok" + +msgid "Move selection 10 mm in negative Y direction" +msgstr "Seçimi negatif Y yönünde 10 mm taşı" + +msgid "Arrow Left" +msgstr "Sol Yön Tuşu" + +msgid "Move selection 10 mm in negative X direction" +msgstr "Seçimi negatif X yönünde 10 mm taşı" + +msgid "Arrow Right" +msgstr "Sağ Yön Tuşu" + +msgid "Move selection 10 mm in positive X direction" +msgstr "Seçimi pozitif X yönünde 10 mm taşı" + +msgid "Shift+Any arrow" +msgstr "Shift+Herhangi bir ok tuşu" + +msgid "Movement step set to 1 mm" +msgstr "Hareket adımı 1 mm'ye ayarlandı" + +msgid "Esc" +msgstr "Esc" + +msgid "keyboard 1-9: set filament for object/part" +msgstr "klavye 1-9: nesne/parça için filamanı ayarlayın" + +msgid "Camera view - Default" +msgstr "Kamera görünümü - Varsayılan" + +msgid "Camera view - Top" +msgstr "Kamera görünümü - Üst" + +msgid "Camera view - Bottom" +msgstr "Kamera görünümü - Alt" + +msgid "Camera view - Front" +msgstr "Kamera görünümü - Ön" + +msgid "Camera view - Behind" +msgstr "Kamera görünümü - Arka" + +msgid "Camera Angle - Left side" +msgstr "Kamera Açısı - Sol" + +msgid "Camera Angle - Right side" +msgstr "Kamera Açısı - Sağ" + +msgid "Select all objects" +msgstr "Tüm nesneleri seç" + +msgid "Gizmo move" +msgstr "Gizmo hareket" + +msgid "Gizmo scale" +msgstr "Gizmo ölçek" + +msgid "Gizmo rotate" +msgstr "Gizmo döndürme" + +msgid "Gizmo cut" +msgstr "Gizmo kesim" + +msgid "Gizmo Place face on bed" +msgstr "Gizmo Yüzünüzü yatağa yerleştirin" + +msgid "Gizmo SLA support points" +msgstr "Gizmo SLA destek noktaları" + +msgid "Gizmo FDM paint-on seam" +msgstr "Gizmo FDM boyalı dikiş" + +msgid "Swtich between Prepare/Prewview" +msgstr "Hazırlama/Önizleme arasında geçiş yap" + +msgid "Plater" +msgstr "Plakacı" + +msgid "Move: press to snap by 1mm" +msgstr "Hareket Ettir: 1 mm kadar yaslamak için basın" + +msgid "⌘+Mouse wheel" +msgstr "⌘+Fare tekerleği" + +msgid "Support/Color Painting: adjust pen radius" +msgstr "Destek/Renkli Boyama: kalem yarıçapını ayarlayın" + +msgid "⌥+Mouse wheel" +msgstr "⌥+Fare tekerleği" + +msgid "Support/Color Painting: adjust section position" +msgstr "Destek/Renkli Boyama: bölüm konumunu ayarlayın" + +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Fare tekerleği" + +msgid "Alt+Mouse wheel" +msgstr "Alt+Fare tekerleği" + +msgid "Gizmo" +msgstr "Gizmo" + +msgid "Set extruder number for the objects and parts" +msgstr "Nesneler ve parçalar için ekstruder numarasını ayarlayın" + +msgid "Delete objects, parts, modifiers " +msgstr "Nesneleri, parçaları, değiştiricileri silin " + +msgid "Space" +msgstr "Boşluk" + +msgid "Select the object/part and press space to change the name" +msgstr "Nesneyi/parçayı seçin ve adını değiştirmek için boşluk tuşuna basın" + +msgid "Mouse click" +msgstr "Fare tıklaması" + +msgid "Select the object/part and mouse click to change the name" +msgstr "Nesneyi/parçayı seçin ve adını değiştirmek için fareye tıklayın" + +msgid "Objects List" +msgstr "Nesne Listesi" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Dikey kaydırıcı - Etkin başparmağı yukarı hareket ettir" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Dikey kaydırıcı - Etkin başparmağı Aşağı hareket ettir" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Yatay kaydırıcı - Etkin başparmağı sola taşı" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Yatay kaydırıcı - Etkin başparmağı sağa taşı" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Dikey kaydırıcının tek katman modunu açma/kapama" + +msgid "On/Off g-code window" +msgstr "G-kodu penceresini aç/kapat" + +msgid "Move slider 5x faster" +msgstr "Kaydırıcıyı 5 kat daha hızlı hareket ettirin" + +msgid "Shift+Mouse wheel" +msgstr "Shift+Fare tekerleği" + +msgid "Release Note" +msgstr "Sürüm notu" + +#, c-format, boost-format +msgid "version %s update information :" +msgstr "sürüm %s güncelleme bilgileri:" + +msgid "Network plug-in update" +msgstr "Ağ eklentisi güncellemesi" + +msgid "" +"Click OK to update the Network plug-in when Bambu Studio launches next time." +msgstr "" +"Bambu Studio bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek " +"için Tamam'a tıklayın." + +#, c-format, boost-format +msgid "A new Network plug-in(%s) available, Do you want to install it?" +msgstr "Yeni bir Ağ eklentisi(%s) mevcut, Yüklemek istiyor musunuz?" + +msgid "New version of Bambu Studio" +msgstr "Bambu Studio'nun yeni versiyonu" + +msgid "Don't remind me of this version again" +msgstr "Bana bir daha bu versiyonu hatırlatma" + +msgid "LAN Connection Failed (Sending print file)" +msgstr "LAN Bağlantısı Başarısız (Yazdırma dosyası gönderiliyor)" + +msgid "" +"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +msgstr "" +"Adım 1, lütfen Bambu Studio ile yazıcınızın aynı LAN'da olduğunu doğrulayın." + +msgid "" +"Step 2, if the IP and Access Code below are different from the actual values " +"on your printer, please correct them." +msgstr "" +"Adım 2, aşağıdaki IP ve Erişim Kodu yazıcınızdaki gerçek değerlerden " +"farklıysa lütfen bunları düzeltin." + +msgid "IP" +msgstr "IP" + +msgid "Access Code" +msgstr "Giriş kodu" + +msgid "Where to find your printer's IP and Access Code?" +msgstr "Yazıcınızın IP'sini ve Erişim Kodunu nerede bulabilirsiniz?" + +msgid "Error: IP or Access Code are not correct" +msgstr "Hata: IP veya Erişim Kodu doğru değil" + +msgid "Model:" +msgstr "Model:" + +msgid "Serial:" +msgstr "Seri:" + +msgid "Version:" +msgstr "Sürüm:" + +msgid "Update firmware" +msgstr "Ürün yazılımını güncelle" + +msgid "Printing" +msgstr "Baskı" + +msgid "Idle" +msgstr "Boşta" + +msgid "Latest version" +msgstr "Son sürüm" + +msgid "Updating" +msgstr "Güncelleniyor" + +msgid "Updating failed" +msgstr "Güncelleme başarısız oldu" + +msgid "Updating successful" +msgstr "Güncelleme başarılı" + +msgid "" +"Are you sure you want to update? This will take about 10 minutes. Do not " +"turn off the power while the printer is updating." +msgstr "" +"Güncellemek istediğinizden emin misiniz? Bu yaklaşık 10 dakika sürecektir. " +"Yazıcı güncellenirken gücü kapatmayın." + +msgid "" +"An important update was detected and needs to be run before printing can " +"continue. Do you want to update now? You can also update later from 'Upgrade " +"firmware'." +msgstr "" +"Önemli bir güncelleme algılandı ve yazdırmanın devam edebilmesi için " +"çalıştırılması gerekiyor. Şimdi güncellemek istiyor musunuz? Daha sonra " +"'Firmware'i yükselt' seçeneğinden de güncelleme yapabilirsiniz." + +msgid "" +"The firmware version is abnormal. Repairing and updating are required before " +"printing. Do you want to update now? You can also update later on printer or " +"update next time starting the studio." +msgstr "" +"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme " +"yapılması gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra " +"yazıcıda güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda " +"güncelleyebilirsiniz." + +msgid "Extension Board" +msgstr "Uzatma Kartı" + +msgid "Saving objects into the 3mf failed." +msgstr "Nesneleri 3mf'ye kaydetme işlemi başarısız oldu." + +msgid "Only Windows 10 is supported." +msgstr "Yalnızca Windows 10 desteklenmektedir." + +msgid "Failed to initialize the WinRT library." +msgstr "WinRT kitaplığı başlatılamadı." + +msgid "Exporting objects" +msgstr "Nesneleri dışa aktarma" + +msgid "Failed loading objects." +msgstr "Nesneler yüklenemedi." + +msgid "Repairing object by Windows service" +msgstr "Nesneyi Windows hizmetiyle onarma" + +msgid "Repair failed." +msgstr "Onarım başarısız oldu." + +msgid "Loading repaired objects" +msgstr "Onarılan nesnelerin yüklenmesi" + +msgid "Exporting 3mf file failed" +msgstr "3mf dosyasını dışa aktarma işlemi başarısız oldu" + +msgid "Import 3mf file failed" +msgstr "3mf dosyasını içe aktarma başarısız oldu" + +msgid "Repaired 3mf file does not contain any object" +msgstr "Onarılan 3mf dosyası herhangi bir nesne içermiyor" + +msgid "Repaired 3mf file contains more than one object" +msgstr "Onarılan 3mf dosyası birden fazla nesne içeriyor" + +msgid "Repaired 3mf file does not contain any volume" +msgstr "Onarılan 3mf dosyası herhangi bir birim içermiyor" + +msgid "Repaired 3mf file contains more than one volume" +msgstr "Onarılan 3mf dosyası birden fazla birim içeriyor" + +msgid "Repair finished" +msgstr "Onarım tamamlandı" + +msgid "Repair canceled" +msgstr "Onarım iptal edildi" + +#, boost-format +msgid "Copying of file %1% to %2% failed: %3%" +msgstr "%1% dosyasının %2% dosyasına kopyalanması başarısız oldu: %3%" + +msgid "Need to check the unsaved changes before configuration updates." +msgstr "" +"Yapılandırma güncellemelerinden önce kaydedilmemiş değişiklikleri kontrol " +"etmeniz gerekir." + +msgid "Configuration package updated to " +msgstr "Yapılandırma paketi şu şekilde güncellendi: " + +msgid "Open G-code file:" +msgstr "G kodu dosyasını açın:" + +msgid "" +"One object has empty initial layer and can't be printed. Please Cut the " +"bottom or enable supports." +msgstr "" +"Bir nesnenin başlangıç katmanı boş ve yazdırılamıyor. Lütfen alt kısmı kesin " +"veya destekleri etkinleştirin." + +#, boost-format +msgid "Object can't be printed for empty layer between %1% and %2%." +msgstr "%1% ile %2% arasındaki boş katman için nesne yazdırılamıyor." + +#, boost-format +msgid "Object: %1%" +msgstr "Nesne: %1%" + +msgid "" +"Maybe parts of the object at these height are too thin, or the object has " +"faulty mesh" +msgstr "" +"Belki nesnenin bu yükseklikteki bazı kısımları çok incedir veya nesnenin ağı " +"hatalı olabilir" + +msgid "No object can be printed. Maybe too small" +msgstr "Hiçbir nesne yazdırılamaz. Belki çok küçük" + +msgid "" +"Failed to generate gcode for invalid custom G-code.\n" +"\n" +msgstr "" +"Geçersiz özel G kodu için gcode oluşturulamadı.\n" +"\n" + +msgid "Please check the custom G-code or use the default custom G-code." +msgstr "" +"Lütfen özel G kodunu kontrol edin veya varsayılan özel G kodunu kullanın." + +#, boost-format +msgid "Generating G-code: layer %1%" +msgstr "G kodu oluşturuluyor: katman %1%" + +msgid "Inner wall" +msgstr "İç duvar" + +msgid "Outer wall" +msgstr "Dış duvar" + +msgid "Overhang wall" +msgstr "Çıkıntı duvarı" + +msgid "Sparse infill" +msgstr "Dolgu" + +msgid "Internal solid infill" +msgstr "İç katı dolgu" + +msgid "Top surface" +msgstr "Üst Katman" + +msgid "Bottom surface" +msgstr "Alt yüzey" + +msgid "Internal Bridge" +msgstr "İç Köprü" + +msgid "Gap infill" +msgstr "Boşluk doldurma" + +msgid "Skirt" +msgstr "Etek" + +msgid "Support interface" +msgstr "Destek arayüzü" + +msgid "Support transition" +msgstr "Destek geçişi" + +msgid "Multiple" +msgstr "Çoklu" + +#, boost-format +msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " +msgstr "%1% çizgi genişliği hesaplanamadı. \"%2%\" değeri alınamıyor " + +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + +msgid "undefined error" +msgstr "bilinmeyen hata" + +msgid "too many files" +msgstr "çok fazla dosya" + +msgid "file too large" +msgstr "dosya çok büyük" + +msgid "unsupported method" +msgstr "desteklenmeyen yöntem" + +msgid "unsupported encryption" +msgstr "desteklenmeyen şifreleme" + +msgid "unsupported feature" +msgstr "desteklenmeyen özellik" + +msgid "failed finding central directory" +msgstr "merkezi dizin bulunamadı" + +msgid "not a ZIP archive" +msgstr "dosya ZIP arşivi değil" + +msgid "invalid header or corrupted" +msgstr "geçersiz başlık veya bozuk" + +msgid "unsupported multidisk" +msgstr "desteklenmeyen çoklu disk" + +msgid "decompression failed" +msgstr "dekompresyon başarısız oldu" + +msgid "compression failed" +msgstr "sıkıştırma başarısız oldu" + +msgid "unexpected decompressed size" +msgstr "beklenmedik sıkıştırılmış boyut" + +msgid "CRC check failed" +msgstr "CRC kontrolü başarısız oldu" + +msgid "unsupported central directory size" +msgstr "desteklenmeyen merkezi dizin boyutu" + +msgid "allocation failed" +msgstr "tahsis başarısız oldu" + +msgid "file open failed" +msgstr "dosya açılamadı" + +msgid "file create failed" +msgstr "dosya oluşturma başarısız oldu" + +msgid "file write failed" +msgstr "dosya yazımı başarısız oldu" + +msgid "file read failed" +msgstr "dosya okuma başarısız oldu" + +msgid "file close failed" +msgstr "dosya kapatılamadı" + +msgid "file seek failed" +msgstr "dosya arama başarısız oldu" + +msgid "file stat failed" +msgstr "dosya istatistikleri başarısız" + +msgid "invalid parameter" +msgstr "geçersiz parametre" + +msgid "invalid filename" +msgstr "geçersiz dosya adı" + +msgid "buffer too small" +msgstr "arabellek çok küçük" + +msgid "internal error" +msgstr "dahili hata" + +msgid "file not found" +msgstr "dosya bulunamadı" + +msgid "archive too large" +msgstr "arşiv çok büyük" + +msgid "validation failed" +msgstr "doğrulama başarısız" + +msgid "write callback failed" +msgstr "geri arama yazma başarısız oldu" + +#, boost-format +msgid "" +"%1% is too close to exclusion area, there may be collisions when printing." +msgstr "" +"%1%, hariç tutma alanına çok yakın; yazdırma sırasında çarpışmalar meydana " +"gelebilir." + +#, boost-format +msgid "%1% is too close to others, and collisions may be caused." +msgstr "%1% diğerlerine çok yakın ve çarpışmalara neden olabilir." + +#, boost-format +msgid "%1% is too tall, and collisions will be caused." +msgstr "%1% çok uzun ve çarpışmalara neden olacak." + +msgid " is too close to others, there may be collisions when printing." +msgstr "" +" başkalarına çok yakınsa, yazdırma sırasında çarpışmalar meydana gelebilir." + +msgid " is too close to exclusion area, there may be collisions when printing." +msgstr "" +" Hariç tutma alanına çok yakın olduğundan yazdırma sırasında çarpışmalar " +"meydana gelebilir." + +msgid "Prime Tower" +msgstr "Başbakan Kulesi" + +msgid " is too close to others, and collisions may be caused.\n" +msgstr " başkalarına çok yakın olduğundan çarpışmalara neden olabilir.\n" + +msgid " is too close to exclusion area, and collisions will be caused.\n" +msgstr " dışlama alanına çok yakın ve çarpışmalara neden olacak.\n" + +msgid "" +"Can not print multiple filaments which have large difference of temperature " +"together. Otherwise, the extruder and nozzle may be blocked or damaged " +"during printing" +msgstr "" +"Birlikte büyük sıcaklık farkına sahip birden fazla filament basılamaz. Aksi " +"takdirde baskı sırasında ekstruder ve nozül tıkanabilir veya hasar görebilir" + +msgid "No extrusions under current settings." +msgstr "Mevcut ayarlarda ekstrüzyon yok." + +msgid "" +"Smooth mode of timelapse is not supported when \"by object\" sequence is " +"enabled." +msgstr "" +"\"Nesneye göre\" dizisi etkinleştirildiğinde, hızlandırılmış çekimin yumuşak " +"modu desteklenmez." + +msgid "" +"Please select \"By object\" print sequence to print multiple objects in " +"spiral vase mode." +msgstr "" +"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye göre" +"\" yazdırma sırasını seçin." + +msgid "" +"The spiral vase mode does not work when an object contains more than one " +"materials." +msgstr "Bir nesne birden fazla malzeme içerdiğinde spiral vazo modu çalışmaz." + +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + +msgid "The prime tower is not supported in \"By object\" print." +msgstr "Prime tower, \"Nesneye göre\" yazdırmada desteklenmez." + +msgid "" +"The prime tower is not supported when adaptive layer height is on. It " +"requires that all objects have the same layer height." +msgstr "" +"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm " +"nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir." + +msgid "The prime tower requires \"support gap\" to be multiple of layer height" +msgstr "" +"Ana kule \"destek boşluğunun\" katman yüksekliğinin katı olmasını gerektirir" + +msgid "The prime tower requires that all objects have the same layer heights" +msgstr "" +"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını " +"gerektirir" + +msgid "" +"The prime tower requires that all objects are printed over the same number " +"of raft layers" +msgstr "" +"Ana kule, tüm nesnelerin aynı sayıda sal katmanı üzerine yazdırılmasını " +"gerektirir" + +msgid "" +"The prime tower requires that all objects are sliced with the same layer " +"heights." +msgstr "" +"Prime tower, tüm nesnelerin aynı katman yüksekliğinde dilimlenmesini " +"gerektirir." + +msgid "" +"The prime tower is only supported if all objects have the same variable " +"layer height" +msgstr "" +"Prime tower yalnızca tüm nesnelerin aynı değişken katman yüksekliğine sahip " +"olması durumunda desteklenir" + +msgid "Too small line width" +msgstr "Çizgi genişliği çok küçük" + +msgid "Too large line width" +msgstr "Çok büyük çizgi genişliği" + +msgid "" +"The prime tower requires that support has the same layer height with object." +msgstr "" +"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip " +"olmalıdır." + +msgid "" +"Organic support tree tip diameter must not be smaller than support material " +"extrusion width." +msgstr "" +"Organik destek ağacı uç çapı, destek malzemesi ekstrüzyon genişliğinden daha " +"küçük olamaz." + +msgid "" +"Organic support branch diameter must not be smaller than 2x support material " +"extrusion width." +msgstr "" +"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 " +"katından daha küçük olamaz." + +msgid "" +"Organic support branch diameter must not be smaller than support tree tip " +"diameter." +msgstr "Organik destek dalı çapı, destek ağacı uç çapından küçük olamaz." + +msgid "" +"Support enforcers are used but support is not enabled. Please enable support." +msgstr "" +"Destek uygulayıcıları kullanılıyor ancak destek etkinleştirilmiyor. Lütfen " +"desteği etkinleştirin." + +msgid "Layer height cannot exceed nozzle diameter" +msgstr "Katman yüksekliği nozül çapını aşamaz" + +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 "" +"Göreceli ekstrüder adreslemesi, kayan nokta doğruluğunun kaybını önlemek " +"için her katmandaki ekstrüder konumunun sıfırlanmasını gerektirir. " +"Layer_gcode'a \"G92 E0\" ekleyin." + +msgid "" +"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " +"absolute extruder addressing." +msgstr "" +"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder " +"adreslemeyle uyumsuzdu." + +msgid "" +"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " +"extruder addressing." +msgstr "" +"Layer_gcode'da mutlak ekstruder adreslemeyle uyumlu olmayan \"G92 E0\" " +"bulundu." + +#, c-format, boost-format +msgid "Plate %d: %s does not support filament %s" +msgstr "Plaka %d: %s, %s filamentini desteklemiyor" + +msgid "Generating skirt & brim" +msgstr "Etek ve kenar oluşturma" + +msgid "Exporting G-code" +msgstr "G kodu dışa aktarılıyor" + +msgid "Generating G-code" +msgstr "G kodu oluşturuluyor" + +msgid "Failed processing of the filename_format template." +msgstr "Dosyaadı_format şablonunun işlenmesi başarısız oldu." + +msgid "Printable area" +msgstr "Yazdırılabilir alan" + +msgid "Bed exclude area" +msgstr "Yatak hariç alan" + +msgid "" +"Unprintable area in XY plane. For example, X1 Series printers use the front " +"left corner to cut filament during filament change. The area is expressed as " +"polygon by points in following format: \"XxY, XxY, ...\"" +msgstr "" +"XY düzleminde yazdırılamayan alan. Örneğin X1 Serisi yazıcılar, filament " +"değişimi sırasında filamanı kesmek için sol ön köşeyi kullanır. Alan şu " +"formatta noktalarla çokgen olarak ifade edilir: \"XxY, XxY, ...\"" + +msgid "Bed custom texture" +msgstr "Özel plaka dokusu" + +msgid "Bed custom model" +msgstr "Özel plaka modeli" + +msgid "Elephant foot compensation" +msgstr "Fil ayağı telafi oranı" + +msgid "" +"Shrink the initial layer on build plate to compensate for elephant foot " +"effect" +msgstr "" +"Fil ayağı etkisini telafi etmek için baskı plakasındaki ilk katmanı küçültün" + +msgid "" +"Slicing height for each layer. Smaller layer height means more accurate and " +"more printing time" +msgstr "" +"Her katman için dilimleme yüksekliği. Daha küçük katman yüksekliği, daha " +"doğru ve daha fazla baskı süresi anlamına gelir" + +msgid "Printable height" +msgstr "Yazdırılabilir yükseklik" + +msgid "Maximum printable height which is limited by mechanism of printer" +msgstr "" +"Yazıcının mekanizması tarafından sınırlanan maksimum yazdırılabilir yükseklik" + +msgid "Printer preset names" +msgstr "Yazıcı ön ayar adları" + +msgid "Hostname, IP or URL" +msgstr "Ana bilgisayar adı, IP veya URL" + +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the hostname, IP address or URL of the printer host instance. Print host " +"behind HAProxy with basic auth enabled can be accessed by putting the user " +"name and password into the URL in the following format: https://username:" +"password@your-octopi-address/" +msgstr "" +"Slic3r, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " +"URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " +"arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " +"biçimdeki URL'ye girilmesiyle erişilebilir: https://username:password@your-" +"octopi-address/" + +msgid "Device UI" +msgstr "Cihaz kullanıcı arayüzü" + +msgid "" +"Specify the URL of your device user interface if it's not same as print_host" +msgstr "" +"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini " +"belirtin" + +msgid "API Key / Password" +msgstr "API Anahtarı / Şifre" + +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the API Key or the password required for authentication." +msgstr "" +"Slic3r, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." + +msgid "Name of the printer" +msgstr "Yazıcı adı" + +msgid "HTTPS CA File" +msgstr "HTTPS CA Dosyası" + +msgid "" +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." +msgstr "" +"HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika " +"dosyası belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu " +"kullanılır." + +msgid "User" +msgstr "Kullanıcı" + +msgid "Password" +msgstr "Şifre" + +msgid "Ignore HTTPS certificate revocation checks" +msgstr "HTTPS sertifikası iptal kontrollerini yoksay" + +msgid "" +"Ignore HTTPS certificate revocation checks in case of missing or offline " +"distribution points. One may want to enable this option for self signed " +"certificates if connection fails." +msgstr "" +"Eksik veya çevrimdışı dağıtım noktaları olması durumunda HTTPS sertifikası " +"iptal kontrollerini göz ardı edin. Bağlantı başarısız olursa, kendinden " +"imzalı sertifikalar için bu seçeneğin etkinleştirilmesi istenebilir." + +msgid "Names of presets related to the physical printer" +msgstr "Fiziksel yazıcıyla ilgili ön ayarların adları" + +msgid "Authorization Type" +msgstr "Yetki Türü" + +msgid "API key" +msgstr "API anahtarı" + +msgid "HTTP digest" +msgstr "HTTP özeti" + +msgid "Avoid crossing wall" +msgstr "Duvar geçişinden kaçın" + +msgid "Detour and avoid to travel across wall which may cause blob on surface" +msgstr "Yüzeyde lekelenmeye neden olabilecek duvar boyunca ilerlemekten kaçın" + +msgid "Avoid crossing wall - Max detour length" +msgstr "Duvarı geçmekten kaçının - Maksimum servis yolu uzunluğu" + +msgid "" +"Maximum detour distance for avoiding crossing wall. Don't detour if the " +"detour distance is large than this value. Detour length could be specified " +"either as an absolute value or as percentage (for example 50%) of a direct " +"travel path. Zero to disable" +msgstr "" +"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma " +"mesafesi bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer " +"olarak veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak " +"belirtilebilir. Devre dışı bırakmak için sıfır" + +msgid "mm or %" +msgstr "mm veya %" + +msgid "Other layers" +msgstr "Diğer katmanlar" + +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Cool Plate" +msgstr "" +"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " +"Cool Plate üzerine yazdırmayı desteklemediği anlamına gelir" + +msgid "°C" +msgstr "°C" + +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Engineering Plate" +msgstr "" +"İlk katman dışındaki katmanlar için yatak sıcaklığı. Değer 0, filamentin " +"Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" + +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the High Temp Plate" +msgstr "" +"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " +"Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" + +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" +"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " +"Dokulu PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" + +msgid "Initial layer" +msgstr "Başlangıç katmanı" + +msgid "Initial layer bed temperature" +msgstr "İlk katman yatak sıcaklığı" + +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Cool Plate" +msgstr "" +"İlk katmanın yatak sıcaklığı. 0 değeri, filamentin Cool Plate üzerine " +"yazdırmayı desteklemediği anlamına gelir" + +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Engineering Plate" +msgstr "" +"İlk katmanın yatak sıcaklığı. Değer 0, filamentin Mühendislik Plakasına " +"yazdırmayı desteklemediği anlamına gelir" + +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the High Temp Plate" +msgstr "" +"İlk katmanın yatak sıcaklığı. 0 değeri, filamentin Yüksek Sıcaklık Plakasına " +"yazdırmayı desteklemediği anlamına gelir" + +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" +"İlk katmanın yatak sıcaklığı. 0 Değeri, filamentin Dokulu PEI Plaka üzerine " +"yazdırmayı desteklemediği anlamına gelir" + +msgid "Bed types supported by the printer" +msgstr "Yazıcının desteklediği yatak türleri" + +msgid "Cool Plate" +msgstr "Soğuk Plaka" + +msgid "Engineering Plate" +msgstr "Mühendislik Plakası" + +msgid "First layer print sequence" +msgstr "İlk katman yazdırma sırası" + +msgid "This G-code is inserted at every layer change before lifting z" +msgstr "Bu G kodu, z'yi kaldırmadan önce her katman değişikliğinde eklenir" + +msgid "Bottom shell layers" +msgstr "Alt katmanlar" + +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 "" +"Bu, alt yüzey katmanı da dahil olmak üzere alt kabuğun katı katmanlarının " +"sayısıdır. Bu değerle hesaplanan kalınlık alt kabuk kalınlığından ince " +"olduğunda alt kabuk katmanları artırılacaktır" + +msgid "Bottom shell thickness" +msgstr "Alt katman kalınlığı" + +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 shell when layer height is small. 0 means that this setting " +"is disabled and thickness of bottom shell is absolutely determained by " +"bottom shell layers" +msgstr "" +"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " +"ise dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " +"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " +"ayarın devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk " +"katmanları tarafından belirlendiği anlamına gelir" + +msgid "Force cooling for overhang and bridge" +msgstr "Çıkıntı ve köprüler için soğutmayı zorla" + +msgid "" +"Enable this option to optimize part cooling fan speed for overhang and " +"bridge to get better cooling" +msgstr "" +"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma " +"fanı hızını optimize etmek amacıyla bu seçeneği etkinleştirin" + +msgid "Fan speed for overhang" +msgstr "Çıkıntılar için fan hızı" + +msgid "" +"Force part cooling fan to be this speed when printing bridge or overhang " +"wall which has large overhang degree. Forcing cooling for overhang and " +"bridge can get better quality for these part" +msgstr "" +"Çıkıntı derecesi büyük olan köprü veya çıkıntılı duvara baskı yaparken parça " +"soğutma fanını bu hızda olmaya zorlayın. Çıkıntı ve köprü için soğutmayı " +"zorlamak, bu parça için daha iyi kalite elde edilmesini sağlayabilir" + +msgid "Cooling overhang threshold" +msgstr "Çıkıntı soğutması" + +#, c-format +msgid "" +"Force cooling fan to be specific speed when overhang degree of printed part " +"exceeds this value. Expressed as percentage which indicides how much width " +"of the line without support from lower layer. 0% means forcing cooling for " +"all outer wall no matter how much overhang degree" +msgstr "" +"Yazdırılan parçanın çıkıntı derecesi bu değeri aştığında soğutma fanını " +"belirli bir hıza zorlar. Alt katmandan destek almadan çizginin ne kadar " +"genişlediğini gösteren yüzde olarak ifade edilir. 0, çıkıntı derecesi ne " +"kadar olursa olsun tüm dış duvar için soğutmayı zorlamak anlamına gelir" + +msgid "Bridge infill direction" +msgstr "Köprü dolgu açısı" + +msgid "" +"Bridging angle override. If left to zero, the bridging angle will be " +"calculated automatically. Otherwise the provided angle will be used for " +"external bridges. Use 180°for zero angle." +msgstr "" +"Köprüleme açısı geçersiz kılma. Sıfıra bırakılırsa köprüleme açısı otomatik " +"olarak hesaplanacaktır. Aksi halde dış köprüler için sağlanan açı " +"kullanılacaktır. Sıfır açı için 180°'yi kullanın." + +msgid "Bridge density" +msgstr "Köprü dolgu yoğunluğu" + +msgid "Density of external bridges. 100% means solid bridge. Default is 100%." +msgstr "" +"Dış köprülerin yoğunluğu. %100 sağlam köprü anlamına gelir. Varsayılan " +"%100'dür." + +msgid "Bridge flow" +msgstr "Köprülerde akış oranı" + +msgid "" +"Decrease this value slightly(for example 0.9) to reduce the amount of " +"material for bridge, to improve sag" +msgstr "" +"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu " +"değeri biraz azaltın (örneğin 0,9)" + +msgid "Top surface flow ratio" +msgstr "Üst katı dolgu akış oranı" + +msgid "" +"This factor affects the amount of material for top solid infill. You can " +"decrease it slightly to have smooth surface finish" +msgstr "" +"Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir yüzey " +"elde etmek için biraz azaltabilirsiniz" + +msgid "Bottom surface flow ratio" +msgstr "Alt katı dolgu akış oranı" + +msgid "This factor affects the amount of material for bottom solid infill" +msgstr "Bu faktör alt katı dolgu için malzeme miktarını etkiler" + +msgid "Precise wall(experimental)" +msgstr "Hassas duvar (deneysel)" + +msgid "" +"Improve shell precision by adjusting outer wall spacing. This also improves " +"layer consistency." +msgstr "" +"Dış duvar aralığını ayarlayarak kabuk hassasiyetini artırın. Bu aynı zamanda " +"katman tutarlılığını da artırır." + +msgid "Only one wall on top surfaces" +msgstr "Üst yüzeylerde yalnızca bir duvar" + +msgid "" +"Use only one wall on flat top surface, to give more space to the top infill " +"pattern" +msgstr "" +"Üst dolgu desenine daha fazla yer açmak için düz üst yüzeyde yalnızca bir " +"duvar kullanın" + +msgid "One wall threshold" +msgstr "Tek duvar eşiği" + +#, c-format, 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 is you have some thin features " +"on the next layer, like letters. Set this setting to 0 to remove these " +"artifacts." +msgstr "" +"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 is you have some thin features " +"on the next layer, like letters. Set this setting to 0 to remove these " +"artifacts." + +msgid "Only one wall on first layer" +msgstr "İlk katmanda yalnızca bir duvar" + +msgid "" +"Use only one wall on first layer, to give more space to the bottom infill " +"pattern" +msgstr "" +"Alt dolgu desenine daha fazla yer açmak için ilk katmanda yalnızca bir duvar " +"kullanın" + +msgid "Extra perimeters on overhangs" +msgstr "Çıkıntılarda ekstra çevre (perimeter)" + +msgid "" +"Create additional perimeter paths over steep overhangs and areas where " +"bridges cannot be anchored. " +msgstr "" +"Dik çıkıntılar ve köprülerin sabitlenemediği alanlar üzerinde ek çevre " +"yolları (perimeter) oluşturun. " + +msgid "Classic mode" +msgstr "Klasik mod" + +msgid "Enable this option to use classic mode" +msgstr "Klasik modu kullanmak için bu seçeneği etkinleştirin" + +msgid "Slow down for overhang" +msgstr "Çıkıntılarda yavaşla" + +msgid "Enable this option to slow printing down for different overhang degree" +msgstr "" +"Farklı sarkma derecelerinde yazdırmayı yavaşlatmak için bu seçeneği " +"etkinleştirin" + +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + +msgid "mm/s or %" +msgstr "mm/s veya %" + +msgid "External" +msgstr "Harici" + +msgid "Speed of bridge and completely overhang wall" +msgstr "Köprü hızı ve tamamen sarkan duvar" + +msgid "mm/s" +msgstr "mm/s" + +msgid "Internal" +msgstr "Dahili" + +msgid "" +"Speed of internal bridge. If the value is expressed as a percentage, it will " +"be calculated based on the bridge_speed. Default value is 150%." +msgstr "" +"Dahili köprünün hızı. Değer yüzde olarak ifade edilirse köprü_hızına göre " +"hesaplanacaktır. Varsayılan değer %150'dir." + +msgid "Brim width" +msgstr "Kenar genişliği" + +msgid "Distance from model to the outermost brim line" +msgstr "Modelden en dış kenar çizgisine kadar olan mesafe" + +msgid "Brim type" +msgstr "Kenar tipi" + +msgid "" +"This controls the generation of the brim at outer and/or inner side of " +"models. Auto means the brim width is analysed and calculated automatically." +msgstr "" +"Bu, modellerin dış ve/veya iç kısmındaki Kenar oluşumunu kontrol eder. " +"Otomatik, kenar genişliğinin otomatik olarak analiz edilip hesaplandığı " +"anlamına gelir." + +msgid "Brim-object gap" +msgstr "Kenar-nesne boşluğu" + +msgid "" +"A gap between innermost brim line and object can make brim be removed more " +"easily" +msgstr "" +"En içteki kenar çizgisi ile nesne arasındaki boşluk, kenarlığın daha kolay " +"çıkarılmasını sağlayabilir" + +msgid "Brim ears" +msgstr "Kenar kulakları" + +msgid "Only draw brim over the sharp edges of the model." +msgstr "Kenarları yalnızca modelin keskin kenarlarına çizin." + +msgid "Brim ear max angle" +msgstr "Kenar kulak maksimum açısı" + +msgid "" +"Maximum angle to let a brim ear appear. \n" +"If set to 0, no brim will be created. \n" +"If set to ~180, brim will be created on everything but straight sections." +msgstr "" +"Kenarlı bir kulağın görünmesine izin veren maksimum açı.\n" +"0'a ayarlanırsa kenarlık oluşturulmaz.\n" +"~180'e ayarlanırsa, düz bölümler dışındaki her yerde kenar oluşturulacaktır." + +msgid "Brim ear detection radius" +msgstr "Kenar kulak algılama yarıçapı" + +msgid "" +"The geometry will be decimated before dectecting sharp angles. This " +"parameter indicates the minimum length of the deviation for the decimation.\n" +"0 to deactivate" +msgstr "" +"Keskin açılar tespit edilmeden önce geometrinin büyük bir kısmı yok " +"edilecektir. Bu parametre, ondalık sapmanın minimum uzunluğunu gösterir.\n" +"Devre dışı bırakmak için 0" + +msgid "Compatible machine" +msgstr "Uyumlu makine" + +msgid "upward compatible machine" +msgstr "yukarı doğru uyumlu makine" + +msgid "Compatible machine condition" +msgstr "Uyumlu yazıcıdurumu" + +msgid "Compatible process profiles" +msgstr "Uyumlu süreç profilleri" + +msgid "Compatible process profiles condition" +msgstr "Uyumlu süreç profillerinin durumu" + +msgid "Print sequence, layer by layer or object by object" +msgstr "Yazdırma sırası, katman katman veya nesne nesne" + +msgid "By layer" +msgstr "Katmana göre" + +msgid "By object" +msgstr "Nesneye göre" + +msgid "Slow printing down for better layer cooling" +msgstr "Daha iyi katman soğutması için baskıyı yavaşlat" + +msgid "" +"Enable this option to slow printing speed down to make the final layer time " +"not shorter than the layer time threshold in \"Max fan speed threshold\", so " +"that layer can be cooled for longer time. This can improve the cooling " +"quality for needle and small details" +msgstr "" +"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi " +"eşiğinden kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için " +"bu seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, " +"iğne ve küçük detaylar için soğutma kalitesini artırabilir" + +msgid "Normal printing" +msgstr "Normal Baskı" + +msgid "" +"The default acceleration of both normal printing and travel except initial " +"layer" +msgstr "" +"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan " +"ivmesi" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "Default filament profile" +msgstr "Varsayılan filament profili" + +msgid "Default filament profile when switch to this machine profile" +msgstr "Bu yazıcıprofiline geçildiğinde varsayılan filament profili" + +msgid "Default process profile" +msgstr "Varsayılan süreç profili" + +msgid "Default process profile when switch to this machine profile" +msgstr "Bu yazıcıprofiline geçildiğinde varsayılan işlem profili" + +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "Fan hızı" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + +msgid "No cooling for the first" +msgstr "Soğutmayı devre dışı bırak" + +msgid "" +"Close all cooling fan for the first certain layers. Cooling fan of the first " +"layer used to be closed to get better build plate adhesion" +msgstr "" +"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı " +"plakası yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" + +msgid "layers" +msgstr "katmanlar" + +msgid "Don't support bridges" +msgstr "Köprülerde destek olmasın" + +msgid "" +"Don't support the whole bridge area which make support very large. Bridge " +"usually can be printing directly without support if not very long" +msgstr "" +"Desteği çok büyük yapan tüm köprü alanını desteklemeyin. Bridge genellikle " +"çok uzun olmasa da destek olmadan doğrudan yazdırılabilir" + +msgid "Thick bridges" +msgstr "Kalın köprüler" + +msgid "" +"If enabled, bridges are more reliable, can bridge longer distances, but may " +"look worse. If disabled, bridges look better but are reliable just for " +"shorter bridged distances." +msgstr "" +"Etkinleştirilirse köprüler daha güvenilir olur, daha uzun mesafeler arasında " +"köprü kurabilir ancak daha kötü görünebilir. Devre dışı bırakıldığında " +"köprüler daha iyi görünür ancak yalnızca daha kısa köprü mesafeleri için " +"güvenilirdir." + +msgid "Max bridge length" +msgstr "Maksimum köprü uzunluğu" + +msgid "" +"Max 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 "" +"Desteğe ihtiyaç duymayan maksimum köprü uzunluğu. Tüm köprülerin " +"desteklenmesini istiyorsanız bunu 0'a, hiçbir köprünün desteklenmesini " +"istemiyorsanız çok büyük bir değere ayarlayın." + +msgid "End G-code" +msgstr "Bitiş G kodu" + +msgid "End G-code when finish the whole printing" +msgstr "Tüm yazdırmayı tamamladığında çalışacak olan G Kodu" + +msgid "End G-code when finish the printing of this filament" +msgstr "Bu filament ile baskı bittiğinde çalışacak G kodu" + +msgid "Ensure vertical shell thickness" +msgstr "Dikey kabuk kalınlığını onayla" + +msgid "" +"Add solid infill near sloping surfaces to guarantee the vertical shell " +"thickness (top+bottom solid layers)" +msgstr "" +"Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına katı " +"dolgu ekleyin (üst + alt katı katmanlar)" + +msgid "Top surface pattern" +msgstr "Üst katman deseni" + +msgid "Line pattern of top surface infill" +msgstr "Üst yüzey dolgusunun çizgi deseni" + +msgid "Concentric" +msgstr "Konsantrik" + +msgid "Rectilinear" +msgstr "Doğrusal" + +msgid "Monotonic" +msgstr "Monotonic" + +msgid "Monotonic line" +msgstr "Monotonik çizgi" + +msgid "Aligned Rectilinear" +msgstr "Hizalanmış Doğrusal" + +msgid "Hilbert Curve" +msgstr "Hilbert Eğrisi" + +msgid "Archimedean Chords" +msgstr "Arşimet Akorları" + +msgid "Octagram Spiral" +msgstr "Sekizgen Spiral" + +msgid "Bottom surface pattern" +msgstr "Alt katman deseni" + +msgid "Line pattern of bottom surface infill, not bridge infill" +msgstr "Köprü dolgusu değil, alt yüzey dolgusunun çizgi deseni" + +msgid "Internal solid infill pattern" +msgstr "İç dolgu deseni" + +msgid "" +"Line pattern of internal solid infill. if the detect nattow internal solid " +"infill be enabled, the concentric pattern will be used for the small area." +msgstr "" +"İç katı dolgunun çizgi deseni. doğal iç katı dolguyu tespit etme " +"etkinleştirilirse, küçük alan için eşmerkezli desen kullanılacaktır." + +msgid "" +"Line width of outer wall. If expressed as a %, it will be computed over the " +"nozzle diameter." +msgstr "" +"Dış duvarın çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " +"hesaplanacaktır." + +msgid "" +"Speed of outer wall which is outermost and visible. It's used to be slower " +"than inner wall speed to get better quality." +msgstr "" +"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek " +"için iç duvar hızından daha yavaş olması kullanılır." + +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." + +msgid "Small perimeters threshold" +msgstr "Küçük çevre (perimeter) eşiği" + +msgid "" +"This sets the threshold for small perimeter length. Default threshold is 0mm" +msgstr "Bu, küçük çevre uzunluğu için eşiği belirler. Varsayılan eşik 0 mm'dir" + +msgid "Order of inner wall/outer wall/infil" +msgstr "İç duvar/dış duvar/dolgu sırası" + +msgid "Print sequence of inner wall, outer wall and infill. " +msgstr "İç duvar, dış duvar ve dolgunun yazdırma sırası. " + +msgid "inner/outer/infill" +msgstr "iç/dış/dolgu" + +msgid "outer/inner/infill" +msgstr "dış/iç/dolgu" + +msgid "infill/inner/outer" +msgstr "dolgu/iç/dış" + +msgid "infill/outer/inner" +msgstr "dolgu/dış/iç" + +msgid "inner-outer-inner/infill" +msgstr "iç-dış-iç/dolgu" + +msgid "Height to rod" +msgstr "Çubuğa kadar olan yükseklik" + +msgid "" +"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " +"by-object printing." +msgstr "" +"Nozul ucunun alt çubuğa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " +"önlemek için kullanılır." + +msgid "Height to lid" +msgstr "Kapağa kadar olan yükseklik" + +msgid "" +"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" +"object printing." +msgstr "" +"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " +"önlemek için kullanılır." + +msgid "" +"Clearance radius around extruder. Used for collision avoidance in by-object " +"printing." +msgstr "" +"Ekstruder etrafındaki boşluk yarıçapı. Nesneye göre yazdırmada çarpışmayı " +"önlemek için kullanılır." + +msgid "Extruder Color" +msgstr "Ekstruder Rengi" + +msgid "Only used as a visual help on UI" +msgstr "Yalnızca kullanıcı arayüzünde görsel yardım olarak kullanılır" + +msgid "Extruder offset" +msgstr "Ekstruder Konum" + +msgid "Flow ratio" +msgstr "Akış oranı" + +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow" +msgstr "" +"Malzeme, erimiş hal ile kristal hal arasında geçiş yaptıktan sonra hacimsel " +"değişime sahip olabilir. Bu ayar, bu filamanın gcode'daki tüm ekstrüzyon " +"akışını orantılı olarak değiştirir. Önerilen değer aralığı 0,95 ile 1,05 " +"arasındadır. Belki hafif taşma veya taşma olduğunda güzel düz bir yüzey elde " +"etmek için bu değeri ayarlayabilirsiniz" + +msgid "Enable pressure advance" +msgstr "Basınç Avansı (PA)" + +msgid "" +"Enable pressure advance, auto calibration result will be overwriten once " +"enabled." +msgstr "" +"Basınç avansını etkinleştirin; etkinleştirildiğinde otomatik kalibrasyon " +"sonucunun üzerine yazılacaktır." + +msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" +msgstr "Basınç avansı (Klipper) Doğrusal ilerleme faktörü (Marlin)" + +msgid "" +"Default line width if other line widths are set to 0. If expressed as a %, " +"it will be computed over the nozzle diameter." +msgstr "" +"Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % " +"olarak ifade edilirse nozül çapı üzerinden hesaplanacaktır." + +msgid "Keep fan always on" +msgstr "Fanı her zaman açık tut" + +msgid "" +"If enable this setting, part cooling fan will never be stoped and will run " +"at least at minimum speed to reduce the frequency of starting and stoping" +msgstr "" +"Bu ayarı etkinleştirirseniz, parça soğutma fanı hiçbir zaman durdurulmayacak " +"ve başlatma ve durdurma sıklığını azaltmak için en azından minimum hızda " +"çalışacaktır" + +msgid "Layer time" +msgstr "Katman süresi" + +msgid "" +"Part cooling fan will be enabled for layers of which estimated time is " +"shorter than this value. Fan speed is interpolated between the minimum and " +"maximum fan speeds according to layer printing time" +msgstr "" +"Tahmini süresi bu değerden kısa olan katlarda parça soğutma fanı devreye " +"girecektir. Fan hızı, katman yazdırma süresine göre minimum ve maksimum fan " +"hızları arasında enterpole edilir" + +msgid "Default color" +msgstr "Varsayılan renk" + +msgid "Default filament color" +msgstr "Varsayılan filament rengi" + +msgid "Color" +msgstr "Renk" + +msgid "Filament notes" +msgstr "Filament Notları" + +msgid "You can put your notes regarding the filament here." +msgstr "Filament ile ilgili notlarınızı buraya yazabilirsiniz." + +msgid "Required nozzle HRC" +msgstr "Gerekli nozul HRC" + +msgid "" +"Minimum HRC of nozzle required to print the filament. Zero means no checking " +"of nozzle's HRC." +msgstr "" +"Filamenti yazdırmak için gereken minimum HRC nozul. Sıfır, nozulun HRC'sinin " +"kontrol edilmediği anlamına gelir." + +msgid "" +"This setting stands for how much volume of filament can be melted and " +"extruded per second. Printing speed is limited by max volumetric speed, in " +"case of too high and unreasonable speed setting. Can't be zero" +msgstr "" +"Bu ayar, saniyede ne kadar miktarda filamanın eritilip ekstrüde " +"edilebileceğini gösterir. Çok yüksek ve makul olmayan hız ayarı durumunda, " +"yazdırma hızı maksimum hacimsel hız ile sınırlanır. Sıfır olamaz" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Filament load time" +msgstr "Filament yükleme süresi" + +msgid "Time to load new filament when switch filament. For statistics only" +msgstr "" +"Filamenti değiştirdiğinizde yeni filament yükleme zamanı. Yalnızca " +"istatistikler için" + +msgid "Filament unload time" +msgstr "Filament boşaltma süresi" + +msgid "Time to unload old filament when switch filament. For statistics only" +msgstr "" +"Filamenti değiştirdiğinizde eski filamanı boşaltma zamanı. Yalnızca " +"istatistikler için" + +msgid "" +"Filament diameter is used to calculate extrusion in gcode, so it's important " +"and should be accurate" +msgstr "" +"Filament çapı, gcode'da ekstrüzyonu hesaplamak için kullanılır; bu nedenle " +"önemlidir ve doğru olmalıdır" + +msgid "Shrinkage" +msgstr "Büzüşme" + +#, fuzzy, c-format, boost-format +msgid "" +"Enter the shrinkage percentage that the filament will get after cooling " +"(94% if you measure 94mm instead of 100mm). The part will be scaled in xy to " +"compensate. Only the filament used for the perimeter is taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done " +"after the checks." +msgstr "" +"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine " +"94 mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " +"Yalnızca çevre için kullanılan filament dikkate alınır.\n" +"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli " +"boşluk bıraktığınızdan emin olun." + +msgid "Loading speed" +msgstr "Yükleme hızı" + +msgid "Speed used for loading the filament on the wipe tower." +msgstr "Filamenti silme kulesine yüklemek için kullanılan hız." + +msgid "Loading speed at the start" +msgstr "Başlangıçtaki yükleme hızı" + +msgid "Speed used at the very beginning of loading phase." +msgstr "Yükleme aşamasının başında kullanılan hız." + +msgid "Unloading speed" +msgstr "Boşaltma hızı" + +msgid "" +"Speed used for unloading the filament on the wipe tower (does not affect " +"initial part of unloading just after ramming)." +msgstr "" +"Filamenti silme kulesinde boşaltmak için kullanılan hız (sıkıştırmadan hemen " +"sonra boşaltmanın ilk kısmını etkilemez)." + +msgid "Unloading speed at the start" +msgstr "Başlangıçta boşaltma hızı" + +msgid "" +"Speed used for unloading the tip of the filament immediately after ramming." +msgstr "" +"Sıkıştırmadan hemen sonra filamentin ucunu boşaltmak için kullanılan hız." + +msgid "Delay after unloading" +msgstr "Boşaltma işleminden sonra gecikme" + +msgid "" +"Time to wait after the filament is unloaded. May help to get reliable " +"toolchanges with flexible materials that may need more time to shrink to " +"original dimensions." +msgstr "" +"Filament boşaltıldıktan sonra beklenmesi gereken süre. Orijinal boyutlara " +"küçülmesi için daha fazla zamana ihtiyaç duyabilecek esnek malzemelerle " +"güvenilir takım değişimleri elde etmeye yardımcı olabilir." + +msgid "Number of cooling moves" +msgstr "Soğutma hareketi sayısı" + +msgid "" +"Filament is cooled by being moved back and forth in the cooling tubes. " +"Specify desired number of these moves." +msgstr "" +"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. " +"Bu sayısını belirtin." + +msgid "Speed of the first cooling move" +msgstr "İlk soğutma hareketi hızı" + +msgid "Cooling moves are gradually accelerating beginning at this speed." +msgstr "Soğutma hareketleri bu hızdan başlayarak kademeli olarak hızlanır." + +msgid "Minimal purge on wipe tower" +msgstr "Silme kulesi üzerinde minimum boşaltım" + +msgid "" +"After a tool change, the exact position of the newly loaded filament inside " +"the nozzle may not be known, and the filament pressure is likely not yet " +"stable. Before purging the print head into an infill or a sacrificial " +"object, Slic3r will always prime this amount of material into the wipe tower " +"to produce successive infill or sacrificial object extrusions reliably." +msgstr "" +"Bir takım değişiminden sonra, yeni yüklenen filamanın nozül 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 Slic3r, " +"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." + +msgid "Speed of the last cooling move" +msgstr "Son soğutma hareketi hızı" + +msgid "Cooling moves are gradually accelerating towards this speed." +msgstr "Soğutma hareketleri bu hıza doğru giderek hızlanır." + +msgid "" +"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " +"filament during a tool change (when executing the T code). This time is " +"added to the total print time by the G-code time estimator." +msgstr "" +"Yazıcı donanım yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " +"değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme " +"süresi. Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine " +"eklenir." + +msgid "Ramming parameters" +msgstr "Sıkıştırma parametreleri" + +msgid "" +"This string is edited by RammingDialog and contains ramming specific " +"parameters." +msgstr "" +"Bu dize RammingDialog tarafından düzenlenir ve ramming'e özgü parametreleri " +"içerir." + +msgid "" +"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " +"filament during a tool change (when executing the T code). This time is " +"added to the total print time by the G-code time estimator." +msgstr "" +"Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım değişimi " +"sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu süre, G kodu " +"süre tahmincisi tarafından toplam baskı süresine eklenir." + +msgid "Enable ramming for multitool setups" +msgstr "Çoklu araç kurulumları için sıkıştırmayı etkinleştirin" + +msgid "" +"Perform ramming when using multitool 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 " +"toolchange. This option is only used when the wipe tower is enabled." +msgstr "" +"Çok takımlı yazıcı kullanırken sıkıştırma gerçekleştirin (yani Yazıcı " +"Ayarları'ndaki 'Tek Ekstrüder Çoklu Malzeme' işaretli olmadığında). " +"İşaretlendiğinde, takım değişiminden hemen önce silme kulesinde az miktarda " +"filament hızla ekstrüde edilir. Bu seçenek yalnızca silme kulesi " +"etkinleştirildiğinde kullanılır." + +msgid "Multitool ramming volume" +msgstr "Çoklu araç sıkıştırma hacmi" + +msgid "The volume to be rammed before the toolchange." +msgstr "Takım değişiminden önce sıkıştırılacak hacim." + +msgid "Multitool ramming flow" +msgstr "Çoklu araç sıkıştırma akışı" + +msgid "Flow used for ramming the filament before the toolchange." +msgstr "Araç değişiminden önce filamenti sıkıştırmak için kullanılan akış." + +msgid "Density" +msgstr "Yoğunluk" + +msgid "Filament density. For statistics only" +msgstr "Filament yoğunluğu. Yalnızca istatistikler için" + +msgid "g/cm³" +msgstr "g/cm³" + +msgid "The material type of filament" +msgstr "Filament malzeme türü" + +msgid "Soluble material" +msgstr "Çözünür malzeme" + +msgid "" +"Soluble material is commonly used to print support and support interface" +msgstr "" +"Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için " +"kullanılır" + +msgid "Support material" +msgstr "Destek malzemesi" + +msgid "" +"Support material is commonly used to print support and support interface" +msgstr "" +"Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için " +"kullanılır" + +msgid "Temperature of vitrificaiton" +msgstr "Yumuşama sıcaklığı" + +msgid "" +"Material becomes soft at this temperature. Thus the heatbed cannot be hotter " +"than this tempature" +msgstr "" +"Bu sıcaklıkta malzeme yumuşar. Bu nedenle ısıtma yatağı bu sıcaklıktan daha " +"sıcak olamaz" + +msgid "Price" +msgstr "Fiyat" + +msgid "Filament price. For statistics only" +msgstr "Filament fiyatı. Yalnızca istatistikler için" + +msgid "money/kg" +msgstr "para/kg" + +msgid "Vendor" +msgstr "Satıcı" + +msgid "Vendor of filament. For show only" +msgstr "Filament satıcısı. Yalnızca gösteri için" + +msgid "(Undefined)" +msgstr "(Tanımsız)" + +msgid "Infill direction" +msgstr "Dolgu Açısı" + +msgid "" +"Angle for sparse infill pattern, which controls the start or main direction " +"of line" +msgstr "" +"Hattın başlangıcını veya ana yönünü kontrol eden seyrek dolgu deseni açısı" + +msgid "Sparse infill density" +msgstr "Dolgu Yoğunluğu" + +#, c-format +msgid "Density of internal sparse infill, 100% means solid throughout" +msgstr "Density of internal sparse infill, 100% means solid throughout" + +msgid "Sparse infill pattern" +msgstr "Dolgu Deseni" + +msgid "Line pattern for internal sparse infill" +msgstr "İç dolgu deseni" + +msgid "Grid" +msgstr "Kafes" + +msgid "Line" +msgstr "Çizgi" + +msgid "Cubic" +msgstr "Kübik" + +msgid "Tri-hexagon" +msgstr "Üç altıgen" + +msgid "Gyroid" +msgstr "Jiroid" + +msgid "Honeycomb" +msgstr "Bal peteği" + +msgid "Adaptive Cubic" +msgstr "Uyarlanabilir Kübik" + +msgid "3D Honeycomb" +msgstr "3D Petek" + +msgid "Support Cubic" +msgstr "Destek Kübik" + +msgid "Lightning" +msgstr "Yıldırım" + +msgid "Sparse infill anchor length" +msgstr "Dolgu Uzunluğu" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" +"Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " +"genişliği üzerinden hesaplanır. Slic3r iki yakın dolgu hattını kısa bir " +"çevre segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle " +"bir çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " +"segmentine bağlanır ve alınan çevre segmentinin uzunluğu bu parametreyle " +"sınırlıdır, ancak çapa_uzunluk_max'tan uzun olamaz.\n" +"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için " +"bu parametreyi sıfıra ayarlayın." + +msgid "0 (no open anchors)" +msgstr "0 (açık bağlantı yok)" + +msgid "1000 (unlimited)" +msgstr "1000 (sınırsız)" + +msgid "Maximum length of the infill anchor" +msgstr "Dolgu maksimum uzunluk" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" +"Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " +"genişliği üzerinden hesaplanır. Slic3r iki yakın dolgu hattını kısa bir " +"çevre segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre " +"segmenti bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine " +"bağlanır ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır " +"ancak bu parametreden daha uzun olamaz.\n" +"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 " +"ve 0 ile aynı sonucu oluşturmalıdır." + +msgid "0 (Simple connect)" +msgstr "0 (Basit bağlantı)" + +msgid "Acceleration of outer walls" +msgstr "Dış duvarların hızlandırılması" + +msgid "Acceleration of inner walls" +msgstr "İç duvarların hızlandırılması" + +msgid "Acceleration of travel moves" +msgstr "Seyahat hareketlerinin hızlandırılması" + +msgid "" +"Acceleration of top surface infill. Using a lower value may improve top " +"surface quality" +msgstr "" +"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması " +"üst yüzey kalitesini iyileştirebilir" + +msgid "Acceleration of outer wall. Using a lower value can improve quality" +msgstr "" +"Dış duvarın hızlanması. Daha düşük bir değer kullanmak kaliteyi artırabilir" + +msgid "" +"Acceleration of bridges. If the value is expressed as a percentage (e.g. " +"50%), it will be calculated based on the outer wall acceleration." +msgstr "" +"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), " +"dış duvar ivmesine göre hesaplanacaktır." + +msgid "mm/s² or %" +msgstr "mm/s² veya %" + +msgid "" +"Acceleration of sparse infill. If the value is expressed as a percentage (e." +"g. 100%), it will be calculated based on the default acceleration." +msgstr "" +"Seyrek dolgunun hızlandırılması. Değer yüzde olarak ifade edilirse (örn. " +"%100), varsayılan ivmeye göre hesaplanacaktır." + +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 "" +"İç katı dolgunun hızlandırılması. Değer yüzde olarak ifade edilirse (örn. " +"%100), varsayılan ivmeye göre hesaplanacaktır." + +msgid "" +"Acceleration of initial layer. Using a lower value can improve build plate " +"adhensive" +msgstr "" +"Başlangıç katmanının hızlandırılması. Daha düşük bir değerin kullanılması " +"baskı plakası yapışkanlığını iyileştirebilir" + +msgid "Enable accel_to_decel" +msgstr "Accel_to_decel'i etkinleştir" + +msgid "Klipper's max_accel_to_decel will be adjusted automatically" +msgstr "Klipper'ın max_accel_to_decel'i otomatik olarak ayarlanacak" + +msgid "accel_to_decel" +msgstr "accel_to_decel" + +#, c-format, boost-format +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" +msgstr "" + +msgid "Jerk of outer walls" +msgstr "Dış duvar JERK değeri" + +msgid "Jerk of inner walls" +msgstr "İç duvarlar JERK değeri" + +msgid "Jerk for top surface" +msgstr "Üst yüzey için JERK değeri" + +msgid "Jerk for infill" +msgstr "Dolgu için JERK değeri" + +msgid "Jerk for initial layer" +msgstr "İlk katman için JERK değeri" + +msgid "Jerk for travel" +msgstr "Seyahat için JERK değeri" + +msgid "" +"Line width of initial layer. If expressed as a %, it will be computed over " +"the nozzle diameter." +msgstr "" +"İlk katmanın çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " +"hesaplanacaktır." + +msgid "Initial layer height" +msgstr "Başlangıç katman yüksekliği" + +msgid "" +"Height of initial layer. Making initial layer height to be thick slightly " +"can improve build plate adhension" +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 "Speed of initial layer except the solid infill part" +msgstr "Katı dolgu kısmı dışındaki ilk katmanın hızı" + +msgid "Initial layer infill" +msgstr "Başlangıç katman dolgusu" + +msgid "Speed of solid infill part of initial layer" +msgstr "İlk katmanın katı dolgu kısmının hızı" + +msgid "Initial layer travel speed" +msgstr "İlk katman seyahat hızı" + +msgid "Travel speed of initial layer" +msgstr "İlk katman seyahat hızı" + +msgid "Number of slow layers" +msgstr "Yavaş katman sayısı" + +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 "" +"İlk birkaç katman normalden daha yavaş yazdırılır. Hız, belirtilen katman " +"sayısı boyunca doğrusal bir şekilde kademeli olarak artırılır." + +msgid "Initial layer nozzle temperature" +msgstr "İlk katman nozul sıcaklığı" + +msgid "Nozzle temperature to print initial layer when using this filament" +msgstr "Bu filamenti kullanırken ilk katmanı yazdırmak için nozul sıcaklığı" + +msgid "Full fan speed at layer" +msgstr "Maksimum fan hızı" + +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 "" +"Fan hızı, \"close_fan_the_first_x_layers\" katmanında sıfırdan " +"\"ful_fan_speed_layer\" katmanında maksimuma doğrusal olarak artırılacaktır. " +"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden " +"düşükse göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers" +"\" + 1 katmanında izin verilen maksimum hızda çalışacaktır." + +msgid "Support interface fan speed" +msgstr "Destekler için fan hızı" + +msgid "" +"This fan speed is enforced during all support interfaces, to be able to " +"weaken their bonding with a high fan speed.\n" +"Set to -1 to disable this override.\n" +"Can only be overriden by disable_fan_first_layers." +msgstr "" +"Bu fan hızı, yüksek fan hızıyla bağlarını zayıflatabilmek için tüm destek " +"arayüzlerinde uygulanır.\n" +"Bu geçersiz kılmayı devre dışı bırakmak için -1'e ayarlayın.\n" +"Yalnızca devre dışı_fan_first_layers tarafından geçersiz kılınabilir." + +msgid "" +"Randomly jitter while printing the wall, so that the surface has a rough " +"look. This setting controls the fuzzy position" +msgstr "" +"Duvara baskı yaparken rastgele titreme, böylece yüzeyin pürüzlü bir görünüme " +"sahip olması. Bu ayar bulanık konumu kontrol eder" + +msgid "None" +msgstr "Hiçbiri" + +msgid "Contour" +msgstr "Kontur" + +msgid "Contour and hole" +msgstr "Kontur ve delik" + +msgid "All walls" +msgstr "Tüm duvarlar" + +msgid "Fuzzy skin thickness" +msgstr "Bulanık kaplama kalınlığı" + +msgid "" +"The width within which to jitter. It's adversed to be below outer wall line " +"width" +msgstr "" +"Titremenin gerçekleşeceği genişlik. Dış duvar çizgi genişliğinin altında " +"olması sakıncalıdır" + +msgid "Fuzzy skin point distance" +msgstr "Bulanık kaplama noktası mesafesi" + +msgid "" +"The average diatance between the random points introducded on each line " +"segment" +msgstr "" +"Her çizgi parçasına eklenen rastgele noktalar arasındaki ortalama mesafe" + +msgid "Filter out tiny gaps" +msgstr "Küçük boşlukları filtrele" + +msgid "Layers and Perimeters" +msgstr "Katmanlar ve Çevreler" + +msgid "" +"Filter out gaps smaller than the threshold specified. This setting won't " +"affect top/bottom layers" +msgstr "" +"Belirtilen eşikten daha küçük boşlukları filtreleyin. Bu ayar üst/alt " +"katmanları etkilemez" + +msgid "" +"Speed of gap infill. Gap usually has irregular line width and should be " +"printed more slowly" +msgstr "" +"Boşluk doldurma hızı. Boşluk genellikle düzensiz çizgi genişliğine sahiptir " +"ve daha yavaş yazdırılmalıdır" + +msgid "Arc fitting" +msgstr "Ark" + +msgid "" +"Enable this to get a G-code file which has G2 and G3 moves. And the fitting " +"tolerance is same with resolution" +msgstr "" +"G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " +"etkinleştirin. Ve montaj toleransı çözünürlükle aynıdır" + +msgid "Add line number" +msgstr "Satır numarası ekle" + +msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" +msgstr "" +"Her G Kodu satırının başına satır numarası (Nx) eklemek için bunu " +"etkinleştirin" + +msgid "Scan first layer" +msgstr "İlk katmanı tara" + +msgid "" +"Enable this to enable the camera on printer to check the quality of first " +"layer" +msgstr "" +"Yazıcıdaki kameranın ilk katmanın kalitesini kontrol etmesini sağlamak için " +"bunu etkinleştirin" + +msgid "Nozzle type" +msgstr "Nozul tipi" + +msgid "" +"The metallic material of nozzle. This determines the abrasive resistance of " +"nozzle, and what kind of filament can be printed" +msgstr "" +"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür " +"filamentin basılabileceğini belirler" + +msgid "Undefine" +msgstr "Tanımsız" + +msgid "Hardened steel" +msgstr "Güçlendirilmiş çelik" + +msgid "Stainless steel" +msgstr "Paslanmaz çelik" + +msgid "Brass" +msgstr "Pirinç" + +msgid "Nozzle HRC" +msgstr "Nozul HRC" + +msgid "" +"The nozzle's hardness. Zero means no checking for nozzle's hardness during " +"slicing." +msgstr "" +"Nozul sertliği. Sıfır, dilimleme sırasında nozul sertliğinin kontrol " +"edilmediği anlamına gelir." + +msgid "HRC" +msgstr "sıcak rulo" + +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + +msgid "Enable this option if machine has auxiliary part cooling fan" +msgstr "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" + +msgid "" +"Start the fan this number of seconds earlier than its target start time (you " +"can use fractional seconds). It assumes infinite acceleration for this time " +"estimation, and will only take into account G1 and G0 moves (arc fitting is " +"unsupported).\n" +"It won't move fan comands from custom gcodes (they act as a sort of " +"'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start " +"gcode' is activated.\n" +"Use 0 to deactivate." +msgstr "" +"Fanı hedef başlangıç zamanından bu kadar saniye önce başlatın (kesirli " +"saniyeleri kullanabilirsiniz). Bu süre tahmini için sonsuz ivme varsayar ve " +"yalnızca G1 ve G0 hareketlerini hesaba katar (yay uydurma desteklenmez).\n" +"Fan komutlarını özel kodlardan taşımaz (bir çeşit 'bariyer' görevi " +"görürler).\n" +"'Yalnızca özel başlangıç gcode'u etkinleştirilmişse, fan komutları başlangıç " +"gcode'una taşınmayacaktır.\n" +"Devre dışı bırakmak için 0'ı kullanın." + +msgid "Only overhangs" +msgstr "Yalnızca çıkıntılar" + +msgid "Will only take into account the delay for the cooling of overhangs." +msgstr "Yalnızca çıkıntıların soğumasına ilişkin gecikme dikkate alınacaktır." + +msgid "Fan kick-start time" +msgstr "Fan başlatma süresi" + +msgid "" +"Emit a max fan speed command for this amount of seconds before reducing to " +"target speed to kick-start the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the " +"fan started spinning from a stop, or to get the fan up to speed faster.\n" +"Set to 0 to deactivate." +msgstr "" +"Soğutma fanını başlatmak için hedef hıza düşmeden önce bu süre boyunca " +"maksimum fan hızı komutunu verin.\n" +"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın " +"daha hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" +"Devre dışı bırakmak için 0'a ayarlayın." + +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + +msgid "G-code flavor" +msgstr "G-Kod Uyumu" + +msgid "What kind of gcode the printer is compatible with" +msgstr "Yazıcının ne tür bir gcode ile uyumlu olduğu" + +msgid "Klipper" +msgstr "Klipper" + +msgid "Label objects" +msgstr "Nesneleri etiketle" + +msgid "" +"Enable this to add comments into the G-Code labeling print moves with what " +"object they belong to, which is useful for the Octoprint CancelObject " +"plugin. This settings is NOT compatible with Single Extruder Multi Material " +"setup and Wipe into Object / Wipe into Infill." +msgstr "" +"G-Code etiketleme yazdırma hareketlerine ait oldukları nesneyle ilgili " +"yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject " +"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme " +"kurulumu ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." + +msgid "Exclude objects" +msgstr "Nesneleri hariç tut" + +msgid "Enable this option to add EXCLUDE OBJECT command in g-code" +msgstr "" +"G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" + +msgid "Verbose G-code" +msgstr "Ayrıntılı G kodu" + +msgid "" +"Enable this to get a commented G-code file, with each line explained by a " +"descriptive text. If you print from SD card, the additional weight of the " +"file could make your firmware slow down." +msgstr "" +"Her satırın açıklayıcı bir metinle açıklandığı, yorumlu bir G kodu dosyası " +"almak için bunu etkinleştirin. SD karttan yazdırırsanız dosyanın ilave " +"ağırlığı ürün yazılımınızın yavaşlamasına neden olabilir." + +msgid "Infill combination" +msgstr "Dolgu kombinasyonu" + +msgid "" +"Automatically Combine sparse infill of several layers to print together to " +"reduce time. Wall is still printed with original layer height." +msgstr "" +"Zamanı azaltmak amacıyla birden fazla katmanın seyrek dolgusunu otomatik " +"olarak birleştirerek birlikte yazdırın. Duvar hala orijinal katman " +"yüksekliğinde basılmaktadır." + +msgid "Filament to print internal sparse infill." +msgstr "İç seyrek dolguyu yazdırmak için filament." + +msgid "" +"Line width of internal sparse infill. If expressed as a %, it will be " +"computed over the nozzle diameter." +msgstr "" +"İç seyrek dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " +"üzerinden hesaplanacaktır." + +msgid "Infill/Wall overlap" +msgstr "Dolgu/Duvar örtüşmesi" + +msgid "" +"Infill area is enlarged slightly to overlap with wall for better bonding. " +"The percentage value is relative to line width of sparse infill" +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" + +msgid "Speed of internal sparse infill" +msgstr "İç seyrek dolgunun hızı" + +msgid "Interface shells" +msgstr "Arayüz kabukları" + +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 "" +"Bitişik malzemeler/hacimler arasında katı kabuk oluşumunu zorlayın. Yarı " +"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu " +"ekstruder baskıları için kullanışlıdır" + +msgid "Ironing Type" +msgstr "Ütüleme Tipi" + +msgid "" +"Ironing is using small flow to print on same height of surface again to make " +"flat surface more smooth. This setting controls which layer being ironed" +msgstr "" +"Ütüleme, düz yüzeyi daha pürüzsüz hale getirmek için aynı yükseklikteki " +"yüzeye tekrar baskı yapmak için küçük akış kullanmaktır. Bu ayar hangi " +"katmanın ütüleneceğini kontrol eder" + +msgid "No ironing" +msgstr "Ütüleme yok" + +msgid "Top surfaces" +msgstr "Üst yüzeyler" + +msgid "Topmost surface" +msgstr "En üst yüzey" + +msgid "All solid layer" +msgstr "Tamamı katı katman" + +msgid "Ironing Pattern" +msgstr "Ütüleme Deseni" + +msgid "Ironing flow" +msgstr "Ütüleme akışı" + +msgid "" +"The amount of material to extrude during ironing. Relative to flow of normal " +"layer height. Too high value results in overextrusion on the surface" +msgstr "" +"Ütüleme sırasında çıkacak malzeme miktarı. Normal katman yüksekliğindeki " +"akışa göre. Çok yüksek değer yüzeyde aşırı ekstrüzyona neden olur" + +msgid "Ironing line spacing" +msgstr "Ütüleme çizgi aralığı" + +msgid "The distance between the lines of ironing" +msgstr "Ütü çizgileri arasındaki mesafe" + +msgid "Ironing speed" +msgstr "Ütüleme hızı" + +msgid "Print speed of ironing lines" +msgstr "Ütüleme çizgilerinin baskı hızı" + +msgid "This gcode part is inserted at every layer change after lift z" +msgstr "" +"Bu gcode kısmı, z kaldırma işleminden sonra her katman değişikliğinde eklenir" + +msgid "Supports silent mode" +msgstr "Sessiz modu destekler" + +msgid "" +"Whether the machine supports silent mode in which machine use lower " +"acceleration to print" +msgstr "" +"Makinenin yazdırmak için daha düşük hızlanma kullandığı sessiz modu " +"destekleyip desteklemediği" + +msgid "" +"This G-code will be used as a code for the pause print. User can insert " +"pause G-code in gcode viewer" +msgstr "" +"Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. " +"Kullanıcı gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" + +msgid "This G-code will be used as a custom code" +msgstr "Bu G kodu özel kod olarak kullanılacak" + +msgid "Maximum speed X" +msgstr "Maksimum hız X" + +msgid "Maximum speed Y" +msgstr "Maksimum hız Y" + +msgid "Maximum speed Z" +msgstr "Maksimum hız Z" + +msgid "Maximum speed E" +msgstr "Maksimum hız E" + +msgid "Machine limits" +msgstr "Yazıcısınırları" + +msgid "Maximum X speed" +msgstr "Maksimum X hızı" + +msgid "Maximum Y speed" +msgstr "Maksimum Y hızı" + +msgid "Maximum Z speed" +msgstr "Maksimum Z hızı" + +msgid "Maximum E speed" +msgstr "Maksimum E hızı" + +msgid "Maximum acceleration X" +msgstr "Maksimum hızlanma X" + +msgid "Maximum acceleration Y" +msgstr "Maksimum hızlanma Y" + +msgid "Maximum acceleration Z" +msgstr "Maksimum hızlanma Z" + +msgid "Maximum acceleration E" +msgstr "Maksimum hızlanma E" + +msgid "Maximum acceleration of the X axis" +msgstr "X ekseninin maksimum hızlanması" + +msgid "Maximum acceleration of the Y axis" +msgstr "Y ekseninin maksimum ivmesi" + +msgid "Maximum acceleration of the Z axis" +msgstr "Z ekseninin maksimum hızlanması" + +msgid "Maximum acceleration of the E axis" +msgstr "E ekseninin maksimum hızlanması" + +msgid "Maximum jerk X" +msgstr "Maksimum sarsıntı X" + +msgid "Maximum jerk Y" +msgstr "Maksimum sarsıntı Y" + +msgid "Maximum jerk Z" +msgstr "Maksimum sarsıntı Z" + +msgid "Maximum jerk E" +msgstr "Maksimum sarsıntı E" + +msgid "Maximum jerk of the X axis" +msgstr "X ekseninin maksimum sarsıntısı (Jerk)" + +msgid "Maximum jerk of the Y axis" +msgstr "Y ekseninin maksimum sarsıntısı (Jerk)" + +msgid "Maximum jerk of the Z axis" +msgstr "Z ekseninin maksimum sarsıntısı (Jerk)" + +msgid "Maximum jerk of the E axis" +msgstr "E ekseninin maksimum sarsıntısı (Jerk)" + +msgid "Minimum speed for extruding" +msgstr "Ekstrüzyon için minimum hız" + +msgid "Minimum speed for extruding (M205 S)" +msgstr "Ekstrüzyon için minimum hız (M205 S)" + +msgid "Minimum travel speed" +msgstr "Minimum seyahat hızı" + +msgid "Minimum travel speed (M205 T)" +msgstr "Minimum ilerleme hızı (M205 T)" + +msgid "Maximum acceleration for extruding" +msgstr "Ekstrüzyon için maksimum hızlanma" + +msgid "Maximum acceleration for extruding (M204 P)" +msgstr "Ekstrüzyon için maksimum hızlanma (M204 P)" + +msgid "Maximum acceleration for retracting" +msgstr "Geri çekme için maksimum hızlanma" + +msgid "Maximum acceleration for retracting (M204 R)" +msgstr "Geri çekilme için maksimum hızlanma (M204 R)" + +msgid "Maximum acceleration for travel" +msgstr "Seyahat için maksimum hızlanma" + +msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" +msgstr "" + +msgid "" +"Part cooling fan speed may be increased when auto cooling is enabled. This " +"is the maximum speed limitation of part cooling fan" +msgstr "" +"Otomatik soğutma etkinleştirildiğinde parça soğutma fanı hızı artırılabilir. " +"Bu, parça soğutma fanının maksimum hız sınırlamasıdır" + +msgid "Max" +msgstr "Maksimum" + +msgid "" +"The largest printable layer height for extruder. Used tp limits the maximum " +"layer hight when enable adaptive layer height" +msgstr "" +"Ekstruder için yazdırılabilir en büyük katman yüksekliği. Kullanılan tp, " +"uyarlanabilir katman yüksekliğini etkinleştirirken maksimum katman " +"yüksekliğini sınırlar" + +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + +msgid "Minimum speed for part cooling fan" +msgstr "Parça soğutma fanı için minimum hız" + +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" +msgstr "" +"Yardımcı parça soğutma fanının hızı. Yardımcı fan, soğutma katmanlarının " +"bulunmadığı ilk birkaç katman dışında, yazdırma sırasında bu hızda " +"çalışacaktır" + +msgid "Min" +msgstr "Min" + +msgid "" +"The lowest printable layer height for extruder. Used tp limits the minimum " +"layer hight when enable adaptive layer height" +msgstr "" +"Ekstruder için yazdırılabilir en düşük katman yüksekliği. Kullanılan tp, " +"uyarlanabilir katman yüksekliğini etkinleştirirken minimum katman " +"yüksekliğini sınırlar" + +msgid "Min print speed" +msgstr "Minimum baskı hızı" + +msgid "The minimum printing speed when slow down for cooling" +msgstr "Soğutma için yavaşlama durumunda minimum yazdırma hızı" + +msgid "Nozzle diameter" +msgstr "Nozul çapı" + +msgid "Diameter of nozzle" +msgstr "Nozul çapı" + +msgid "Configuration notes" +msgstr "Yapılandırma notları" + +msgid "" +"You can put here your personal notes. This text will be added to the G-code " +"header comments." +msgstr "" +"Buraya kişisel notlarınızı yazabilirsiniz. Bu not G-kodu başlık yorumlarına " +"eklenecektir." + +msgid "Host Type" +msgstr "Bağlantı Türü" + +msgid "" +"Slic3r can upload G-code files to a printer host. This field must contain " +"the kind of the host." +msgstr "" +"Slic3r, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan ana bilgisayarın türünü içermelidir." + +msgid "Nozzle volume" +msgstr "Nozul hacmi" + +msgid "Volume of nozzle between the cutter and the end of nozzle" +msgstr "Kesici ile nozulun ucu arasındaki nozül hacmi" + +msgid "Cooling tube position" +msgstr "Soğutma borusu konumu" + +msgid "Distance of the center-point of the cooling tube from the extruder tip." +msgstr "Soğutma borusunun merkez noktasının ekstrüder ucundan uzaklığı." + +msgid "Cooling tube length" +msgstr "Soğutma borusu uzunluğu" + +msgid "Length of the cooling tube to limit space for cooling moves inside it." +msgstr "" +"İçindeki soğutma hareketleri alanını sınırlamak üzere soğutma tüpünün " +"uzunluğu." + +msgid "High extruder current on filament swap" +msgstr "Filament değişiminde yüksek ekstruder akımı" + +msgid "" +"It may be beneficial to increase the extruder motor current during the " +"filament exchange sequence to allow for rapid ramming feed rates and to " +"overcome resistance when loading a filament with an ugly shaped tip." +msgstr "" +"Hızlı sıkıştırma hızlarına izin vermek ve kötü kesilmiş bir filament " +"yüklerken direncin üstesinden gelmek için filament değişim sırası sırasında " +"ekstrüder motor akımını artırmak faydalı olabilir." + +msgid "Filament parking position" +msgstr "Filament park konumu" + +msgid "" +"Distance of the extruder tip from the position where the filament is parked " +"when unloaded. This should match the value in printer firmware." +msgstr "" +"Ekstrüder ucunun, boşaltıldığında filamentin park edildiği konumdan " +"uzaklığı. Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." + +msgid "Extra loading distance" +msgstr "Ekstra yükleme mesafesi" + +msgid "" +"When set to zero, the distance the filament is moved from parking position " +"during load is exactly the same as it was moved back during unload. When " +"positive, it is loaded further, if negative, the loading move is shorter " +"than unloading." +msgstr "" +"Sıfır olarak ayarlandığında, yükleme sırasında filamentin park konumundan " +"taşındığı mesafe, boşaltma sırasında geri taşındığı mesafe ile aynıdır. " +"Pozitif olduğunda daha fazla yüklenir, negatif olduğunda yükleme hareketi " +"boşaltmadan daha kısadır." + +msgid "Start end points" +msgstr "Başlangıç bitiş noktaları" + +msgid "The start and end points which is from cutter area to garbage can." +msgstr "Kesici bölgeden çöp kutusuna kadar olan başlangıç ve bitiş noktaları." + +msgid "Reduce infill retraction" +msgstr "Dolguda geri çekmeyi azalt" + +msgid "" +"Don't retract when the travel is in infill area absolutely. 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" +msgstr "" +"Hareket kesinlikle dolgu alanına girdiğinde geri çekilmeyin. Bu, sızıntının " +"görülemeyeceği anlamına gelir. Bu, karmaşık model için geri çekme sürelerini " +"azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi " +"ve G kodu oluşturmayı yavaşlatır" + +msgid "Enable" +msgstr "Aktifle" + +msgid "Filename format" +msgstr "Dosya adı formatı" + +msgid "User can self-define the project file name when export" +msgstr "" +"Kullanıcı dışa aktarma sırasında proje dosyası adını kendisi tanımlayabilir" + +msgid "Make overhang printable" +msgstr "Çıkıntılar yazdırılabilir" + +msgid "Modify the geometry to print overhangs without support material." +msgstr "" +"Destek malzemesi olmadan çıkıntıları yazdırmak için geometriyi değiştirin." + +msgid "Make overhang printable maximum angle" +msgstr "Maksimum yazdırılabilir açı" + +msgid "" +"Maximum angle of overhangs to allow after making more steep overhangs " +"printable.90° will not change the model at all and allow any overhang, while " +"0 will replace all overhangs with conical material." +msgstr "" +"Daha dik çıkıntıları yazdırılabilir hale getirdikten sonra izin verilen " +"maksimum çıkıntı açısı. 90°, modeli hiçbir şekilde değiştirmez ve herhangi " +"bir çıkıntıya izin vermez, 0 ise tüm çıkıntıları konik malzemeyle değiştirir." + +msgid "Make overhang printable hole area" +msgstr "Yazdırılabilir çıkıntı delik alanı oluşturun" + +msgid "" +"Maximum area of a hole in the base of the model before it's filled by " +"conical material.A value of 0 will fill all the holes in the model base." +msgstr "" +"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce " +"maksimum alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." + +msgid "mm²" +msgstr "mm²" + +msgid "Detect overhang wall" +msgstr "Çıkıntılı duvarı algıla" + +#, c-format, boost-format +msgid "" +"Detect the overhang percentage relative to line width and use different " +"speed to print. For 100%% overhang, bridge speed is used." +msgstr "" +"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için " +"farklı hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." + +msgid "" +"Line width of inner wall. If expressed as a %, it will be computed over the " +"nozzle diameter." +msgstr "" +"İç duvarın çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " +"hesaplanacaktır." + +msgid "Speed of inner wall" +msgstr "İç duvarın hızı" + +msgid "Number of walls of every layer" +msgstr "Her katmanın duvar sayısı" + +msgid "" +"If you want to process the output G-code through custom scripts, just list " +"their absolute paths here. Separate multiple scripts with a semicolon. " +"Scripts will be passed the absolute path to the G-code file as the first " +"argument, and they can access the Slic3r config settings by reading " +"environment variables." +msgstr "" +"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, " +"mutlak yollarını burada listeleyin. Birden fazla betiği noktalı virgülle " +"ayırın. Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır " +"ve ortam değişkenlerini okuyarak Slic3r yapılandırma ayarlarına " +"erişebilirler." + +msgid "Printer notes" +msgstr "Yazıcı notları" + +msgid "You can put your notes regarding the printer here." +msgstr "Yazıcı ile ilgili notlarınızı buraya yazabilirsiniz." + +msgid "Raft contact Z distance" +msgstr "Raft kontak Z mesafesi" + +msgid "Z gap between object and raft. Ignored for soluble interface" +msgstr "" +"Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" + +msgid "Raft expansion" +msgstr "Raft genişletme" + +msgid "Expand all raft layers in XY plane" +msgstr "XY düzlemindeki tüm sal katmanlarını genişlet" + +msgid "Initial layer density" +msgstr "Başlangıç katman yoğunluğu" + +msgid "Density of the first raft or support layer" +msgstr "İlk sal veya destek katmanının yoğunluğu" + +msgid "Initial layer expansion" +msgstr "İlk katman genişletme" + +msgid "Expand the first raft or support layer to improve bed plate adhesion" +msgstr "" +"Yatak plakası yapışmasını iyileştirmek için ilk raft veya destek katmanını " +"genişletin" + +msgid "Raft layers" +msgstr "Raft katmanları" + +msgid "" +"Object will be raised by this number of support layers. Use this function to " +"avoid wrapping when print ABS" +msgstr "" +"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS " +"yazdırırken sarmayı önlemek için bu işlevi kullanın" + +msgid "" +"G-code path is genereated after simplifing the contour of model to avoid too " +"much points and gcode lines in gcode file. Smaller value means higher " +"resolution and more time to slice" +msgstr "" +"Gcode dosyasında çok fazla nokta ve gcode çizgisinin olmaması için modelin " +"konturu basitleştirildikten sonra G-code yolu oluşturulur. Daha küçük değer, " +"daha yüksek çözünürlük ve dilimleme için daha fazla zaman anlamına gelir" + +msgid "Travel distance threshold" +msgstr "Seyahat mesafesi" + +msgid "" +"Only trigger retraction when the travel distance is longer than this " +"threshold" +msgstr "" +"Geri çekmeyi yalnızca hareket mesafesi bu eşikten daha uzun olduğunda " +"tetikleyin" + +msgid "Retract amount before wipe" +msgstr "Temizleme işlemi öncesi geri çekme miktarı" + +msgid "" +"The length of fast retraction before wipe, relative to retraction length" +msgstr "" +"Geri çekme uzunluğuna göre, temizlemeden önce hızlı geri çekilmenin uzunluğu" + +msgid "Retract when change layer" +msgstr "Katman değişiminde geri çek" + +msgid "Force a retraction when changes layer" +msgstr "Katmanı değiştirdiğinde geri çekilmeyi zorla" + +msgid "Length" +msgstr "Uzunluk" + +msgid "Retraction Length" +msgstr "Geri Çekme Uzunluğu" + +msgid "" +"Some amount of material in extruder is pulled back to avoid ooze during long " +"travel. Set zero to disable retraction" +msgstr "" +"Uzun seyahat sırasında sızıntıyı önlemek için ekstruderdeki malzemenin bir " +"kısmı geri çekilir. Geri çekmeyi devre dışı bırakmak için sıfır ayarlayın" + +msgid "Z hop when retract" +msgstr "Geri çekme esnasında Z sıçraması" + +msgid "" +"Whenever the retraction is done, the nozzle is lifted a little to create " +"clearance between nozzle and the print. It prevents nozzle from hitting the " +"print when travel move. Using spiral line to lift z can prevent stringing" +msgstr "" +"Geri çekme işlemi her yapıldığında, nozul ile baskı arasında açıklık " +"oluşturmak için nozul biraz kaldırılır. Hareket halindeyken nozülün baskıya " +"çarpmasını önler. Z'yi kaldırmak için spiral çizgi kullanmak çekmeyi " +"önleyebilir" + +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + +msgid "Z hop type" +msgstr "Z sıçraması türü" + +msgid "Slope" +msgstr "Eğim" + +msgid "Spiral" +msgstr "Sarmal" + +msgid "Only lift Z above" +msgstr "Z'yi sadece şu değerin üstündeki durumlarda kaldır" + +msgid "" +"If you set this to a positive value, Z lift will only take place above the " +"specified absolute Z." +msgstr "" +"Bunu pozitif bir değere ayarlarsanız Z kaldırması yalnızca belirtilen mutlak " +"Z'nin üzerinde gerçekleşecektir." + +msgid "Only lift Z below" +msgstr "Z'yi sadece şu değerin altındaki durumlarda kaldır" + +msgid "" +"If you set this to a positive value, Z lift will only take place below the " +"specified absolute Z." +msgstr "" +"Bunu pozitif bir değere ayarlarsanız, Z kaldırma işlemi yalnızca belirtilen " +"mutlak Z değerinin altında gerçekleşir." + +msgid "On surfaces" +msgstr "Yüzeyler" + +msgid "" +"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " +"lift Z above/below)." +msgstr "" +"Z Hop davranışını zorunlu kılın. Bu ayar yukarıdaki ayarlardan etkilenir " +"(Z'yi yalnızca yukarıya/aşağıya kaldırın)." + +msgid "All Surfaces" +msgstr "Tüm Yüzeyler" + +msgid "Top Only" +msgstr "Sadece üst" + +msgid "Bottom Only" +msgstr "Sadece alt" + +msgid "Top and Bottom" +msgstr "Üst ve alt" + +msgid "Extra length on restart" +msgstr "Yeniden başlatma sırasında ekstra uzunluk" + +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 "" +"İlerleme hareketinden sonra geri çekilme telafi edildiğinde, ekstruder bu ek " +"filament miktarını itecektir. Bu ayara nadiren ihtiyaç duyulur." + +msgid "" +"When the retraction is compensated after changing tool, the extruder will " +"push this additional amount of filament." +msgstr "" +"Takım değiştirildikten sonra geri çekilme telafi edildiğinde, ekstruder bu " +"ilave filament miktarını itecektir." + +msgid "Retraction Speed" +msgstr "Geri Çekme Hızı" + +msgid "Speed of retractions" +msgstr "Geri çekme hızları" + +msgid "Deretraction Speed" +msgstr "İleri itme Hızı" + +msgid "" +"Speed for reloading filament into extruder. Zero means same speed with " +"retraction" +msgstr "" +"Filamenti ekstrüdere yeniden yükleme hızı. Sıfır, geri çekilmeyle aynı hız " +"anlamına gelir" + +msgid "Use firmware retraction" +msgstr "Yazılımsal geri çekme (firmware retraction)" + +msgid "" +"This experimental setting uses G10 and G11 commands to have the firmware " +"handle the retraction. This is only supported in recent Marlin." +msgstr "" +"Bu deneysel ayar, bellenimin geri çekme işlemini gerçekleştirmesini sağlamak " +"için G10 ve G11 komutlarını kullanır. Bu yalnızca son Marlin'de " +"desteklenmektedir." + +msgid "Show auto-calibration marks" +msgstr "Otomatik kalibrasyon işaretlerini göster" + +msgid "Seam position" +msgstr "Dikiş konumu" + +msgid "The start position to print each part of outer wall" +msgstr "Dış duvarın her bir parçasını yazdırmak için başlangıç konumu" + +msgid "Nearest" +msgstr "En yakın" + +msgid "Aligned" +msgstr "Hizalı" + +msgid "Back" +msgstr "Arka" + +msgid "Random" +msgstr "Rastgele" + +msgid "Staggered inner seams" +msgstr "Kademeli iç dikişler" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" +"Bu seçenek, iç dikişlerin derinliklerine göre geriye doğru kaydırılarak " +"zikzak desen oluşturulmasına neden olur." + +msgid "Seam gap" +msgstr "Dikiş boşluğu" + +msgid "" +"In order to reduce the visibility of the seam in a closed loop extrusion, " +"the loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the " +"current extruder diameter. The default value for this parameter is 10%." +msgstr "" +"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü " +"kesintiye uğrar ve belirli bir miktarda kısaltılır.\n" +"Bu miktar milimetre cinsinden veya mevcut ekstruder çapının yüzdesi olarak " +"belirtilebilir. Bu parametrenin varsayılan değeri %10'dur." + +msgid "Role base wipe speed" +msgstr "Otomatik 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." + +msgid "Wipe on loops" +msgstr "Döngülerde Temizleme" + +msgid "" +"To minimize the visibility of the seam in a closed loop extrusion, a small " +"inward movement is executed before the extruder leaves the loop." +msgstr "" +"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü en aza indirmek için, " +"ekstrüder döngüden ayrılmadan önce içeriye doğru küçük bir hareket " +"gerçekleştirilir." + +msgid "Wipe speed" +msgstr "Temizleme hızı" + +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 "" +"Temizleme hızı, bu konfigürasyonda belirtilen hız ayarına göre belirlenir. " +"Değer yüzde olarak ifade edilirse (örn. %80), yukarıdaki ilerleme hızı " +"ayarına göre hesaplanır. Bu parametrenin varsayılan değeri %80'dir" + +msgid "Skirt distance" +msgstr "Etek mesafesi" + +msgid "Distance from skirt to brim or object" +msgstr "Etekten kenara veya nesneye olan mesafe" + +msgid "Skirt height" +msgstr "Etek yüksekliği" + +msgid "How many layers of skirt. Usually only one layer" +msgstr "Etek katman sayısı. Genellikle tek katman" + +msgid "Skirt loops" +msgstr "Etek Sayısı" + +msgid "Number of loops for the skirt. Zero means disabling skirt" +msgstr "" +"Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" + +msgid "Skirt speed" +msgstr "Etek hızı" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" +"Eteğin hızı, mm/s cinsinden. Sıfır, varsayılan katman ekstrüzyon hızının " +"kullanılması anlamına gelir." + +msgid "" +"The printing speed in exported gcode will be slowed down, when the estimated " +"layer time is shorter than this value, to get better cooling for these layers" +msgstr "" +"Tahmini katman süresi bu değerden kısa olduğunda, bu katmanlar için daha iyi " +"soğutma sağlamak amacıyla, dışa aktarılan gcode'daki yazdırma hızı " +"yavaşlatılacaktır" + +msgid "Minimum sparse infill threshold" +msgstr "Minimum seyrek dolgu" + +msgid "" +"Sparse infill area which is smaller than threshold value is replaced by " +"internal solid infill" +msgstr "" +"Eşik değerinden küçük olan seyrek dolgu alanı, yerini iç katı dolguya " +"bırakmıştır" + +msgid "" +"Line width of internal solid infill. If expressed as a %, it will be " +"computed over the nozzle diameter." +msgstr "" +"İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " +"üzerinden hesaplanacaktır." + +msgid "Speed of internal solid infill, not the top and bottom surface" +msgstr "Üst ve alt yüzeyin değil, iç katı dolgunun hızı" + +msgid "Spiral vase" +msgstr "Sarmal vazo" + +msgid "" +"Spiralize 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 "" +"Spiralleştirme, dış konturun z hareketlerini yumuşatır. Ve katı bir modeli, " +"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan " +"son modelde dikiş yok" + +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, prime tower is required for smooth mode to " +"wipe nozzle." +msgstr "" +"Düzgün veya geleneksel mod seçilirse her baskı için bir hızlandırılmış video " +"oluşturulacaktır. Her katman basıldıktan sonra oda kamerasıyla anlık görüntü " +"alınır. Bu anlık görüntülerin tümü, yazdırma tamamlandığında hızlandırılmış " +"bir video halinde birleştirilir. Düzgün modu seçilirse, her katman " +"yazdırıldıktan sonra araç kafası fazla kanala hareket edecek ve ardından bir " +"anlık görüntü alacaktır. Anlık görüntü alma işlemi sırasında eriyen filament " +"nozülden sızabileceğinden, nozulu silmek için düzgün modun kullanılması için " +"prime tower gereklidir." + +msgid "Traditional" +msgstr "Geleneksel" + +msgid "Temperature variation" +msgstr "Sıcaklık değişimi" + +msgid "Start G-code" +msgstr "Başlangıç G Kodu" + +msgid "Start G-code when start the whole printing" +msgstr "Baskı başladığında çalışacak G Kodu" + +msgid "Start G-code when start the printing of this filament" +msgstr "Bu filament ile baskı başladığında çalıştırılacak G-Kod" + +msgid "Single Extruder Multi Material" +msgstr "Tek Ekstruder Çoklu Malzeme" + +msgid "Use single nozzle to print multi filament" +msgstr "Çoklu filament basmak için tek nozul kullan" + +msgid "Purge in prime tower" +msgstr "Prime Tower'da temizlik" + +msgid "Purge remaining filament into prime tower" +msgstr "Kalan filamenti Prime Tower'da boşalt" + +msgid "Enable filament ramming" +msgstr "Filament sıkıştırmayı etkinleştir" + +msgid "No sparse layers (EXPERIMENTAL)" +msgstr "Seyrek katman yok (DENEYSEL)" + +msgid "" +"If enabled, the wipe tower will not be printed on layers with no " +"toolchanges. On layers with a toolchange, extruder will travel downward to " +"print the wipe tower. User is responsible for ensuring there is no collision " +"with the print." +msgstr "" +"Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda " +"yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstrüder silme kulesini " +"yazdırmak için aşağı doğru hareket edecektir. Baskı ile çarpışma olmamasını " +"sağlamak kullanıcının sorumluluğundadır." + +msgid "Prime all printing extruders" +msgstr "Tüm ekstruderleri temizle" + +msgid "" +"If enabled, all printing extruders will be primed at the front edge of the " +"print bed at the start of the print." +msgstr "" +"Etkinleştirilirse, tüm baskı ekstrüderleri baskının başlangıcında baskı " +"yatağının ön kenarında temizlenecektir." + +msgid "Slice gap closing radius" +msgstr "Dilim aralığı kapanma yarıçapı" + +msgid "" +"Cracks smaller than 2x gap closing radius are being filled during the " +"triangle mesh slicing. The gap closing operation may reduce the final print " +"resolution, therefore it is advisable to keep the value reasonably low." +msgstr "" +"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük " +"çatlaklar doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " +"düşürebilir, bu nedenle değerin oldukça düşük tutulması tavsiye edilir." + +msgid "Slicing Mode" +msgstr "Dilimleme Modu" + +msgid "" +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " +"close all holes in the model." +msgstr "" +"3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki " +"tüm delikleri kapatmak için \"Delikleri kapat\"ı kullanın." + +msgid "Regular" +msgstr "Düzenli" + +msgid "Even-odd" +msgstr "Tek çift" + +msgid "Close holes" +msgstr "Delikleri kapat" + +msgid "Enable support" +msgstr "Desteği etkinleştir" + +msgid "Enable support generation." +msgstr "Destek oluşturmayı etkinleştir." + +msgid "" +"normal(auto) and tree(auto) is used to generate support automatically. If " +"normal(manual) or tree(manual) is selected, only support enforcers are " +"generated" +msgstr "" +"desteği otomatik olarak oluşturmak için normal(otomatik) ve ağaç(otomatik) " +"kullanılır. Normal(manuel) veya ağaç(manuel) seçilirse yalnızca destek " +"uygulayıcıları oluşturulur" + +msgid "normal(auto)" +msgstr "normal(otomatik)" + +msgid "tree(auto)" +msgstr "ağaç(otomatik)" + +msgid "normal(manual)" +msgstr "normal(manuel)" + +msgid "tree(manual)" +msgstr "ağaç(manuel)" + +msgid "Support/object xy distance" +msgstr "Destek/nesne xy mesafesi" + +msgid "XY separation between an object and its support" +msgstr "Bir nesne ile desteği arasındaki XY ayrımı" + +msgid "Pattern angle" +msgstr "Desen açısı" + +msgid "Use this setting to rotate the support pattern on the horizontal plane." +msgstr "Destek desenini yatay düzlemde döndürmek için bu ayarı kullanın." + +msgid "On build plate only" +msgstr "Yalnızca baskı plakasında" + +msgid "Don't create support on model surface, only on build plate" +msgstr "Model yüzeyinde destek oluşturmayın, yalnızca baskı plakasında" + +msgid "Support critical regions only" +msgstr "Yalnızca kritik bölgeleri destekleyin" + +msgid "" +"Only create support for critical regions including sharp tail, cantilever, " +"etc." +msgstr "" +"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek " +"oluşturun." + +msgid "Remove small overhangs" +msgstr "Küçük çıkıntıları kaldır" + +msgid "Remove small overhangs that possibly need no supports." +msgstr "Muhtemelen desteğe ihtiyaç duymayan küçük çıkıntıları kaldırın." + +msgid "Top Z distance" +msgstr "Üst Z mesafesi" + +msgid "The z gap between the top support interface and object" +msgstr "Üst destek arayüzü ile nesne arasındaki z boşluğu" + +msgid "Bottom Z distance" +msgstr "Alt Z mesafesi" + +msgid "The z gap between the bottom support interface and object" +msgstr "Alt destek arayüzü ile nesne arasındaki z boşluğu" + +msgid "Support/raft base" +msgstr "Destek/raft tabanı" + +msgid "" +"Filament to print support base and raft. \"Default\" means no specific " +"filament for support and current filament is used" +msgstr "" +"Destek tabanını ve salı yazdırmak için filament. \"Varsayılan\", destek için " +"belirli bir filamanın olmadığı ve mevcut filamanın kullanıldığı anlamına " +"gelir" + +msgid "" +"Line width of support. If expressed as a %, it will be computed over the " +"nozzle diameter." +msgstr "" +"Desteğin çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " +"hesaplanacaktır." + +msgid "Interface use loop pattern" +msgstr "Arayüz kullanım döngüsü modeli" + +msgid "" +"Cover the top contact layer of the supports with loops. Disabled by default." +msgstr "" +"Desteklerin üst temas katmanını ilmeklerle örtün. Varsayılan olarak devre " +"dışıdır." + +msgid "Support/raft interface" +msgstr "Destek/raft arayüzü" + +msgid "" +"Filament to print support interface. \"Default\" means no specific filament " +"for support interface and current filament is used" +msgstr "" +"Filament baskı desteği arayüzü. \"Varsayılan\", destek arayüzü için özel bir " +"filamanın olmadığı ve mevcut filamanın kullanıldığı anlamına gelir" + +msgid "Top interface layers" +msgstr "Üst arayüz katmanları" + +msgid "Number of top interface layers" +msgstr "Üst arayüz katmanlarının sayısı" + +msgid "Bottom interface layers" +msgstr "Alt arayüz katmanları" + +msgid "Top interface spacing" +msgstr "Üst arayüz aralığı" + +msgid "Spacing of interface lines. Zero means solid interface" +msgstr "Arayüz çizgilerinin aralığı. Sıfır, sağlam arayüz anlamına gelir" + +msgid "Bottom interface spacing" +msgstr "Alt arayüz aralığı" + +msgid "Spacing of bottom interface lines. Zero means solid interface" +msgstr "Alt arayüz çizgilerinin aralığı. Sıfır, sağlam arayüz anlamına gelir" + +msgid "Speed of support interface" +msgstr "Destek arayüzünün hızı" + +msgid "Base pattern" +msgstr "Destek Deseni" + +msgid "Line pattern of support" +msgstr "Desteğin çizgi deseni" + +msgid "Rectilinear grid" +msgstr "Doğrusal ızgara" + +msgid "Hollow" +msgstr "Oyuk" + +msgid "Interface pattern" +msgstr "Arayüz deseni" + +msgid "" +"Line pattern of support interface. Default pattern for non-soluble support " +"interface is Rectilinear, while default pattern for soluble support " +"interface is Concentric" +msgstr "" +"Destek arayüzünün çizgi deseni. Çözünmeyen destek arayüzü için varsayılan " +"model Doğrusaldır, çözünebilir destek arayüzü için varsayılan model ise " +"Eşmerkezlidir" + +msgid "Rectilinear Interlaced" +msgstr "Doğrusal Taramalı" + +msgid "Base pattern spacing" +msgstr "Destek desen aralığı" + +msgid "Spacing between support lines" +msgstr "Destek hatları arasındaki boşluk" + +msgid "Normal Support expansion" +msgstr "Normal Destek genişletmesi" + +msgid "Expand (+) or shrink (-) the horizontal span of normal support" +msgstr "Normal desteğin yatay açıklığını genişletin (+) veya daraltın (-)" + +msgid "Speed of support" +msgstr "Destek hızı" + +msgid "" +"Style and shape of the support. For normal support, projecting the supports " +"into a regular grid will create more stable supports (default), while snug " +"support towers will save material and reduce object scarring.\n" +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." +msgstr "" + +msgid "Snug" +msgstr "Snug" + +msgid "Tree Slim" +msgstr "İnce Ağaç" + +msgid "Tree Strong" +msgstr "Güçlü Ağaç" + +msgid "Tree Hybrid" +msgstr "Hibrit Ağaç" + +msgid "Organic" +msgstr "Organik" + +msgid "Independent support layer height" +msgstr "Bağımsız destek katmanı yüksekliği" + +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 "" +"Destek katmanı, nesne katmanından bağımsız olarak katman yüksekliğini " +"kullanır. Bu, z aralığının özelleştirilmesine destek olmak ve yazdırma " +"süresinden tasarruf etmek içindir. Prime tower etkinleştirildiğinde bu " +"seçenek geçersiz olacaktır." + +msgid "Threshold angle" +msgstr "Destek açısı" + +msgid "" +"Support will be generated for overhangs whose slope angle is below the " +"threshold." +msgstr "Eğim açısı eşiğin altında olan çıkmalar için destek oluşturulacaktır." + +msgid "Tree support branch angle" +msgstr "Ağaç desteği dal açısı" + +msgid "" +"This setting determines the maximum overhang angle that t he branches of " +"tree support allowed to make.If the angle is increased, the branches can be " +"printed more horizontally, allowing them to reach farther." +msgstr "" +"Bu ayar, ağaç desteğinin dallarının oluşmasına izin verilen maksimum çıkıntı " +"açısını belirler. Açı artırılırsa, dallar daha yatay olarak basılabilir ve " +"daha uzağa ulaşır." + +msgid "Preferred Branch Angle" +msgstr "Tercih Edilen Dal Açısı" + +#. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" +msgid "" +"The preferred angle of the branches, when they do not have to avoid the " +"model. Use a lower angle to make them more vertical and more stable. Use a " +"higher angle for branches to merge faster." +msgstr "" +"Modelden kaçınmak zorunda olmadıklarında dalların tercih edilen açısı. Daha " +"dikey ve daha dengeli olmaları için daha düşük bir açı kullanın. Dalların " +"daha hızlı birleşmesi için daha yüksek bir açı kullanın." + +msgid "Tree support branch distance" +msgstr "Ağaç destek dal mesafesi" + +msgid "" +"This setting determines the distance between neighboring tree support nodes." +msgstr "Bu ayar, komşu ağaç destek düğümleri arasındaki mesafeyi belirler." + +msgid "Branch Density" +msgstr "Dal Yoğunluğu" + +#. TRN PrintSettings: "Organic supports" > "Branch Density" +msgid "" +"Adjusts the density of the support structure used to generate the tips of " +"the branches. A higher value results in better overhangs but the supports " +"are harder to remove, thus it is recommended to enable top support " +"interfaces instead of a high branch density value if dense interfaces are " +"needed." +msgstr "" +"Dalların uçlarını oluşturmak için kullanılan destek yapısının yoğunluğunu " +"ayarlar. Daha yüksek bir değer daha iyi çıkıntılarla sonuçlanır, ancak " +"desteklerin çıkarılması daha zordur, bu nedenle yoğun arayüzler gerekiyorsa " +"yüksek bir dal yoğunluğu değeri yerine üst destek arayüzlerinin " +"etkinleştirilmesi önerilir." + +msgid "Adaptive layer height" +msgstr "Uyarlanabilir katman yüksekliği" + +msgid "" +"Enabling this option means the height of tree support layer except the " +"first will be automatically calculated " +msgstr "" +"Bu seçeneğin etkinleştirilmesi, ilki hariç ağaç destek katmanının " +"yüksekliğinin otomatik olarak hesaplanacağı anlamına gelir " + +msgid "Auto brim width" +msgstr "Otomatik kenar genişliği" + +msgid "" +"Enabling this option means the width of the brim for tree support will be " +"automatically calculated" +msgstr "" +"Bu seçeneğin etkinleştirilmesi, ağaç desteğinin kenar genişliğinin otomatik " +"olarak hesaplanacağı anlamına gelir" + +msgid "Tree support brim width" +msgstr "Ağaç desteği kenar genişliği" + +msgid "Distance from tree branch to the outermost brim line" +msgstr "Ağaç dalından en dış kenar çizgisine kadar olan mesafe" + +msgid "Tip Diameter" +msgstr "Uç Çapı" + +#. TRN PrintSettings: "Organic supports" > "Tip Diameter" +msgid "Branch tip diameter for organic supports." +msgstr "Organik destekler için dal ucu çapı." + +msgid "Tree support branch diameter" +msgstr "Ağaç destek dalı çapı" + +msgid "This setting determines the initial diameter of support nodes." +msgstr "Bu ayar, destek düğümlerinin başlangıç çapını belirler." + +#. TRN PrintSettings: #lmFIXME +msgid "Branch Diameter Angle" +msgstr "Dal Çapı Açısı" + +#. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" +msgid "" +"The angle of the branches' diameter as they gradually become thicker towards " +"the bottom. An angle of 0 will cause the branches to have uniform thickness " +"over their length. A bit of an angle can increase stability of the organic " +"support." +msgstr "" +"Aşağıya doğru giderek kalınlaşan dalların çapının açısı. Açının 0 olması, " +"dalların uzunlukları boyunca eşit kalınlığa sahip olmasına neden olacaktır. " +"Birazcık açı organik desteğin stabilitesini artırabilir." + +msgid "Branch Diameter with double walls" +msgstr "Çift duvarlı dal çapı" + +#. TRN PrintSettings: "Organic supports" > "Branch Diameter" +msgid "" +"Branches with area larger than the area of a circle of this diameter will be " +"printed with double walls for stability. Set this value to zero for no " +"double walls." +msgstr "" +"Bu çaptaki bir dairenin alanından daha büyük alana sahip dallar, stabilite " +"için çift duvarlı olarak basılacaktır. Çift duvar olmaması için bu değeri " +"sıfır olarak ayarlayın." + +msgid "Tree support wall loops" +msgstr "Ağaç desteği duvar döngüleri" + +msgid "This setting specify the count of walls around tree support" +msgstr "Bu ayar, ağaç desteğinin etrafındaki duvarların sayısını belirtir" + +msgid "Tree support with infill" +msgstr "Dolgulu ağaç desteği" + +msgid "" +"This setting specifies whether to add infill inside large hollows of tree " +"support" +msgstr "" +"Bu ayar, ağaç desteğinin büyük oyuklarının içine dolgu eklenip " +"eklenmeyeceğini belirtir" + +msgid "Chamber temperature" +msgstr "Bölme sıcaklığı" + +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" +msgstr "" + +msgid "Nozzle temperature for layers after the initial one" +msgstr "İlk katmandan sonraki katmanlar için nozül sıcaklığı" + +msgid "Detect thin wall" +msgstr "İnce duvarı algıla" + +msgid "" +"Detect thin wall which can't contain two line width. And use single line to " +"print. Maybe printed not very well, because it's not closed loop" +msgstr "" +"İki çizgi genişliğini içeremeyen ince duvarı tespit edin. Ve yazdırmak için " +"tek satır kullanın. Kapalı döngü olmadığından pek iyi basılmamış olabilir" + +msgid "" +"This gcode is inserted when change filament, including T command to trigger " +"tool change" +msgstr "" +"Bu gcode, takım değişimini tetiklemek için T komutu da dahil olmak üzere " +"filament değiştirildiğinde eklenir" + +msgid "" +"Line width for top surfaces. If expressed as a %, it will be computed over " +"the nozzle diameter." +msgstr "" +"Üst yüzeyler için çizgi genişliği. % olarak ifade edilirse Nozul çapı " +"üzerinden hesaplanacaktır." + +msgid "Speed of top surface infill which is solid" +msgstr "Sağlam üst yüzey dolgusunun hızı" + +msgid "Top shell layers" +msgstr "Üst katmanlar" + +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 top shell " +"thickness, the top shell layers will be increased" +msgstr "" +"Bu, üst yüzey katmanı da dahil olmak üzere üst kabuğun katı katmanlarının " +"sayısıdır. Bu değerle hesaplanan kalınlık üst kabuk kalınlığından ince " +"olduğunda üst kabuk katmanları artırılacaktır" + +msgid "Top solid layers" +msgstr "Üst katı katmanlar" + +msgid "Top shell thickness" +msgstr "Üst katman kalınlığı" + +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 shell when layer height is small. 0 means that this setting " +"is disabled and thickness of top shell is absolutely determained by top " +"shell layers" +msgstr "" +"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " +"ise dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " +"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " +"ayarın devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk " +"katmanları tarafından belirlendiği anlamına gelir" + +msgid "Speed of travel which is faster and without extrusion" +msgstr "Daha hızlı ve ekstrüzyonsuz seyahat hızı" + +msgid "Wipe while retracting" +msgstr "Geri çekme esnasında temizlik" + +msgid "" +"Move nozzle along the last extrusion path when retracting to clean leaked " +"material on nozzle. This can minimize blob when print new part after travel" +msgstr "" +"Nozul üzerinde sızan malzemeyi temizlemek için geri çekerken Nozulu son " +"ekstrüzyon yolu boyunca hareket ettirin. Bu işlem yeni parça yazdırırken " +"damlamayı en aza indirebilir" + +msgid "Wipe Distance" +msgstr "Temizleme Mesafesi" + +msgid "" +"Discribe how long the nozzle will move along the last path when retracting" +msgstr "" +"Geri çekme esnasında nozulun son hat boyunca ne kadar süre hareket edeceğini " +"belirtin" + +msgid "" +"The wiping tower can be used to clean up the residue on the nozzle and " +"stabilize the chamber pressure inside the nozzle, in order to avoid " +"appearance defects when printing objects." +msgstr "" +"Temizleme kulesi, nesneleri yazdırırken görünüm kusurlarını önlemek amacıyla " +"nozul üzerindeki kalıntıları temizlemek ve nozul içindeki oda basıncını " +"dengelemek için kullanılabilir." + +msgid "Purging volumes" +msgstr "Hacimlerin temizlenmesi" + +msgid "Flush multiplier" +msgstr "Temizleme çarpanı" + +msgid "" +"The actual flushing volumes is equal to the flush multiplier multiplied by " +"the flushing volumes in the table." +msgstr "" +"Gerçek temizleme hacimleri, tablodaki temizleme hacimleri ile temizleme " +"çarpanının çarpımına eşittir." + +msgid "Prime volume" +msgstr "Ana hacim" + +msgid "The volume of material to prime extruder on tower." +msgstr "Kule üzerindeki ana ekstrüder malzeme hacmi." + +msgid "Width" +msgstr "Genişlik" + +msgid "Width of prime tower" +msgstr "Prime tower genişliği" + +msgid "Wipe tower rotation angle" +msgstr "Silme kulesi dönüş açısı" + +msgid "Wipe tower rotation angle with respect to x-axis." +msgstr "X eksenine göre silme kulesi dönüş açısı." + +msgid "Stabilization cone apex angle" +msgstr "Stabilizasyon konisi tepe açısı" + +msgid "" +"Angle at the apex of the cone that is used to stabilize the wipe tower. " +"Larger angle means wider base." +msgstr "" +"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki " +"açı. Daha büyük açı daha geniş taban anlamına gelir." + +msgid "Wipe tower purge lines spacing" +msgstr "Silme kulesi temizleme hatları aralığı" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Silme kulesindeki boşaltma hatlarının aralığı." + +msgid "Wipe tower extruder" +msgstr "Silme kulesi ekstrüderi" + +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 "" +"Silme kulesinin çevresini yazdırırken kullanılacak ekstrüder. Mevcut olanı " +"kullanmak için 0 olarak ayarlayın (çözünmeyen tercih edilir)." + +msgid "Purging volumes - load/unload volumes" +msgstr "Hacimleri temizleme - hacimleri yükleme/boşaltma" + +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 "" +"Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için " +"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme " +"hacimlerinin oluşturulmasını basitleştirmek için kullanılır." + +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 seen " +"outside. It will not take effect, unless the prime tower is enabled." +msgstr "" +"Filament değişiminden sonra temizleme, nesnelerin dolgularının içinde " +"yapılacaktır. Bu, atık miktarını azaltabilir ve baskı süresini kısaltabilir. " +"Duvarlar şeffaf filament ile basılmışsa, karışık renkli dolgu dışarıda " +"görülecektir. Ana kule etkinleştirilmediği sürece etkili olmayacaktır." + +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 the prime tower is enabled." +msgstr "" +"Filament değişiminden sonra temizleme, nesnelerin desteğinin içinde " +"yapılacaktır. Bu, atık miktarını azaltabilir ve baskı süresini kısaltabilir. " +"Prime tower etkinleştirilmediği sürece etkili olmayacaktır." + +msgid "" +"This object will be used to purge the nozzle after a filament change to save " +"filament and decrease the print time. Colours of the objects will be mixed " +"as a result. It will not take effect, unless the prime tower is enabled." +msgstr "" +"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için " +"filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " +"etkinleştirilmediği sürece etkili olmayacaktır." + +msgid "Maximal bridging distance" +msgstr "Maksimum köprüleme mesafesi" + +msgid "Maximal distance between supports on sparse infill sections." +msgstr "" +"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için bir " +"filament değişiminden sonra nozülü temizlemek için kullanılacaktır. Sonuç " +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " +"etkinleştirilmediği sürece etkili olmayacaktır." + +msgid "X-Y hole compensation" +msgstr "X-Y delik dengeleme" + +msgid "" +"Holes of object will be grown or shrunk in XY plane by the configured value. " +"Positive value makes holes bigger. Negative value makes holes smaller. This " +"function is used to adjust size slightly when the object has assembling issue" +msgstr "" +"Nesnenin delikleri XY düzleminde yapılandırılan değer kadar büyütülür veya " +"küçültülür. Pozitif değer delikleri büyütür. Negatif değer delikleri " +"küçültür. Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe " +"ayarlamak için kullanılır" + +msgid "X-Y contour compensation" +msgstr "X-Y kontur telafisi" + +msgid "" +"Contour of object will be grown or shrunk in XY plane by the configured " +"value. Positive value makes contour bigger. Negative value makes contour " +"smaller. This function is used to adjust size slightly when the object has " +"assembling issue" +msgstr "" +"Nesnenin konturu XY düzleminde yapılandırılan değer kadar büyütülür veya " +"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. " +"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " +"kullanılır" + +msgid "G-code thumbnails" +msgstr "G-kodu küçük resimleri" + +msgid "" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " +"following format: \"XxY, XxY, ...\"" +msgstr "" +"Resim boyutları aşağıdaki formatta bir .gcode ve .sl1 / .sl1s dosyalarında " +"saklanacaktır: \"XxY, XxY, ...\"" + +msgid "Use relative E distances" +msgstr "Göreceli (relative) E mesafelerini kullan" + +msgid "" +"Relative extrusion is recommended when using \"label_objects\" option.Some " +"extruders work better with this option unckecked (absolute extrusion mode). " +"Wipe tower is only compatible with relative mode. It is always enabled on " +"BambuLab printers. Default is checked" +msgstr "" +"\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. Bazı " +"ekstrüderler bu seçeneğin işareti kaldırıldığında (mutlak ekstrüzyon modu) " +"daha iyi çalışır. Temizleme kulesi yalnızca göreceli modla uyumludur. " +"BambuLab yazıcılarında her zaman etkindir. Varsayılan olarak işaretlendi" + +msgid "" +"Classic wall generator produces walls with constant extrusion width and for " +"very thin areas is used gap-fill. Arachne engine produces walls with " +"variable extrusion width" +msgstr "" +"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir " +"ve çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " +"ekstrüzyon genişliğine sahip duvarlar üretir" + +msgid "Classic" +msgstr "Klasik" + +msgid "Arachne" +msgstr "Arachne" + +msgid "Wall transition length" +msgstr "Duvar geçiş uzunluğu" + +msgid "" +"When transitioning between different numbers of walls as the part becomes " +"thinner, a certain amount of space is allotted to split or join the wall " +"segments. It's expressed as a percentage over nozzle diameter" +msgstr "" +"Parça inceldikçe farklı sayıdaki duvarlar arasında geçiş yaparken, duvar " +"parçalarını bölmek veya birleştirmek için belirli bir miktar alan ayrılır. " +"Nozul çapına göre yüzde olarak ifade edilir" + +msgid "Wall transitioning filter margin" +msgstr "Duvar geçiş filtresi oranı" + +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 "" +"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu " +"kenar boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " +"genişliği + kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri " +"aralığını genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da " +"ekstrüzyonun başlama/durma sayısını ve seyahat süresini azaltır. Bununla " +"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı " +"ekstrüzyon sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade " +"edilir" + +msgid "Wall transitioning threshold angle" +msgstr "Duvar geçiş açısı" + +msgid "" +"When to create transitions between even and odd numbers of walls. A wedge " +"shape with an angle greater than this setting will not have transitions and " +"no walls will be printed in the center to fill the remaining space. Reducing " +"this setting reduces the number and length of these center walls, but may " +"leave gaps or overextrude" +msgstr "" +"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? " +"Bu ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak " +"ve kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu " +"ayarın düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır " +"ancak boşluklara veya aşırı çıkıntıya neden olabilir" + +msgid "Wall distribution count" +msgstr "Duvar dağılım sayısı" + +msgid "" +"The number of walls, counted from the center, over which the variation needs " +"to be spread. Lower values mean that the outer walls don't change in width" +msgstr "" +"Varyasyonun yayılması gereken, merkezden sayılan duvar sayısı. Daha düşük " +"değerler, dış duvarların genişliğinin değişmediği anlamına gelir" + +msgid "Minimum feature size" +msgstr "Minimum özellik boyutu" + +msgid "" +"Minimum thickness of thin features. Model features that are thinner than " +"this value will not be printed, while features thicker than the Minimum " +"feature size will be widened to the Minimum wall width. It's expressed as a " +"percentage over nozzle diameter" +msgstr "" +"İnce özellikler için minimum kalınlık. Bu değerden daha ince olan model " +"özellikleri yazdırılmayacak, Minimum özellik boyutundan daha kalın olan " +"özellikler ise Minimum duvar genişliğine genişletilecektir. Nozul çapı " +"üzerinden yüzde olarak ifade edilir" + +msgid "First layer minimum wall width" +msgstr "İlk katman minimum duvar genişliği" + +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 "" +"İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile " +"aynı boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " +"beklenmektedir." + +msgid "Minimum wall width" +msgstr "Minimum duvar genişliği" + +msgid "" +"Width of the wall that will replace thin features (according to the Minimum " +"feature size) of the model. If the Minimum wall width is thinner than the " +"thickness of the feature, the wall will become as thick as the feature " +"itself. It's expressed as a percentage over nozzle diameter" +msgstr "" +"Modelin ince özelliklerinin yerini alacak duvarın genişliği (Minimum özellik " +"boyutuna göre). Minimum duvar genişliği özelliğin kalınlığından daha inceyse " +"duvar, özelliğin kendisi kadar kalın olacaktır. Nozul çapına göre yüzde " +"olarak ifade edilir" + +msgid "Detect narrow internal solid infill" +msgstr "Dar iç katı dolguyu tespit et" + +msgid "" +"This option will auto detect narrow internal solid infill area. If enabled, " +"concentric pattern will be used for the area to speed printing up. " +"Otherwise, rectilinear pattern is used defaultly." +msgstr "" +"Bu seçenek dar dahili katı dolgu alanını otomatik olarak algılayacaktır. " +"Etkinleştirilirse, yazdırmayı hızlandırmak amacıyla alanda eşmerkezli desen " +"kullanılacaktır. Aksi takdirde varsayılan olarak doğrusal desen kullanılır." + +msgid "invalid value " +msgstr "geçersiz değer " + +#, c-format, boost-format +msgid " doesn't work at 100%% density " +msgstr " 100%% yoğunlukta çalışmıyor " + +msgid "Invalid value when spiral vase mode is enabled: " +msgstr "Spiral vazo modu etkinleştirildiğinde geçersiz değer: " + +msgid "too large line width " +msgstr "çok büyük çizgi genişliği " + +msgid " not in range " +msgstr " aralıkta değil " + +msgid "Export 3MF" +msgstr "3MF'yi dışa aktar" + +msgid "Export project as 3MF." +msgstr "Projeyi 3MF olarak dışa aktarın." + +msgid "Export slicing data" +msgstr "Dilimleme verilerini dışa aktar" + +msgid "Export slicing data to a folder." +msgstr "Dilimleme verilerini bir klasöre aktarın." + +msgid "Load slicing data" +msgstr "Dilimleme verilerini yükle" + +msgid "Load cached slicing data from directory" +msgstr "Önbelleğe alınmış dilimleme verilerini dizinden yükle" + +msgid "Export STL" +msgstr "STL'yi dışa aktar" + +msgid "Export the objects as multiple STL." +msgstr "Nesneleri birden çok STL olarak dışa aktarın." + +msgid "Slice" +msgstr "Dilimle" + +msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" +msgstr "Plakaları dilimleyin: 0-tüm plakalar, i-plaka i, diğerleri-geçersiz" + +msgid "Show command help." +msgstr "Komut yardımını göster." + +msgid "UpToDate" +msgstr "Güncel" + +msgid "Update the configs values of 3mf to latest." +msgstr "3mf'nin yapılandırma değerlerini en son sürüme güncelleyin." + +msgid "Load default filaments" +msgstr "Varsayılan filamentleri yükle" + +msgid "Load first filament as default for those not loaded" +msgstr "Yüklenmeyenler için ilk filamanı varsayılan olarak yükleyin" + +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + +msgid "mtcpp" +msgstr "mtcpp" + +msgid "max triangle count per plate for slicing." +msgstr "dilimleme için plaka başına maksimum üçgen sayısı." + +msgid "mstpp" +msgstr "mstpp" + +msgid "max slicing time per plate in seconds." +msgstr "saniye cinsinden plaka başına maksimum dilimleme süresi." + +msgid "No check" +msgstr "Kontrol yok" + +msgid "Do not run any validity checks, such as gcode path conflicts check." +msgstr "" +"Gcode yol çakışmaları kontrolü gibi herhangi bir geçerlilik kontrolü " +"çalıştırmayın." + +msgid "Normative check" +msgstr "Normatif kontrol" + +msgid "Check the normative items." +msgstr "Normatif maddeleri kontrol edin." + +msgid "Output Model Info" +msgstr "Çıktı Model Bilgileri" + +msgid "Output the model's information." +msgstr "Modelin bilgilerini çıktıla." + +msgid "Export Settings" +msgstr "Dışa Aktarma Ayarları" + +msgid "Export settings to a file." +msgstr "Ayarları bir dosyaya aktarın." + +msgid "Send progress to pipe" +msgstr "İlerlemeyi kanala gönder" + +msgid "Send progress to pipe." +msgstr "İlerlemeyi boruya gönder." + +msgid "Arrange Options" +msgstr "Hizalama Seçenekleri" + +msgid "Arrange options: 0-disable, 1-enable, others-auto" +msgstr "" +"Hizalama seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğer-otomatik" + +msgid "Repetions count" +msgstr "Tekrar sayısı" + +msgid "Repetions count of the whole model" +msgstr "Tüm modelin tekrar sayısı" + +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + +msgid "Convert Unit" +msgstr "Birimi Dönüştür" + +msgid "Convert the units of model" +msgstr "Modelin birimlerini dönüştür" + +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" + +msgid "Scale the model by a float factor" +msgstr "Modeli kayan nokta faktörüne göre ölçeklendirin" + +msgid "Load General Settings" +msgstr "Genel Ayarları Yükle" + +msgid "Load process/machine settings from the specified file" +msgstr "Belirtilen dosyadan proses/yazıcıayarlarını yükleyin" + +msgid "Load Filament Settings" +msgstr "Filament Ayarlarını Yükle" + +msgid "Load filament settings from the specified file list" +msgstr "Filament ayarlarını belirtilen dosya listesinden yükleyin" + +msgid "Skip Objects" +msgstr "Nesneleri Atla" + +msgid "Skip some objects in this print" +msgstr "Bu baskıdaki bazı nesneleri atla" + +msgid "load uptodate process/machine settings when using uptodate" +msgstr "güncellemeyi kullanırken güncelleme işlemi/yazıcıayarlarını yükle" + +msgid "" +"load uptodate process/machine settings from the specified file when using " +"uptodate" +msgstr "" +"güncellemeyi kullanırken belirtilen dosyadan güncel işlem/yazıcıayarlarını " +"yükle" + +msgid "Data directory" +msgstr "Veri dizini" + +msgid "" +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." +msgstr "" +"Ayarları verilen dizine yükleyin ve saklayın. Bu, farklı profilleri korumak " +"veya bir ağ depolama birimindeki yapılandırmaları dahil etmek için " +"kullanışlıdır." + +msgid "Output directory" +msgstr "Çıkış dizini" + +msgid "Output directory for the exported files." +msgstr "Dışa aktarılan dosyalar için çıkış dizini." + +msgid "Debug level" +msgstr "Hata ayıklama düzeyi" + +msgid "" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +"trace\n" +msgstr "" +"Hata ayıklama günlüğü düzeyini ayarlar. 0:önemli, 1:hata, 2:uyarı, 3:bilgi, " +"4:hata ayıklama, 5:izleme\n" + +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + +msgid "Error in zip archive" +msgstr "Zip arşivinde hata" + +msgid "Generating walls" +msgstr "Duvar oluşturma" + +msgid "Generating infill regions" +msgstr "Dolgu bölgeleri oluşturma" + +msgid "Generating infill toolpath" +msgstr "Dolgu takım yolu oluşturma" + +msgid "Detect overhangs for auto-lift" +msgstr "Otomatik kaldırma için çıkıntıları tespit edin" + +msgid "Generating support" +msgstr "Destek oluşturma" + +msgid "Checking support necessity" +msgstr "Destek gerekliliğinin kontrol edilmesi" + +msgid "floating regions" +msgstr "yayılmış bölgeler" + +msgid "floating cantilever" +msgstr "yüzen konsol" + +msgid "large overhangs" +msgstr "büyük çıkıntılar" + +#, c-format, boost-format +msgid "" +"It seems object %s has %s. Please re-orient the object or enable support " +"generation." +msgstr "" +"Görünüşe göre %s nesnesinde %s var. Lütfen nesneyi yeniden yönlendirin veya " +"destek oluşturmayı etkinleştirin." + +msgid "Optimizing toolpath" +msgstr "Takım yolunu optimize etme" + +msgid "Empty layers around bottom are replaced by nearest normal layers." +msgstr "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." + +msgid "The model has too many empty layers." +msgstr "Modelde çok fazla boş katman var." + +msgid "Slicing mesh" +msgstr "Mesh dilimleme" + +msgid "" +"No layers were detected. You might want to repair your STL file(s) or check " +"their size or thickness and retry.\n" +msgstr "" +"Hiçbir katman algılanmadı. STL dosyalarınızı onarmak veya boyutlarını veya " +"kalınlıklarını kontrol edip yeniden denemek isteyebilirsiniz.\n" + +msgid "" +"An object's XY size compensation will not be used because it is also color-" +"painted.\n" +"XY Size compensation can not be combined with color-painting." +msgstr "" +"Bir nesnenin XY boyutu telafisi , aynı zamanda renkli boyalı olduğundan " +"kullanılmayacaktır.\n" +"XY Boyut telafisi renkli boyamayla birleştirilemez." + +#, c-format, boost-format +msgid "Support: generate toolpath at layer %d" +msgstr "Destek: %d katmanında takım yolu oluştur" + +msgid "Support: detect overhangs" +msgstr "Destek: çıkıntıları tespit et" + +msgid "Support: generate contact points" +msgstr "Destek: iletişim noktaları oluştur" + +msgid "Support: propagate branches" +msgstr "Destek: dal şeklinde oluştur" + +msgid "Support: draw polygons" +msgstr "Destek: çokgen çizme" + +msgid "Support: generate toolpath" +msgstr "Destek: takım yolu oluştur" + +#, c-format, boost-format +msgid "Support: generate polygons at layer %d" +msgstr "Destek: %d katmanında çokgenler oluşturma" + +#, c-format, boost-format +msgid "Support: fix holes at layer %d" +msgstr "Destek: %d katmanındaki delikleri düzeltin" + +#, c-format, boost-format +msgid "Support: propagate branches at layer %d" +msgstr "Destek: %d katmanındaki dalları çoğalt" + +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Bilinmeyen dosya formatı. Giriş dosyası .stl, .obj, .amf(.xml) uzantılı " +"olmalıdır." + +msgid "Loading of a model file failed." +msgstr "Model dosyasının yüklenmesi başarısız oldu." + +msgid "The supplied file couldn't be read because it's empty" +msgstr "Sağlanan dosya boş olduğundan okunamadı" + +msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." +msgstr "" +"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı " +"olmalıdır." + +msgid "Canceled" +msgstr "İptal edildi" + +msgid "load_obj: failed to parse" +msgstr "load_obj: ayrıştırılamadı" + +msgid "The file contains polygons with more than 4 vertices." +msgstr "Dosya 4'ten fazla köşesi olan çokgenler içeriyor." + +msgid "The file contains polygons with less than 2 vertices." +msgstr "Dosya 2'den az köşesi olan çokgenler içeriyor." + +msgid "The file contains invalid vertex index." +msgstr "Dosya geçersiz köşe dizini içeriyor." + +msgid "This OBJ file couldn't be read because it's empty." +msgstr "Bu OBJ dosyası boş olduğundan okunamadı." + +msgid "Flow Rate Calibration" +msgstr "Akış Hızı Kalibrasyonu" + +msgid "Max Volumetric Speed Calibration" +msgstr "Maksimum Hacimsel Hız Kalibrasyonu" + +msgid "Manage Result" +msgstr "Sonucu Yönet" + +msgid "Manual Calibration" +msgstr "Manuel Kalibrasyon" + +msgid "Result can be read by human eyes." +msgstr "Sonuç insan gözüyle okunabilir." + +msgid "Auto-Calibration" +msgstr "Otomatik Kalibrasyon" + +msgid "We would use Lidar to read the calibration result" +msgstr "Kalibrasyon sonucunu okumak için Lidar'ı kullanırdık" + +msgid "Prev" +msgstr "Önceki" + +msgid "Recalibration" +msgstr "Yeniden kalibrasyon" + +msgid "Calibrate" +msgstr "Kalibre et" + +msgid "Finish" +msgstr "Bitir" + +msgid "Wiki" +msgstr "Viki" + +msgid "How to use calibration result?" +msgstr "Kalibrasyon sonucu nasıl kullanılır?" + +msgid "" +"You could change the Flow Dynamics Calibration Factor in material editing" +msgstr "" +"Malzeme düzenlemede Akış Dinamiği Kalibrasyon Faktörünü değiştirebilirsiniz" + +msgid "" +"The current firmware version of the printer does not support calibration.\n" +"Please upgrade the printer firmware." +msgstr "" +"Yazıcının mevcut ürün yazılımı sürümü kalibrasyonu desteklemiyor.\n" +"Lütfen yazıcının ürün yazılımını yükseltin." + +msgid "Calibration not supported" +msgstr "Kalibrasyon desteklenmiyor" + +msgid "Flow Dynamics" +msgstr "Akış Dinamiği" + +msgid "Flow Rate" +msgstr "Akış hızı" + +msgid "Max Volumetric Speed" +msgstr "Maksimum Hacimsel Hız" + +msgid "Please enter the name you want to save to printer." +msgstr "Lütfen yazıcıya kaydetmek istediğiniz adı girin." + +msgid "The name cannot exceed 40 characters." +msgstr "Ad 40 karakteri aşamaz." + +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + +msgid "The name cannot be empty." +msgstr "Ad boş olamaz." + +#, boost-format +msgid "The selected preset: %1% is not found." +msgstr "Seçilen ön ayar: %1% bulunamadı." + +msgid "The name cannot be the same as the system preset name." +msgstr "Ad, sistem ön ayarının adıyla aynı olamaz." + +msgid "The name is the same as another existing preset name" +msgstr "Ad, mevcut başka bir ön ayar adıyla aynı" + +msgid "create new preset failed." +msgstr "yeni ön ayar oluşturma başarısız oldu." + +msgid "" +"Are you sure to cancel the current calibration and return to the home page?" +msgstr "" +"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin " +"misiniz?" + +msgid "No Printer Connected!" +msgstr "Yazıcı Bağlı Değil!" + +msgid "Printer is not connected yet." +msgstr "Yazıcı henüz bağlanmadı." + +msgid "Please select filament to calibrate." +msgstr "Lütfen kalibre edilecek filamenti seçin." + +msgid "The input value size must be 3." +msgstr "Giriş değeri boyutu 3 olmalıdır." + +msgid "Connecting to printer..." +msgstr "Yazıcıya bağlanılıyor..." + +msgid "The failed test result has been dropped." +msgstr "Başarısız olan test sonucu düşürüldü." + +msgid "Flow Dynamics Calibration result has been saved to the printer" +msgstr "Akış Dinamiği Kalibrasyonu sonucu yazıcıya kaydedildi" + +msgid "Internal Error" +msgstr "İç hata" + +msgid "Please select at least one filament for calibration" +msgstr "Lütfen kalibrasyon için en az bir filament seçin" + +msgid "Flow rate calibration result has been saved to preset" +msgstr "Akış hızı kalibrasyon sonucu ön ayara kaydedildi" + +msgid "Max volumetric speed calibration result has been saved to preset" +msgstr "Maksimum hacimsel hız kalibrasyon sonucu ön ayara kaydedildi" + +msgid "When do you need Flow Dynamics Calibration" +msgstr "Akış Dinamiği Kalibrasyonuna ne zaman ihtiyacınız olur" + +msgid "" +"We now have added the auto-calibration for different filaments, which is " +"fully automated and the result will be saved into the printer for future " +"use. You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the " +"filament is damp;\n" +"2. if the nozzle is worn out or replaced with a new one;\n" +"3. If the max volumetric speed or print temperature is changed in the " +"filament setting." +msgstr "" +"Artık farklı filamentler için tamamen otomatik olan otomatik kalibrasyonu " +"ekledik ve sonuç ileride kullanılmak üzere yazıcıya kaydedilecek. " +"Kalibrasyonu yalnızca aşağıdaki sınırlı durumlarda yapmanız gerekir:\n" +"1. Farklı marka/modelde yeni bir filament taktıysanız veya filament " +"nemliyse;\n" +"2. Nozul aşınmışsa veya yenisiyle değiştirilmişse;\n" +"3. Filament ayarında maksimum hacimsel hız veya baskı sıcaklığı " +"değiştirilirse." + +msgid "About this calibration" +msgstr "Bu kalibrasyon hakkında" + +msgid "" +"Please find the details of Flow Dynamics Calibration from our wiki.\n" +"\n" +"Usually the calibration is unnecessary. When you start a single color/" +"material print, with the \"flow dynamics calibration\" option checked in the " +"print start menu, the printer will follow the old way, calibrate the " +"filament before the print; When you start a multi color/material print, the " +"printer will use the default compensation parameter for the filament during " +"every filament switch which will have a good result in most cases.\n" +"\n" +"Please note there are a few cases that will make the calibration result not " +"reliable: using a texture plate to do the calibration; the build plate does " +"not have good adhesion (please wash the build plate or apply gluestick!) ..." +"You can find more from our wiki.\n" +"\n" +"The calibration results have about 10 percent jitter in our test, which may " +"cause the result not exactly the same in each calibration. We are still " +"investigating the root cause to do improvements with new updates." +msgstr "" +"Lütfen Akış Dinamiği Kalibrasyonunun ayrıntılarını wiki'mizden " +"bulabilirsiniz.\n" +"\n" +"Genellikle kalibrasyon gereksizdir. Yazdırma başlat menüsündeki \"akış " +"dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme baskısını " +"başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan önce filamanı " +"kalibre edecektir; Çok renkli/malzeme baskısını başlattığınızda, yazıcı her " +"filament değişiminde filament için varsayılan dengeleme parametresini " +"kullanacaktır ve bu çoğu durumda iyi bir sonuç verecektir.\n" +"\n" +"Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum olduğunu " +"lütfen unutmayın: kalibrasyonu yapmak için doku plakası kullanmak; baskı " +"plakasının yapışması iyi değil (lütfen baskı plakasını yıkayın veya " +"yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden bulabilirsiniz.\n" +"\n" +"Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim var " +"ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " +"olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel nedeni " +"araştırıyoruz." + +msgid "When to use Flow Rate Calibration" +msgstr "Akış Hızı Kalibrasyonu ne zaman kullanılmalı" + +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" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " +"top layer of the model, even when printing slowly.\n" +"3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " +"they should be." +msgstr "" +"Akış Dinamiği Kalibrasyonunu kullandıktan sonra hâlâ aşağıdaki gibi bazı " +"ekstrüzyon sorunları olabilir:\n" +"1. Aşırı Ekstrüzyon: Basılı nesnenizdeki fazla malzeme, kabarcıklar veya " +"sivilceler oluşturuyor veya katmanlar beklenenden daha kalın görünüyor ve " +"tekdüze değil.\n" +"2. Eksik Ekstrüzyon: Yavaş yazdırırken bile çok ince katmanlar, zayıf dolgu " +"mukavemeti veya modelin üst katmanındaki boşluklar.\n" +"3. Kötü Yüzey Kalitesi: Baskılarınızın yüzeyi pürüzlü veya düzensiz " +"görünüyor.\n" +"4. Zayıf Yapısal Bütünlük: Baskılar kolayca kırılıyor veya olması gerektiği " +"kadar sağlam görünmüyor." + +msgid "" +"In addition, Flow Rate Calibration is crucial for foaming materials like LW-" +"PLA used in RC planes. These materials expand greatly when heated, and " +"calibration provides a useful reference flow rate." +msgstr "" +"Ayrıca RC uçaklarında kullanılan LW-PLA gibi köpürtücü malzemeler için Akış " +"Hızı Kalibrasyonu çok önemlidir. Bu malzemeler ısıtıldığında büyük oranda " +"genleşir ve kalibrasyon yararlı bir referans akış hızı sağlar." + +msgid "" +"Flow Rate Calibration measures the ratio of expected to actual extrusion " +"volumes. The default setting works well in Bambu Lab printers and official " +"filaments as they were pre-calibrated and fine-tuned. For a regular " +"filament, you usually won't need to perform a Flow Rate Calibration unless " +"you still see the listed defects after you have done other calibrations. For " +"more details, please check out the wiki article." +msgstr "" +"Akış Hızı Kalibrasyonu, beklenen ekstrüzyon hacimlerinin gerçek ekstrüzyon " +"hacimlerine oranını ölçer. Varsayılan ayar, önceden kalibre edilmiş ve ince " +"ayar yapılmış olduğundan Bambu Lab yazıcılarında ve resmi filamentlerde iyi " +"çalışır. Normal bir filament için, diğer kalibrasyonları yaptıktan sonra " +"listelenen kusurları hâlâ göremediğiniz sürece genellikle Akış Hızı " +"Kalibrasyonu yapmanıza gerek kalmaz. Daha fazla ayrıntı için lütfen wiki " +"makalesine göz atın." + +msgid "" +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " +"directly measuring the calibration patterns. However, please be advised that " +"the efficacy and accuracy of this method may be compromised with specific " +"types of materials. Particularly, filaments that are transparent or semi-" +"transparent, sparkling-particled, or have a high-reflective finish may not " +"be suitable for this calibration and can produce less-than-desirable " +"results.\n" +"\n" +"The calibration results may vary between each calibration or filament. We " +"are still improving the accuracy and compatibility of this calibration " +"through firmware updates over time.\n" +"\n" +"Caution: Flow Rate Calibration is an advanced process, to be attempted only " +"by those who fully understand its purpose and implications. Incorrect usage " +"can lead to sub-par prints or printer damage. Please make sure to carefully " +"read and understand the process before doing it." +msgstr "" +"Otomatik Akış Hızı Kalibrasyonu, Bambu Lab'ın Mikro-Lidar teknolojisini " +"kullanarak kalibrasyon modellerini doğrudan ölçer. Ancak, bu yöntemin " +"etkinliğinin ve doğruluğunun belirli malzeme türleriyle tehlikeye " +"girebileceğini lütfen unutmayın. Özellikle şeffaf veya yarı şeffaf, parlak " +"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon " +"için uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" +"\n" +"Kalibrasyon sonuçları her kalibrasyon veya filament arasında farklılık " +"gösterebilir. Zaman içinde ürün yazılımı güncellemeleriyle bu kalibrasyonun " +"doğruluğunu ve uyumluluğunu geliştirmeye devam ediyoruz.\n" +"\n" +"Dikkat: Akış Hızı Kalibrasyonu, yalnızca amacını ve sonuçlarını tam olarak " +"anlayan kişiler tarafından denenmesi gereken gelişmiş bir işlemdir. Yanlış " +"kullanım, ortalamanın altında baskılara veya yazıcının zarar görmesine neden " +"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup " +"anladığınızdan emin olun." + +msgid "When you need Max Volumetric Speed Calibration" +msgstr "Maksimum Hacimsel Hız Kalibrasyonuna ihtiyaç duyduğunuzda" + +msgid "Over-extrusion or under extrusion" +msgstr "Aşırı ekstrüzyon veya düşük ekstrüzyon" + +msgid "Max Volumetric Speed calibration is recommended when you print with:" +msgstr "" +"Aşağıdakilerle yazdırdığınızda Maksimum Hacimsel Hız kalibrasyonu önerilir:" + +msgid "material with significant thermal shrinkage/expansion, such as..." +msgstr "önemli termal büzülme/genleşmeye sahip malzeme, örneğin..." + +msgid "materials with inaccurate filament diameter" +msgstr "yanlış filament çapına sahip malzemeler" + +msgid "We found the best Flow Dynamics Calibration Factor" +msgstr "En iyi Akış Dinamiği Kalibrasyon Faktörünü bulduk" + +msgid "" +"Part of the calibration failed! You may clean the plate and retry. The " +"failed test result would be dropped." +msgstr "" +"Kalibrasyonun bir kısmı başarısız oldu! Plakayı temizleyip tekrar " +"deneyebilirsiniz. Başarısız olan test sonucu görmezden gelinir." + +msgid "" +"*We recommend you to add brand, materia, type, and even humidity level in " +"the Name" +msgstr "*İsme marka, malzeme, tür ve hatta nem seviyesini eklemenizi öneririz" + +msgid "Failed" +msgstr "Başarısız" + +msgid "" +"Only one of the results with the same name will be saved. Are you sure you " +"want to overrides the other results?" +msgstr "" +"Aynı ada sahip sonuçlardan yalnızca biri kaydedilecektir. Diğer sonuçları " +"geçersiz kılmak istediğinizden emin misiniz?" + +#, c-format, boost-format +msgid "" +"There is already a historical calibration result with the same name: %s. " +"Only one of the results with the same name is saved. Are you sure you want " +"to overrides the historical result?" +msgstr "" +"Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " +"sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " +"istediğinizden emin misiniz?" + +msgid "Please find the best line on your plate" +msgstr "Lütfen plakadaki en iyi çizgiyi bulun" + +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + +msgid "Input Value" +msgstr "Girdi değeri" + +msgid "Save to Filament Preset" +msgstr "Filament Ön Ayarına Kaydet" + +msgid "Preset" +msgstr "Ön ayar" + +msgid "Record Factor" +msgstr "Kayıt Faktörü" + +msgid "We found the best flow ratio for you" +msgstr "Sizin için en iyi akış oranını bulduk" + +msgid "Flow Ratio" +msgstr "Akış Oranı" + +msgid "Please input a valid value (0.0 < flow ratio < 2.0)" +msgstr "Lütfen geçerli bir değer girin (0,0 < akış oranı < 2,0)" + +msgid "Please enter the name of the preset you want to save." +msgstr "Lütfen kaydetmek istediğiniz ön ayarın adını girin." + +msgid "Calibration1" +msgstr "Kalibrasyon1" + +msgid "Calibration2" +msgstr "Kalibrasyon2" + +msgid "Please find the best object on your plate" +msgstr "Lütfen plakadaki en iyi nesneyi bulun" + +msgid "Fill in the value above the block with smoothest top surface" +msgstr "En pürüzsüz üst yüzeye sahip bloğun üzerindeki değeri doldurun" + +msgid "Skip Calibration2" +msgstr "Kalibrasyon2'yi atla" + +#, c-format, boost-format +msgid "flow ratio : %s " +msgstr "akış oranı : %s " + +msgid "Please choose a block with smoothest top surface" +msgstr "Lütfen üst yüzeyi en pürüzsüz olan bloğu seçin" + +msgid "Please choose a block with smoothest top surface." +msgstr "Lütfen üst yüzeyi en pürüzsüz olan bloğu seçin." + +msgid "Please input a valid value (0 <= Max Volumetric Speed <= 60)" +msgstr "Lütfen geçerli bir değer girin (0 <= Maksimum Hacimsel Hız <= 60)" + +msgid "Calibration Type" +msgstr "Kalibrasyon Türü" + +msgid "Complete Calibration" +msgstr "Kalibrasyonu Tamamla" + +msgid "Fine Calibration based on flow ratio" +msgstr "Akış oranına dayalı İnce Kalibrasyon" + +msgid "Title" +msgstr "Başlık" + +msgid "" +"A test model will be printed. Please clear the build plate and place it back " +"to the hot bed before calibration." +msgstr "" +"Test modeli yazdırılacaktır. Kalibrasyondan önce lütfen baskı plakasını " +"temizleyin ve yatağa geri koyun." + +msgid "Printing Parameters" +msgstr "Yazdırma Parametreleri" + +msgid "- ℃" +msgstr "- °C" + +msgid " ℃" +msgstr " °C" + +msgid "Plate Type" +msgstr "Plaka Tipi" + +msgid "filament position" +msgstr "filament konumu" + +msgid "External Spool" +msgstr "Harici Makara" + +msgid "Filament For Calibration" +msgstr "Kalibrasyon İçin Filament" + +msgid "" +"Tips for calibration material: \n" +"- Materials that can share same hot bed temperature\n" +"- Different filament brand and family(Brand = Bambu, Family = Basic, Matte)" +msgstr "" +"Kalibrasyon malzemesi için ipuçları:\n" +"- Aynı baskı yatağı sıcaklığını paylaşabilen malzemeler\n" +"- Farklı filament markası ve türü(Marka = Bambu, Tür = Basic, Matte)" + +msgid "Error desc" +msgstr "Hata açıklaması" + +msgid "Extra info" +msgstr "Fazladan bilgi" + +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "Yöntem" + +#, c-format, boost-format +msgid "%s is not compatible with %s" +msgstr "%s, %s ile uyumlu değil" + +msgid "TPU is not supported for Flow Dynamics Auto-Calibration." +msgstr "Flow Dynamics Otomatik Kalibrasyonunda TPU desteklenmiyor." + +msgid "Connecting to printer" +msgstr "Yazıcıya bağlanılıyor" + +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + +msgid "The nozzle diameter has been synchronized from the printer Settings" +msgstr "Nozul çapı yazıcı ayarlarından senkronize edildi" + +msgid "From Volumetric Speed" +msgstr "Hacimsel Hızdan" + +msgid "To Volumetric Speed" +msgstr "Hacimsel Hıza" + +msgid "Flow Dynamics Calibration Result" +msgstr "Akış Dinamiği Kalibrasyon Sonucu" + +msgid "No History Result" +msgstr "Geçmiş Sonucu Yok" + +msgid "Success to get history result" +msgstr "Geçmiş sonucunu alma başarısı" + +msgid "Refreshing the historical Flow Dynamics Calibration records" +msgstr "Geçmiş Akış Dinamiği Kalibrasyon kayıtlarını yenileme" + +msgid "Action" +msgstr "İşlem" + +msgid "Edit Flow Dynamics Calibration" +msgstr "Akış Dinamiği Kalibrasyonunu Düzenle" + +msgid "Network lookup" +msgstr "Ağ araması" + +msgid "Address" +msgstr "Adres" + +msgid "Hostname" +msgstr "Ana yazıcıadı" + +msgid "Service name" +msgstr "Hizmet adı" + +msgid "OctoPrint version" +msgstr "OctoPrint sürümü" + +msgid "Searching for devices" +msgstr "Cihazlar aranıyor" + +msgid "Finished" +msgstr "Bitti" + +msgid "Multiple resolved IP addresses" +msgstr "Birden fazla çözülmüş IP adresi" + +#, boost-format +msgid "" +"There are several IP addresses resolving to hostname %1%.\n" +"Please select one that should be used." +msgstr "" +"%1% ana bilgisayar adına çözümlenen birkaç IP adresi var.\n" +"Hangisinin kullanılacağını seçin." + +msgid "Unable to perform boolean operation on selected parts" +msgstr "Seçilen parçalarda bölme işlemi gerçekleştirilemiyor" + +msgid "Mesh Boolean" +msgstr "Mesh Boolean" + +msgid "Union" +msgstr "Union" + +msgid "Difference" +msgstr "Fark" + +msgid "Intersection" +msgstr "Kesişim" + +msgid "Source Volume" +msgstr "Kaynak Hacmi" + +msgid "Tool Volume" +msgstr "Araç Hacmi" + +msgid "Subtract from" +msgstr "Şundan çıkar" + +msgid "Subtract with" +msgstr "Şununla çıkar" + +msgid "selected" +msgstr "seçili" + +msgid "Part 1" +msgstr "Bölüm 1" + +msgid "Part 2" +msgstr "Bölüm 2" + +msgid "Delete input" +msgstr "Girişi sil" + +msgid "Send G-Code to printer host" +msgstr "" + +msgid "Upload to Printer Host with the following filename:" +msgstr "Yazıcıya aşağıdaki dosya adıyla yükleyin:" + +msgid "Use forward slashes ( / ) as a directory separator if needed." +msgstr "Gerekirse dizin ayırıcısı olarak eğik çizgileri ( / ) kullanın." + +msgid "Upload to storage" +msgstr "Depolama alanına yükle" + +#, c-format, boost-format +msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" +msgstr "Yüklenen dosya adı \"%s\" ile bitmiyor. Devam etmek istiyor musunuz?" + +msgid "Upload" +msgstr "Yükle" + +msgid "Print host upload queue" +msgstr "Ana yazıcıyükleme kuyruğunu yazdır" + +msgid "ID" +msgstr "İD" + +msgid "Progress" +msgstr "İlerleme" + +msgid "Host" +msgstr "Host" + +msgctxt "OfFile" +msgid "Size" +msgstr "Boyut" + +msgid "Filename" +msgstr "Dosya adı" + +msgid "Message" +msgstr "" + +msgid "Cancel selected" +msgstr "Seçileni iptal et" + +msgid "Show error message" +msgstr "Hata mesajını göster" + +msgid "Enqueued" +msgstr "Sıraya alındı" + +msgid "Uploading" +msgstr "Yükleniyor" + +msgid "Cancelling" +msgstr "İptal Ediliyor" + +msgid "Error uploading to print host" +msgstr "" + +msgid "PA Calibration" +msgstr "PA Kalibrasyonu" + +msgid "DDE" +msgstr "DDE" + +msgid "Bowden" +msgstr "Bowden" + +msgid "Extruder type" +msgstr "Ekstruder tipi" + +msgid "PA Tower" +msgstr "PA Kulesi" + +msgid "PA Line" +msgstr "PA Çizgi" + +msgid "PA Pattern" +msgstr "PA Deseni" + +msgid "Start PA: " +msgstr "PA başlangıcı: " + +msgid "End PA: " +msgstr "PA bitişi: " + +msgid "PA step: " +msgstr "PA adımı: " + +msgid "Print numbers" +msgstr "Sayıları yazdır" + +msgid "" +"Please input valid values:\n" +"Start PA: >= 0.0\n" +"End PA: > Start PA\n" +"PA step: >= 0.001)" +msgstr "" +"Lütfen geçerli değerleri girin:\n" +"PA'yı başlat: >= 0,0\n" +"PA'yı sonlandır: > PA'yı başlat\n" +"PA adımı: >= 0,001)" + +msgid "Temperature calibration" +msgstr "Sıcaklık kalibrasyonu" + +msgid "PLA" +msgstr "PLA" + +msgid "ABS/ASA" +msgstr "ABS/ASA" + +msgid "PETG" +msgstr "PETG" + +msgid "TPU" +msgstr "TPU" + +msgid "PA-CF" +msgstr "PA-CF" + +msgid "PET-CF" +msgstr "PET-CF" + +msgid "Filament type" +msgstr "Filament türü" + +msgid "Start temp: " +msgstr "Başlangıç sıcaklığı: " + +msgid "End end: " +msgstr "Bitiş: " + +msgid "Temp step: " +msgstr "Sıcaklık adımı: " + +msgid "" +"Please input valid values:\n" +"Start temp: <= 350\n" +"End temp: >= 170\n" +"Start temp > End temp + 5)" +msgstr "" + +msgid "Max volumetric speed test" +msgstr "Maksimum hacimsel hız testi" + +msgid "Start volumetric speed: " +msgstr "Hacimsel hız başlangıcı: " + +msgid "End volumetric speed: " +msgstr "Hacimsel hız bitişi: " + +msgid "step: " +msgstr "adım: " + +msgid "" +"Please input valid values:\n" +"start > 0 \n" +"step >= 0\n" +"end > start + step)" +msgstr "" + +msgid "VFA test" +msgstr "VFA testi" + +msgid "Start speed: " +msgstr "Başlangıç hızı: " + +msgid "End speed: " +msgstr "Bitiş hızı: " + +msgid "" +"Please input valid values:\n" +"start > 10 \n" +"step >= 0\n" +"end > start + step)" +msgstr "" + +msgid "Start retraction length: " +msgstr "Geri çekme uzunluğu başlangıcı: " + +msgid "End retraction length: " +msgstr "Geri çekme uzunluğu bitişi: " + +msgid "mm/mm" +msgstr "mm/mm" + +msgid "Physical Printer" +msgstr "Fiziksel Yazıcı" + +msgid "Print Host upload" +msgstr "Yazıcı Bağlantı Ayarları" + +msgid "Test" +msgstr "Test" + +msgid "Could not get a valid Printer Host reference" +msgstr "Geçerli bir Yazıcı Ana Bilgisayarı referansı alınamadı" + +msgid "Success!" +msgstr "Başarılı!" + +msgid "Refresh Printers" +msgstr "Yazıcıları Yenile" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"HTTPS CA dosyası isteğe bağlıdır. Yalnızca HTTPS'yi kendinden imzalı bir " +"sertifikayla kullanıyorsanız gereklidir." + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "Sertifika dosyaları (*.crt, *.pem)|*.crt;*.pem|Tüm dosyalar|*.*" + +msgid "Open CA certificate file" +msgstr "CA sertifika dosyasını aç" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan " +"HTTPS sertifikalarını kullanıyor." + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Özel bir CA dosyası kullanmak için lütfen CA dosyanızı Sertifika Deposuna/" +"Anahtarlığa aktarın." + +msgid "Connection to printers connected via the print host failed." +msgstr "" +"Yazdırma ana bilgisayarı aracılığıyla bağlanan yazıcılara bağlantı başarısız " +"oldu." + +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + +#: resources/data/hints.ini: [hint:3D Scene Operations] +msgid "" +"3D Scene Operations\n" +"Did you know how to control view and object/part selection with mouse and " +"touchpanel in the 3D scene?" +msgstr "" +"3D Sahne İşlemleri\n" +"3D sahnede fare ve dokunmatik panel ile görünümü ve nesne/parça seçimini " +"nasıl kontrol edeceğinizi biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Cut Tool] +msgid "" +"Cut Tool\n" +"Did you know that you can cut a model at any angle and position with the " +"cutting tool?" +msgstr "" +"Kesme Aleti\n" +"Kesici aletle bir modeli istediğiniz açıda ve konumda kesebileceğinizi " +"biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Fix Model] +msgid "" +"Fix Model\n" +"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " +"problems?" +msgstr "" +"Modeli Düzelt\n" +"Pek çok dilimleme sorununu önlemek için bozuk bir 3D modeli " +"düzeltebileceğinizi biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Timelapse] +msgid "" +"Timelapse\n" +"Did you know that you can generate a timelapse video during each print?" +msgstr "" +"Hızlandırılmış\n" +"Her baskı sırasında timelapse video oluşturabileceğinizi biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Auto-Arrange] +msgid "" +"Auto-Arrange\n" +"Did you know that you can auto-arrange all objects in your project?" +msgstr "" +"Otomatik düzenleme\n" +"Projenizdeki tüm nesneleri otomatik olarak düzenleyebileceğinizi biliyor " +"muydunuz?" + +#: resources/data/hints.ini: [hint:Auto-Orient] +msgid "" +"Auto-Orient\n" +"Did you know that you can rotate objects to an optimal orientation for " +"printing by a simple click?" +msgstr "" +"Otomatik Yönlendirme\n" +"Basit bir tıklamayla nesneleri yazdırma için en uygun yöne " +"döndürebileceğinizi biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Lay on Face] +msgid "" +"Lay on Face\n" +"Did you know that you can quickly orient a model so that one of its faces " +"sits on the print bed? Select the \"Place on face\" function or press the " +"F key." +msgstr "" +"Yüzüstü yatır\n" +"Bir modeli, yüzlerinden biri baskı yatağına oturacak şekilde hızla " +"yönlendirebileceğinizi biliyor muydunuz? \"Yüze yerleştir\" işlevini seçin " +"veya F tuşuna basın." + +#: resources/data/hints.ini: [hint:Object List] +msgid "" +"Object List\n" +"Did you know that you can view all objects/parts in a list and change " +"settings for each object/part?" +msgstr "" +"Nesne Listesi\n" +"Tüm nesneleri/parçaları bir listede görüntüleyebileceğinizi ve her nesne/" +"parça için ayarları değiştirebileceğinizi biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Simplify Model] +msgid "" +"Simplify Model\n" +"Did you know that you can reduce the number of triangles in a mesh using the " +"Simplify mesh feature? Right-click the model and select Simplify model. Read " +"more in the documentation." +msgstr "" +"Modeli Basitleştir\n" +"Mesh basitleştirme özelliğini kullanarak bir ağdaki üçgen sayısını " +"azaltabileceğinizi biliyor muydunuz? Modele sağ tıklayın ve Modeli " +"basitleştir'i seçin. Daha fazlasını belgelerde okuyun." + +#: resources/data/hints.ini: [hint:Slicing Parameter Table] +msgid "" +"Slicing Parameter Table\n" +"Did you know that you can view all objects/parts on a table and change " +"settings for each object/part?" +msgstr "" +"Dilimleme Parametre Tablosu\n" +"Bir tablodaki tüm nesneleri/parçaları görüntüleyebileceğinizi ve her nesne/" +"parça için ayarları değiştirebileceğinizi biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Split to Objects/Parts] +msgid "" +"Split to Objects/Parts\n" +"Did you know that you can split a big object into small ones for easy " +"colorizing or printing?" +msgstr "" +"Nesnelere/Parçalara Böl\n" +"Kolayca renklendirmek veya yazdırmak için büyük bir nesneyi küçük nesnelere " +"bölebileceğinizi biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Subtract a Part] +msgid "" +"Subtract a Part\n" +"Did you know that you can subtract one mesh from another using the Negative " +"part modifier? That way you can, for example, create easily resizable holes " +"directly in Orca Slicer. Read more in the documentation." +msgstr "" +"Bir Parçayı Çıkar\n" +"Negatif parça değiştiriciyi kullanarak bir ağı diğerinden çıkarabileceğinizi " +"biliyor muydunuz? Bu şekilde örneğin doğrudan Orca Slicer'da kolayca yeniden " +"boyutlandırılabilen delikler oluşturabilirsiniz. Daha fazlasını belgelerde " +"okuyun." + +#: resources/data/hints.ini: [hint:STEP] +msgid "" +"STEP\n" +"Did you know that you can improve your print quality by slicing a STEP file " +"instead of an STL?\n" +"Orca Slicer supports slicing STEP files, providing smoother results than a " +"lower resolution STL. Give it a try!" +msgstr "" +"ADIM\n" +"STL yerine STEP dosyasını dilimleyerek baskı kalitenizi artırabileceğinizi " +"biliyor muydunuz?\n" +"Orca Slicer, STEP dosyalarını dilimlemeyi destekleyerek daha düşük " +"çözünürlüklü bir STL'ye göre daha düzgün sonuçlar sağlar. Bir şans ver!" + +#: resources/data/hints.ini: [hint:Z seam location] +msgid "" +"Z seam location\n" +"Did you know that you can customize the location of the Z seam, and even " +"paint it on your print, to have it in a less visible location? This improves " +"the overall look of your model. Check it out!" +msgstr "" +"Z dikiş konumu\n" +"Z dikişinin konumunu kişiselleştirebileceğinizi ve hatta daha az görünür bir " +"konuma getirmek için baskının üzerine boyayabileceğinizi biliyor muydunuz? " +"Bu, modelinizin genel görünümünü iyileştirir. Buna bir bak!" + +#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] +msgid "" +"Fine-tuning for flow rate\n" +"Did you know that flow rate can be fine-tuned for even better-looking " +"prints? Depending on the material, you can improve the overall finish of the " +"printed model by doing some fine-tuning." +msgstr "" +"Akış hızı için ince ayar\n" +"Baskıların daha da iyi görünmesi için akış hızına ince ayar yapılabileceğini " +"biliyor muydunuz? Malzemeye bağlı olarak, bazı ince ayarlar yaparak " +"yazdırılan modelin genel yüzeyini iyileştirebilirsiniz." + +#: resources/data/hints.ini: [hint:Split your prints into plates] +msgid "" +"Split your prints into plates\n" +"Did you know that you can split a model that has a lot of parts into " +"individual plates ready to print? This will simplify the process of keeping " +"track of all the parts." +msgstr "" +"Baskılarınızı plakalara ayırın\n" +"Çok sayıda parçası olan bir modeli baskıya hazır ayrı kalıplara " +"bölebileceğinizi biliyor muydunuz? Bu, tüm parçaları takip etme sürecini " +"basitleştirecektir." + +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer +#: Height] +msgid "" +"Speed up your print with Adaptive Layer Height\n" +"Did you know that you can print a model even faster, by using the Adaptive " +"Layer Height option? Check it out!" +msgstr "" +"Uyarlanabilir Katman Yüksekliği ile baskınızı hızlandırın\n" +"Uyarlanabilir Katman Yüksekliği seçeneğini kullanarak bir modeli daha da " +"hızlı yazdırabileceğinizi biliyor muydunuz? Buna bir bak!" + +#: resources/data/hints.ini: [hint:Support painting] +msgid "" +"Support painting\n" +"Did you know that you can paint the location of your supports? This feature " +"makes it easy to place the support material only on the sections of the " +"model that actually need it." +msgstr "" +"Destek boyama\n" +"Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, " +"destek malzemesinin yalnızca modelin gerçekten ihtiyaç duyulan bölümlerine " +"yerleştirilmesini kolaylaştırır." + +#: resources/data/hints.ini: [hint:Different types of supports] +msgid "" +"Different types of supports\n" +"Did you know that you can choose from multiple types of supports? Tree " +"supports work great for organic models, while saving filament and improving " +"print speed. Check them out!" +msgstr "" +"Farklı destek türleri\n" +"Birden fazla destek türü arasından seçim yapabileceğinizi biliyor muydunuz? " +"Ağaç destekleri organik modeller için harika çalışır, filamentten tasarruf " +"sağlar ve baskı hızını artırır. Onlara bir göz atın!" + +#: resources/data/hints.ini: [hint:Printing Silk Filament] +msgid "" +"Printing Silk Filament\n" +"Did you know that Silk filament needs special consideration to print it " +"successfully? Higher temperature and lower speed are always recommended for " +"the best results." +msgstr "" +"İpek Filament Baskı\n" +"İpek filamanın başarılı bir şekilde basılabilmesi için özel dikkat " +"gösterilmesi gerektiğini biliyor muydunuz? En iyi sonuçlar için her zaman " +"daha yüksek sıcaklık ve daha düşük hız önerilir." + +#: resources/data/hints.ini: [hint:Brim for better adhesion] +msgid "" +"Brim for better adhesion\n" +"Did you know that when printing models have a small contact interface with " +"the printing surface, it's recommended to use a brim?" +msgstr "" +"Daha iyi yapışma için kenar\n" +"Baskı modellerinde baskı yüzeyi ile küçük bir temas arayüzü bulunduğunda " +"siperlik kullanılması tavsiye edildiğini biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Set parameters for multiple objects] +msgid "" +"Set parameters for multiple objects\n" +"Did you know that you can set slicing parameters for all selected objects at " +"one time?" +msgstr "" +"Birden çok nesne için parametreleri ayarlama\n" +"Seçilen tüm nesneler için dilimleme parametrelerini aynı anda " +"ayarlayabileceğinizi biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Stack objects] +msgid "" +"Stack objects\n" +"Did you know that you can stack objects as a whole one?" +msgstr "" +"Nesneleri yığınla\n" +"Nesneleri bir bütün olarak istifleyebileceğinizi biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Flush into support/objects/infill] +msgid "" +"Flush into support/objects/infill\n" +"Did you know that you can save the wasted filament by flushing them into " +"support/objects/infill during filament change?" +msgstr "" +"Desteğe/nesnelere/dolguya hizalayın\n" +"Filament değişimi sırasında, boşa harcanan filamanı desteğe/nesnelere/" +"dolguya yıkayarak kurtarabileceğinizi biliyor muydunuz?" + +#: resources/data/hints.ini: [hint:Improve strength] +msgid "" +"Improve strength\n" +"Did you know that you can use more wall loops and higher sparse infill " +"density to improve the strength of the model?" +msgstr "" +"Gücü artırın\n" +"Modelin gücünü artırmak için daha fazla duvar halkası ve daha yüksek seyrek " +"dolgu yoğunluğu kullanabileceğinizi biliyor muydunuz?" + +#~ msgid "Cali" +#~ msgstr "Cali" + +#~ msgid "Calibration of extrusion" +#~ msgstr "Ekstrüzyonun kalibrasyonu" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Yeni filamanı ekstrüdere itin" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "Diğer katmanın yatak sıcaklığı, ilk katmanın yatak sıcaklığından %d " +#~ "santigrat dereceden daha düşük.\n" +#~ "Bu, yazdırma sırasında modelin baskı plakasından kopmasına neden olabilir" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "Yatak sıcaklığı bu filamentin vitrifikasyon sıcaklığından daha " +#~ "yüksektir.\n" +#~ "Bu, püskürtme ucunun tıkanmasına ve yazdırma hatasına neden olabilir\n" +#~ "Hava sirkülasyonunu sağlamak veya sıcak yatağın sıcaklığını azaltmak için " +#~ "lütfen yazdırma işlemi sırasında yazıcıyı açık tutun" + +#~ msgid "Total Time Estimation" +#~ msgstr "Toplam Süre Tahmini" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Rezonans frekansı tanımlama" + +#~ msgid "Immediately score" +#~ msgstr "Hemen puanlayın" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "Lütfen favori Bambu Market modelinize puan verin." + +#~ msgid "Score" +#~ msgstr "Skor" + +#~ msgid "The 3mf is not from Bambu Lab, load geometry data only." +#~ msgstr "3mf, Bambu Lab'den değildir, yalnızca geometri verilerini yükleyin." + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Bamabu Mühendislik Plakası" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Bamabu Yüksek Sıcaklık Plakası" + +#~ msgid "Can't connect to the printer" +#~ msgstr "Yazıcıya bağlanılamıyor" + +#~ msgid "Recommended temperature range" +#~ msgstr "Önerilen sıcaklık aralığı" + +#~ msgid "High Temp Plate" +#~ msgstr "Tabla" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, " +#~ "filamentin Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına " +#~ "gelir" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "İç köprü destek kalınlığı" + +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges.These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "Etkinleştirilirse, iç köprülerin konturları altında destek halkaları " +#~ "oluşturulacaktır. Bu destek halkaları, özellikle seyrek dolgu yoğunluğu " +#~ "düşük olduğunda, iç köprülerin hava üzerinden çıkmasını önleyebilir ve " +#~ "üst yüzey kalitesini iyileştirebilir. Bu değer, köprünün kalınlığını " +#~ "belirler. destek döngüleri. 0 bu özelliğin devre dışı bırakıldığı " +#~ "anlamına gelir" + +#~ msgid "" +#~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#~ msgstr "" +#~ "Klipper max_accel_to_decel değeri bu hızlanma % değerine ayarlanacaktır" + +#~ msgid "Maximum acceleration for travel (M204 T)" +#~ msgstr "Hareket için maksimum hızlanma (M204 T)" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "Desteğin stili ve şekli. Normal destek için, desteklerin düzenli bir " +#~ "ızgaraya yansıtılması daha sağlam destekler oluşturur (varsayılan), rahat " +#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini " +#~ "azaltır.\n" +#~ "Ağaç desteği için, ince stil, dalları daha agresif bir şekilde " +#~ "birleştirecek ve çok fazla malzeme tasarrufu sağlayacak (varsayılan), " +#~ "hibrit stil ise büyük düz çıkıntılar altında normal desteğe benzer yapı " +#~ "oluşturacaktır." + +#~ msgid "Target chamber temperature" +#~ msgstr "Hedef bölme sıcaklığı" + +#~ msgid "Bed temperature difference" +#~ msgstr "Yatak sıcaklığı farkı" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "Bu eşikten daha fazla bir süre için diğer katmanın yatak sıcaklığının ilk " +#~ "katmandan daha düşük olmasını önermeyin. Diğer katmanın yatak " +#~ "sıcaklığının çok düşük olması modelin baskı plakasından kopmasına neden " +#~ "olabilir" + +#~ msgid "Orient the model" +#~ msgstr "Modeli döndür" + +#~ msgid "Send to print" +#~ msgstr "Baskıya gönder" + +#~ msgid "Simulate" +#~ msgstr "Simülasyon" + +#~ msgid "Error Message" +#~ msgstr "Hata mesajı" + +#~ msgid "Error uploading to print host:" +#~ msgstr "Ana bilgisayara yükleme hatası:" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "Start temp: <= 350\n" +#~ "End temp: >= 180\n" +#~ "Start temp > End temp + 5)" +#~ msgstr "" +#~ "Lütfen geçerli değerleri girin:\n" +#~ "Başlangıç sıcaklığı: <= 350\n" +#~ "Bitiş sıcaklığı: >= 180\n" +#~ "Başlangıç sıcaklığı > Bitiş sıcaklığı + 5)" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 0 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Lütfen geçerli değerleri girin:\n" +#~ "başlangıç > 0 adım >= 0\n" +#~ "bitiş > başlangıç + adım)" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 10 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Lütfen geçerli değerleri girin:\n" +#~ "başlangıç > 10 adım >= 0\n" +#~ "bitiş > başlangıç + adım)" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 3bc830b565..7f678fe33c 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "PO-Revision-Date: 2023-08-10 20:25-0400\n" "Last-Translator: \n" "Language-Team: \n" @@ -659,6 +659,9 @@ msgstr "Завантаження режиму перегляду" msgid "Choose one file (3mf):" msgstr "Виберіть один файл (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Виберіть один або кілька файлів (3mf/step/stl/svg/obj/amf):" @@ -1514,6 +1517,9 @@ msgstr "Підключення..." msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "Порожній" @@ -1526,12 +1532,6 @@ msgstr "" msgid "AMS not connected" msgstr "АМС не підключено" -msgid "Cali" -msgstr "Калі" - -msgid "Calibration of extrusion" -msgstr "АМС не підключено" - msgid "Load Filament" msgstr "Завантажте філамент" @@ -1563,6 +1563,9 @@ msgstr "Повторити калібрування" msgid "Cancel calibration" msgstr "Скасувати калібрування" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "Нагрійте сопло" @@ -1578,7 +1581,13 @@ msgstr "Вставте новий філамент в екструдер" msgid "Purge old filament" msgstr "Очистіть старий філамент" -msgid "Push new filament into the extruder" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" msgstr "" msgid "Grab new filament" @@ -2427,27 +2436,6 @@ msgstr "" "Рекомендована температура сопла для цього типу нитки становить [%d, %d] " "градусів Цельсія" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"Температура шару іншого шару нижче температури шару вихідного шару більш ніж " -"на %d градусів за Цельсієм.\n" -"Це може призвести до відриву моделі від робочої пластини під час друку" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"Температура шару вище температури скловання цієї нитки.\n" -"Це може призвести до блокування сопла та збою друку\n" -" Будь ласка , тримайте принтер відкритим під час друку , щоб забезпечити " -"доступ повітря циркуляція або знизити температуру столу" - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2455,6 +2443,13 @@ msgstr "" "Надто маленька максимальна об'ємна швидкість.\n" "Скинути до 0,5" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2515,6 +2510,9 @@ msgstr "" "відключена, верхня оболонка дорівнює 0, щільність заповнення дорівнює 0, а " "типуповільненої зйомки - традиційний." +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2643,6 +2641,36 @@ msgstr "Припинено через збій температури сопла msgid "Paused due to heat bed temperature malfunction" msgstr "Припинено через несправність температури нагрівального шару" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "MC" @@ -2679,6 +2707,24 @@ msgstr "Перевірка не вдалася." msgid "Update failed." msgstr "Не вдалося оновити." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "Не вдалося запустити завдання друку" @@ -2807,12 +2853,15 @@ msgstr "Очищення" msgid "Total" msgstr "Загальний" -msgid "Total Time Estimation" -msgstr "Оцінка загального часу" +msgid "Total Estimation" +msgstr "Загальна оцінка" msgid "Total time" msgstr "Загальний час" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "аж до" @@ -2900,9 +2949,6 @@ msgstr "Принтер" msgid "Print settings" msgstr "Параметри друку" -msgid "Total Estimation" -msgstr "Загальна оцінка" - msgid "Time Estimation" msgstr "Оцінка часу" @@ -3011,6 +3057,9 @@ msgstr "Дозволити використання декількох мате msgid "Avoid extrusion calibration region" msgstr "Уникайте області калібрування екструзії" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "Додати" @@ -3106,8 +3155,11 @@ msgstr "Калібрування мікролідара" msgid "Bed leveling" msgstr "Вирівнювання столу" -msgid "Resonance frequency identification" -msgstr "Ідентифікація резонансної частоти" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "Програма калібрування" @@ -3127,6 +3179,9 @@ msgstr "Калібрувальний потік" msgid "Start Calibration" msgstr "Почати калібрування" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "Завершений" @@ -3203,9 +3258,6 @@ msgstr "Ні" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "буде закрито перед створенням нової моделі. Ви хочете продовжувати?" -msgid "Upload" -msgstr "" - msgid "Slice plate" msgstr "Нарізати моделі" @@ -3883,12 +3935,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "Шар: немає даних" -msgid "Immediately score" -msgstr "" - msgid "Clear" msgstr "Очищення" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "Камера" @@ -3954,12 +4014,6 @@ msgstr "У черзі Cloud Slicing Queue попереду %s завдань." msgid "Layer: %s" msgstr "Шар: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "" - -msgid "Score" -msgstr "" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Шар: %d/%d" @@ -4003,6 +4057,97 @@ msgstr "Безглуздий" msgid "Can't start this without SD card." msgstr "Не можу запустити це без SD-карти." +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "інфо" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "Статус" @@ -4132,6 +4277,9 @@ msgstr "Попередження:" msgid "Export successfully." msgstr "Експорт успішно." +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "" @@ -4218,6 +4366,9 @@ msgstr "Перевірка першого шару" msgid "Auto-recovery from step loss" msgstr "Автоматичне відновлення після втрати кроку" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "Глобальний" @@ -4375,6 +4526,11 @@ msgstr "" "жорсткість сопла принтера. Будь ласка, замініть загартоване сопло або\n" "нитки розжарювання, інакше сопло буде зношене або пошкоджене." +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, c-format, boost-format msgid "Loading file: %s" msgstr "Завантаження файлу: %s" @@ -4590,6 +4746,11 @@ msgstr "завантажую проект..." msgid "Project downloaded %d%%" msgstr "Проект завантажено %d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "Вибраний файл" @@ -4979,9 +5140,6 @@ msgstr "помилка" msgid "warning" msgstr "попередження" -msgid "info" -msgstr "інфо" - msgid "debug" msgstr "налагодження" @@ -5232,11 +5390,17 @@ msgstr "Холодний стіл" msgid "PLA Plate" msgstr "" -msgid "Bamabu Engineering Plate" -msgstr "Інженерний стіл" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "Високотемпературна пластина" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "Надіслати завдання на друк на" @@ -5250,7 +5414,7 @@ msgstr "Вирівнювання столу" msgid "Flow Dynamics Calibration" msgstr "" -msgid "Can't connect to the printer" +msgid "Click here if you can't connect to the printer" msgstr "" msgid "send completed" @@ -5362,6 +5526,16 @@ msgstr "Неможливо надіслати завдання на друк д msgid "This printer does not support printing all plates" msgstr "Цей принтер не підтримує друк усіх форм" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "Помилки" @@ -5669,6 +5843,9 @@ msgstr "Підкладка" msgid "Support filament" msgstr "Філамент підтримки" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "Вежа Очищення" @@ -5726,9 +5903,6 @@ msgstr "" "Рекомендований діапазон температур сопла для цього філаменту. 0 означає " "відсутність установки" -msgid "Recommended temperature range" -msgstr "Рекомендований діапазон температур" - msgid "Print temperature" msgstr "Температура друку" @@ -5759,15 +5933,14 @@ msgstr "" "Температура стола при встановленій інженерній плиті. Значення 0 означає \n" "Філамент не підтримує друк на інженерній пластині" -msgid "High Temp Plate" -msgstr "Високотемпературна пластина" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"Температура столу, коли встановлено високотемпературний стіл. Значення 0 " -"означає філамент не підтримує друк на високотемпературному столі" msgid "Textured PEI Plate" msgstr "Текстурована пластина PEI" @@ -5819,6 +5992,15 @@ msgstr "" msgid "Auxiliary part cooling fan" msgstr "Вентилятор охолодження допоміжних деталей" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "G-код початку Філаменту" @@ -5870,6 +6052,9 @@ msgstr "G-code перед зміною шару" msgid "Layer change G-code" msgstr "G-code Зміни шару" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "G-code Зміни філаменту" @@ -6730,6 +6915,11 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" "Не вдалося обчислити ширину лінії %1%. Неможливо отримати значення \"%2%\" " +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "невизначена помилка" @@ -6888,6 +7078,24 @@ msgid "" msgstr "" "Режим спіральної вази не працює, якщо об'єкт містить більше одногоматеріалу." +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "Під час друку \"По об'єкту\" праймер не підтримується." @@ -7408,6 +7616,14 @@ msgid "Enable this option to slow printing down for different overhang degree" msgstr "" "Увімкнути цей параметр для уповільнення друку при різних ступенях звису" +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "мм/с або %" @@ -7541,6 +7757,23 @@ msgstr "Профіль за промовчанням" msgid "Default process profile when switch to this machine profile" msgstr "Профіль за промовчанням при перемиканні на цей профіль машини" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "Швидкість вентилятора" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "Немає охолодження для першого шару" @@ -7608,22 +7841,6 @@ msgstr "" "Додавання заповнення твердого тіла поблизу похилих поверхонь для Гарантії " "товщини вертикальної оболонки (верхній + нижній шари твердого тіла)" -msgid "Internal bridge support thickness" -msgstr "Товщина внутрішньої опори мосту" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" -"Якщо ввімкнуто, опорні петлі будуть створюватися під контурами внутрішніх " -"мости. Ці опорні петлі можуть запобігти екструзії внутрішніх мостівпо " -"повітрю та покращити якість верхньої поверхні, особливо коли " -"розрідженістьщільність заповнення низька. Це значення визначає товщину опори " -"цикли. 0 означає вимкнути цю функцію" - msgid "Top surface pattern" msgstr "Малюнок верхньої поверхні" @@ -8245,10 +8462,13 @@ msgid "accel_to_decel" msgstr "прискорення до уповільнення" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" msgstr "" -"Max \"прискорення до уповільнення\" для Klipper буде скориговано на % o " -"автоматично" msgid "Jerk of outer walls" msgstr "Ривок зовнішніх периметрів" @@ -8466,6 +8686,30 @@ msgstr "" msgid "HRC" msgstr "HRC" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "" "Увімкніть цю опцію, якщо машина оснащена вентилятором охолодженнядопоміжної " @@ -8516,6 +8760,28 @@ msgstr "" "прискорення роботи вентилятора.\n" "Для деактивації встановіть значення 0." +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "Тип G-коду" @@ -8776,9 +9042,6 @@ msgstr "Максимальне прискорення руху" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -msgid "Fan speed" -msgstr "Швидкість вентилятора" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8797,6 +9060,55 @@ msgstr "" "Найбільша висота шару, що друкується, для екструдера. Використовуваний tp " "обмежує максимальну висоту шару при включенні адаптивної висоти шару" +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "Мінімальна швидкість вентилятора охолодження деталі" @@ -9081,6 +9393,22 @@ msgstr "" "переміщення. Використання спіралевої лінії підняття по осі Z може " "перешкоджати появі висячих ниток" +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "Тип Z-стрибка" @@ -9598,17 +9926,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"Стиль та форма опори. Для звичайної підтримки проектування опор у " -"звичайнусітка створить більш стійкі опори (за замовчуванням), тоді як " -"завзяті опори заощадять матеріал і зменшать утворення рубців на об'єктах.\n" -"Для підтримки дерева тонкий стиль об'єднуватиме гілки більш агресивно і " -"заощаджувати багато матеріалу (за замовчуванням), в той час як гібридний " -"стильСтворить структуру, аналогічну звичайній підтримці при великих плоских " -"звисах." msgid "Snug" msgstr "Обережний" @@ -9766,25 +10088,19 @@ msgstr "" msgid "Chamber temperature" msgstr "Температура в камері" -msgid "Target chamber temperature" -msgstr "Температура цільової камери" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" +msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "Температура сопла для шарів після початкового" -msgid "Bed temperature difference" -msgstr "Різниця температур шару" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"Не рекомендується, щоб температура шару іншого шару була нижчою, ніж " -"температура вихідного шару, при перевищенні цього порога. Надто " -"низькатемпература шару іншого шару може призвести до того, що модель " -"будерозірвана без конструкційної пластини" - msgid "Detect thin wall" msgstr "Виявлення тонкої стінки" @@ -10193,6 +10509,12 @@ msgstr "" msgid "Load first filament as default for those not loaded" msgstr "" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "mtcpp" @@ -10248,14 +10570,39 @@ msgstr "" msgid "Repetions count of the whole model" msgstr "" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "Перетворити одиницю виміру" msgid "Convert the units of model" msgstr "Перетворення одиниць моделі" -msgid "Orient the model" -msgstr "Орієнтувати модель" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "Масштабуйте модель за допомогою плаваючого коефіцієнта" @@ -10313,6 +10660,12 @@ msgstr "" "Встановлює рівень реєстрації налагодження. 0: непереборний, 1: помилка, 2: " "попередження, 3: інформація, 4: налагодження, 5: трасування\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "Помилка у zip архіві" @@ -10507,6 +10860,15 @@ msgstr "" msgid "The name cannot exceed 40 characters." msgstr "" +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "" @@ -10536,6 +10898,9 @@ msgstr "" msgid "Please select filament to calibrate." msgstr "" +msgid "The input value size must be 3." +msgstr "" + msgid "Connecting to printer..." msgstr "" @@ -10554,9 +10919,6 @@ msgstr "" msgid "Flow rate calibration result has been saved to preset" msgstr "" -msgid "The input value size must be 3." -msgstr "" - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" @@ -10692,6 +11054,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "" @@ -10794,6 +11159,12 @@ msgstr "" msgid "Extra info" msgstr "" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "Метод" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "" @@ -10804,6 +11175,21 @@ msgstr "" msgid "Connecting to printer" msgstr "" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" @@ -10916,6 +11302,9 @@ msgstr "" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" +msgid "Upload" +msgstr "" + msgid "Print host upload queue" msgstr "" @@ -10977,9 +11366,6 @@ msgstr "РА лінія" msgid "PA Pattern" msgstr "" -msgid "Method" -msgstr "Метод" - msgid "Start PA: " msgstr "Стартовий PA: " @@ -11057,12 +11443,10 @@ msgstr "крок: " msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"Введіть допустимі значення:\n" -"початок > 0 крок >= 0\n" -"кінець > початок + крок)" msgid "VFA test" msgstr "VFA тест" @@ -11075,12 +11459,10 @@ msgstr "Кінцева швидкість: " msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"Введіть допустимі значення:\n" -"старт > 10 кроків >= 0\n" -"кінець > початок + крок)" msgid "Start retraction length: " msgstr "Початкова довжина ретракту: " @@ -11140,6 +11522,17 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "Не вдалося підключитися до принтерів, підключених через вузол друку." +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -11403,3 +11796,133 @@ msgstr "" "Підвищення міцності\n" "Чи знаєте ви, що для підвищення міцності моделі можна використовувати " "більшепериметрів та вищу щільність заповнення?" + +#~ msgid "Cali" +#~ msgstr "Калі" + +#~ msgid "Calibration of extrusion" +#~ msgstr "АМС не підключено" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "Температура шару іншого шару нижче температури шару вихідного шару більш " +#~ "ніж на %d градусів за Цельсієм.\n" +#~ "Це може призвести до відриву моделі від робочої пластини під час друку" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "Температура шару вище температури скловання цієї нитки.\n" +#~ "Це може призвести до блокування сопла та збою друку\n" +#~ " Будь ласка , тримайте принтер відкритим під час друку , щоб забезпечити " +#~ "доступ повітря циркуляція або знизити температуру столу" + +#~ msgid "Total Time Estimation" +#~ msgstr "Оцінка загального часу" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Ідентифікація резонансної частоти" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Інженерний стіл" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "Високотемпературна пластина" + +#~ msgid "Recommended temperature range" +#~ msgstr "Рекомендований діапазон температур" + +#~ msgid "High Temp Plate" +#~ msgstr "Високотемпературна пластина" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "Температура столу, коли встановлено високотемпературний стіл. Значення 0 " +#~ "означає філамент не підтримує друк на високотемпературному столі" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Товщина внутрішньої опори мосту" + +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges.These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "Якщо ввімкнуто, опорні петлі будуть створюватися під контурами внутрішніх " +#~ "мости. Ці опорні петлі можуть запобігти екструзії внутрішніх мостівпо " +#~ "повітрю та покращити якість верхньої поверхні, особливо коли " +#~ "розрідженістьщільність заповнення низька. Це значення визначає товщину " +#~ "опори цикли. 0 означає вимкнути цю функцію" + +#, c-format, boost-format +#~ msgid "" +#~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#~ msgstr "" +#~ "Max \"прискорення до уповільнення\" для Klipper буде скориговано на % o " +#~ "автоматично" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "Стиль та форма опори. Для звичайної підтримки проектування опор у " +#~ "звичайнусітка створить більш стійкі опори (за замовчуванням), тоді як " +#~ "завзяті опори заощадять матеріал і зменшать утворення рубців на " +#~ "об'єктах.\n" +#~ "Для підтримки дерева тонкий стиль об'єднуватиме гілки більш агресивно і " +#~ "заощаджувати багато матеріалу (за замовчуванням), в той час як гібридний " +#~ "стильСтворить структуру, аналогічну звичайній підтримці при великих " +#~ "плоских звисах." + +#~ msgid "Target chamber temperature" +#~ msgstr "Температура цільової камери" + +#~ msgid "Bed temperature difference" +#~ msgstr "Різниця температур шару" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "Не рекомендується, щоб температура шару іншого шару була нижчою, ніж " +#~ "температура вихідного шару, при перевищенні цього порога. Надто " +#~ "низькатемпература шару іншого шару може призвести до того, що модель " +#~ "будерозірвана без конструкційної пластини" + +#~ msgid "Orient the model" +#~ msgstr "Орієнтувати модель" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 0 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Введіть допустимі значення:\n" +#~ "початок > 0 крок >= 0\n" +#~ "кінець > початок + крок)" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 10 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Введіть допустимі значення:\n" +#~ "старт > 10 кроків >= 0\n" +#~ "кінець > початок + крок)" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 6547a891df..932667cb27 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "PO-Revision-Date: 2023-04-01 13:21+0800\n" "Last-Translator: Chun \n" "Language-Team: \n" @@ -561,8 +561,8 @@ msgid "" "OrcaSlicer will terminate because of running out of memory.It may be a bug. " "It will be appreciated if you report the issue to our team." msgstr "" -"系統記憶體耗盡,OrcaSlicer 即將停止並且結束。這可能是個錯誤,希望您可以報告此問" -"題,我們將非常感激。" +"系統記憶體耗盡,OrcaSlicer 即將停止並且結束。這可能是個錯誤,希望您可以報告此" +"問題,我們將非常感激。" msgid "Fatal error" msgstr "致命錯誤" @@ -571,8 +571,8 @@ msgid "" "OrcaSlicer will terminate because of a localization error. It will be " "appreciated if you report the specific scenario this issue happened." msgstr "" -"遇到本地化錯誤,OrcaSlicer 即將停止並且結束。希望您可以報告發生此問題的具體狀況," -"我們將非常感激。" +"遇到本地化錯誤,OrcaSlicer 即將停止並且結束。希望您可以報告發生此問題的具體狀" +"況,我們將非常感激。" msgid "Critical error" msgstr "嚴重錯誤" @@ -648,6 +648,9 @@ msgstr "載入模式視圖" msgid "Choose one file (3mf):" msgstr "選擇一個文件(3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "選擇一個或多個文件(3mf/step/stl/svg/obj/amf):" @@ -1472,6 +1475,9 @@ msgstr "連線中..." msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "空" @@ -1484,12 +1490,6 @@ msgstr "自動補給" msgid "AMS not connected" msgstr "AMS 未連接" -msgid "Cali" -msgstr "校準" - -msgid "Calibration of extrusion" -msgstr "擠出校準" - msgid "Load Filament" msgstr "進料" @@ -1520,6 +1520,9 @@ msgstr "重新校準" msgid "Cancel calibration" msgstr "取消校準" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "加熱噴嘴" @@ -1535,8 +1538,14 @@ msgstr "送出新的線材到擠出機" msgid "Purge old filament" msgstr "沖刷舊線材" -msgid "Push new filament into the extruder" -msgstr "將新的線材推入擠出機" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "咬入線材" @@ -1809,10 +1818,10 @@ msgid "" "Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " "by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and " "the RepRap community" - msgstr "" -"Orca Slicer 是基於 Bambulab 的 BambuStudio 開發,而 BambuStudio 源自於 Prusa Research 的 PrusaSlicer。" -"PrusaSlicer 源自於 Alessandro Ranellucci 的 Slic3r 和 RepRap 社群" +"Orca Slicer 是基於 Bambulab 的 BambuStudio 開發,而 BambuStudio 源自於 Prusa " +"Research 的 PrusaSlicer。PrusaSlicer 源自於 Alessandro Ranellucci 的 Slic3r " +"和 RepRap 社群" msgid "Libraries" msgstr "庫" @@ -1830,7 +1839,8 @@ msgid "Orca Slicer " msgstr "Orca Slicer " msgid "OrcaSlicer is based on BambuStudio, PrusaSlicer, and SuperSlicer." -msgstr "OrcaSlicer 是基於 Bambulab 的 BambuStudio, PrusaSlicer, and SuperSlicer 開發" +msgstr "" +"OrcaSlicer 是基於 Bambulab 的 BambuStudio, PrusaSlicer, and SuperSlicer 開發" msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "BambuStudio 最初是基於 PrusaResearch 的 PrusaSlicer。" @@ -1958,8 +1968,8 @@ msgid "" "hot bed like the picture below, and fill the value on its left side into the " "factor K input box." msgstr "" -"校準完成。如下圖中的範例,請在您的熱床上找到最均勻完整的擠出線,並將其左側的數值" -"填入係數K輸入框。" +"校準完成。如下圖中的範例,請在您的熱床上找到最均勻完整的擠出線,並將其左側的" +"數值填入係數K輸入框。" msgid "Save" msgstr "保存" @@ -2084,7 +2094,8 @@ msgid "" "The AMS will automatically read the filament information when inserting a " "new Bambu Lab filament. This takes about 20 seconds." msgstr "" -"當插入新的 Bambu Lab 線材的時候,AMS 會自動讀取線材資訊。這個過程大約需要20秒。" +"當插入新的 Bambu Lab 線材的時候,AMS 會自動讀取線材資訊。這個過程大約需要20" +"秒。" msgid "" "Note: if new filament is inserted during printing, the AMS will not " @@ -2096,8 +2107,8 @@ msgid "" "When inserting a new filament, the AMS will not automatically read its " "information, leaving it blank for you to enter manually." msgstr "" -"在插入一卷新線材時,AMS 將不會自動讀取線材資訊,預留一個空的線材資訊等待您手動輸" -"入。" +"在插入一卷新線材時,AMS 將不會自動讀取線材資訊,預留一個空的線材資訊等待您手" +"動輸入。" msgid "Power on update" msgstr "開機時檢測" @@ -2107,8 +2118,8 @@ msgid "" "start-up. It will take about 1 minute.The reading process will roll filament " "spools." msgstr "" -"每次開機時,AMS 將會自動讀取其所插入的線材資訊(讀取過程會轉動線材卷)。需要花時大約" -"1分鐘。" +"每次開機時,AMS 將會自動讀取其所插入的線材資訊(讀取過程會轉動線材卷)。需要花" +"時大約1分鐘。" msgid "" "The AMS will not automatically read information from inserted filament " @@ -2124,8 +2135,8 @@ msgid "" "info is updated. During printing, remaining capacity will be updated " "automatically." msgstr "" -"AMS 讀取 Bambu Lab 線材資訊同時預估線材卷的剩餘線材量。在列印過程中,剩餘線材量會自動" -"更新。" +"AMS 讀取 Bambu Lab 線材資訊同時預估線材卷的剩餘線材量。在列印過程中,剩餘線材" +"量會自動更新。" msgid "AMS filament backup" msgstr "AMS 線材備份" @@ -2313,24 +2324,6 @@ msgid "" "centigrade" msgstr "該線材的推薦噴嘴溫度是攝氏[%d, %d]度" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"其它層的熱床溫度比首層熱床溫度低太多,超過了攝氏 %d 度。\n" -"這可能導致列印中模型從熱床脫落" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"熱床溫度超過了線材的軟化溫度,線材軟化可能造成噴頭堵塞。\n" -"請保持3D列印機在列印過程中敞開,保證空氣流通或降低熱床溫度" - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2338,6 +2331,13 @@ msgstr "" "最大體積流量設置過小\n" "重設為0.5" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2390,6 +2390,9 @@ msgstr "" "旋轉模式只能在外牆層數為1,關閉支撐,頂層層數為0,稀疏填充密度為0,傳統縮時攝" "影時有效。" +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2514,6 +2517,36 @@ msgstr "噴最溫度異常暫停" msgid "Paused due to heat bed temperature malfunction" msgstr "熱床溫度異常暫停" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "" @@ -2550,6 +2583,24 @@ msgstr "驗證失敗。" msgid "Update failed." msgstr "更新失敗。" +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "無法啟動列印作業" @@ -2678,12 +2729,15 @@ msgstr "沖刷" msgid "Total" msgstr "總計" -msgid "Total Time Estimation" -msgstr "總時間預估" +msgid "Total Estimation" +msgstr "總預估" msgid "Total time" msgstr "總時間" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "達到" @@ -2771,9 +2825,6 @@ msgstr "3D列印機" msgid "Print settings" msgstr "列印設定" -msgid "Total Estimation" -msgstr "總預估" - msgid "Time Estimation" msgstr "時間預估" @@ -2883,6 +2934,9 @@ msgstr "允許同一盤中包含多種材料" msgid "Avoid extrusion calibration region" msgstr "避開擠出標定區域" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "新增" @@ -2945,8 +2999,8 @@ msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." msgstr "" -"發現 gcode 路徑在層%d,高為%.2lf mm處的衝突。請將有衝突的對象分離得更遠(%s <-> " -"%s)。" +"發現 gcode 路徑在層%d,高為%.2lf mm處的衝突。請將有衝突的對象分離得更遠(%s <-" +"> %s)。" msgid "An object is layed over the boundary of plate." msgstr "檢測到有對象放在盤的邊界上。" @@ -2977,8 +3031,11 @@ msgstr "微型雷達校準" msgid "Bed leveling" msgstr "熱床調平" -msgid "Resonance frequency identification" -msgstr "共振頻率辨識" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "校準程序" @@ -2997,6 +3054,9 @@ msgstr "校準流程" msgid "Start Calibration" msgstr "開始校準" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "已完成" @@ -3073,9 +3133,6 @@ msgstr "否" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "將會被關閉以創建新模型,是否繼續?" -msgid "Upload" -msgstr "上傳" - msgid "Slice plate" msgstr "切片單盤" @@ -3735,12 +3792,20 @@ msgstr "0" msgid "Layer: N/A" msgstr "層: N/A" -msgid "Immediately score" -msgstr "立即打分" - msgid "Clear" msgstr "清除" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "攝影機" @@ -3806,12 +3871,6 @@ msgstr "前面還有%s個任務在雲端切片隊列中" msgid "Layer: %s" msgstr "層: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "請為您喜歡的 Bambu 商城模型打分。" - -msgid "Score" -msgstr "打分" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "層: %d/%d" @@ -3851,6 +3910,97 @@ msgstr "狂暴模式" msgid "Can't start this without SD card." msgstr "沒有SD記憶卡無法開始任務" +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "資訊" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "設備狀態" @@ -3974,6 +4124,9 @@ msgstr "警告:" msgid "Export successfully." msgstr "匯出成功." +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "嚴重警告:" @@ -4055,6 +4208,9 @@ msgstr "首層掃描" msgid "Auto-recovery from step loss" msgstr "自動從丟步中恢復" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "全局" @@ -4195,8 +4351,13 @@ msgid "" "nozzle hardness of the printer. Please replace the hardened nozzle or " "filament, otherwise, the nozzle will be attrited or damaged." msgstr "" -"線材所要求的噴嘴硬度高於3D列印機預設的噴嘴硬度。請更換硬化的噴嘴或列印" -"絲,否則噴嘴可能被磨損或損壞。" +"線材所要求的噴嘴硬度高於3D列印機預設的噴嘴硬度。請更換硬化的噴嘴或列印絲," +"否則噴嘴可能被磨損或損壞。" + +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" #, c-format, boost-format msgid "Loading file: %s" @@ -4398,6 +4559,11 @@ msgstr "項目下載中..." msgid "Project downloaded %d%%" msgstr "項目已下載%d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "已選擇的文件" @@ -4537,8 +4703,8 @@ msgid "" "\"Fix Model\" feature is currently only on Windows. Please repair the model " "on Orca Slicer(windows) or CAD softwares." msgstr "" -"\"修復模型\"功能目前僅適用於 Windows。請在 Orcaslicer (windows)或 CAD 軟體上修復" -"模型。" +"\"修復模型\"功能目前僅適用於 Windows。請在 Orcaslicer (windows)或 CAD 軟體上" +"修復模型。" #, c-format, boost-format msgid "" @@ -4771,9 +4937,6 @@ msgstr "錯誤" msgid "warning" msgstr "警告" -msgid "info" -msgstr "資訊" - msgid "debug" msgstr "除錯" @@ -5023,11 +5186,17 @@ msgstr "低溫列印熱床" msgid "PLA Plate" msgstr "PLA 列印板" -msgid "Bamabu Engineering Plate" -msgstr "工程列印熱床" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "高溫列印熱床" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "傳送列印作業至" @@ -5041,8 +5210,8 @@ msgstr "熱床調平" msgid "Flow Dynamics Calibration" msgstr "動態流量校準" -msgid "Can't connect to the printer" -msgstr "無法連接3D列印機" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "傳送完成" @@ -5106,15 +5275,15 @@ msgid "" "Filament %s does not match the filament in AMS slot %s. Please update the " "printer firmware to support AMS slot assignment." msgstr "" -"線材編號%s和 AMS 槽位%s中的線材材質不匹配,請更新3D列印機韌體以支援 AMS 槽位映" -"射功能" +"線材編號%s和 AMS 槽位%s中的線材材質不匹配,請更新3D列印機韌體以支援 AMS 槽" +"位映射功能" msgid "" "Filament does not match the filament in AMS slot. Please update the printer " "firmware to support AMS slot assignment." msgstr "" -"材料編號和 AMS 槽位中的線材材質不匹配,請更新3D列印機韌體以支援 AMS 槽位映射功" -"能" +"材料編號和 AMS 槽位中的線材材質不匹配,請更新3D列印機韌體以支援 AMS 槽位映" +"射功能" msgid "" "The printer firmware only supports sequential mapping of filament => AMS " @@ -5143,6 +5312,16 @@ msgstr "無法為空盤傳送列印作業" msgid "This printer does not support printing all plates" msgstr "此3D列印機類型不支援列印所有盤" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "錯誤" @@ -5154,8 +5333,8 @@ msgid "" "currently selected printer. It is recommended that you use the same printer " "type for slicing." msgstr "" -"產生 G代碼 時選擇的3D列印機類型與當前選擇的3D列印機不一致。建議您使用相同的" -"3D列印機類型進行切片。" +"產生 G代碼 時選擇的3D列印機類型與當前選擇的3D列印機不一致。建議您使用相同" +"的3D列印機類型進行切片。" #, c-format, boost-format msgid "%s is not supported by AMS." @@ -5166,8 +5345,8 @@ msgid "" "they are the required filaments. If they are okay, press \"Confirm\" to " "start printing." msgstr "" -"AMS 映射中存在一些未知的線材。請檢查它們是否符合預期。如果符合,按“確定”以開始" -"列印作業。" +"AMS 映射中存在一些未知的線材。請檢查它們是否符合預期。如果符合,按“確定”以開" +"始列印作業。" msgid "" "Please click the confirm button if you still want to proceed with printing." @@ -5292,10 +5471,10 @@ msgid "" "to these terms and the statement about Privacy Policy." msgstr "" "在3D列印社區,我們從彼此的成功和失敗中學習調整自己的切片參數和設置。%s遵循同" -"樣的原則,透過機器學習的方式從大量使用者列印的成功和失敗中獲取經驗,從而改善打" -"印性能。我們正在透過向%s提供真實世界的數據來訓練他們變得更聰明。如果您願意," -"此服務將訪問您的錯誤日誌和使用日誌中的資訊,其中可能包括隱私政策中描述的信" -"息。我們不會收集任何可以直接或間接識別個人的個人數據,包括但不限於姓名、地" +"樣的原則,透過機器學習的方式從大量使用者列印的成功和失敗中獲取經驗,從而改善" +"打印性能。我們正在透過向%s提供真實世界的數據來訓練他們變得更聰明。如果您願" +"意,此服務將訪問您的錯誤日誌和使用日誌中的資訊,其中可能包括隱私政策中描述的" +"信息。我們不會收集任何可以直接或間接識別個人的個人數據,包括但不限於姓名、地" "址、支付資訊或電話號碼。啟用此服務即表示您同意這些條款和有關隱私政策的聲明。" msgid "Statement on User Experience Improvement Plan" @@ -5445,6 +5624,9 @@ msgstr "筏層" msgid "Support filament" msgstr "支撐耗材" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "擦拭塔" @@ -5494,9 +5676,6 @@ msgstr "建議噴嘴溫度" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "該線材的建議噴嘴溫度範圍。0表示未設置" -msgid "Recommended temperature range" -msgstr "建議溫度範圍" - msgid "Print temperature" msgstr "列印溫度" @@ -5522,13 +5701,14 @@ msgid "" "filament does not support to print on the Engineering Plate" msgstr "安裝工程材料熱床時的熱床溫度。0值表示這個線材不支援工程線材熱床" -msgid "High Temp Plate" -msgstr "高溫列印熱床" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" -msgstr "安裝高溫列印熱床時的熱床溫度。0值表示這個線材不支援高溫列印熱床" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" +msgstr "" msgid "Textured PEI Plate" msgstr "紋理PEI熱床" @@ -5573,6 +5753,15 @@ msgstr "當預計的層列印時間比設置值要短時,部件冷卻風扇轉 msgid "Auxiliary part cooling fan" msgstr "輔助部件冷卻風扇" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "線材起始 G-code" @@ -5624,6 +5813,9 @@ msgstr "換層前 G-code" msgid "Layer change G-code" msgstr "換層 G-code" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "線材更換 G-code" @@ -6452,6 +6644,11 @@ msgstr "多個" msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "計算 %1%的線寬失敗。無法獲得 \"%2%\" 的值" +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "未定義的錯誤" @@ -6598,6 +6795,24 @@ msgid "" "materials." msgstr "不支援在包含多個線材的列印中使用旋轉花瓶模式。" +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "擦拭塔不支援在逐件列印模式下使用。" @@ -6743,9 +6958,9 @@ msgid "" "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r 可以將 G-code 文件上傳到3D列印機主機。此欄位應包含3D列印機主機實例的" -"主機名、IP位址或URL。啟用基本身份驗證的Print host可以透過將使用者名稱和密碼放" -"入以下格式的URL中來訪問:https://username:password@your-octopi-address/" +"Slic3r 可以將 G-code 文件上傳到3D列印機主機。此欄位應包含3D列印機主機實例" +"的主機名、IP位址或URL。啟用基本身份驗證的Print host可以透過將使用者名稱和密碼" +"放入以下格式的URL中來訪問:https://username:password@your-octopi-address/" msgid "Device UI" msgstr "設備使用者界面" @@ -6761,8 +6976,8 @@ msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r 可以將 G-code 文件上傳到3D列印機主機。此欄位應包含用於身份驗證的API金鑰" -"或密碼。" +"Slic3r 可以將 G-code 文件上傳到3D列印機主機。此欄位應包含用於身份驗證的API" +"金鑰或密碼。" msgid "Name of the printer" msgstr "3D列印機名稱" @@ -6936,8 +7151,8 @@ msgid "" "wall which has large overhang degree. Forcing cooling for overhang and " "bridge can get better quality for these part" msgstr "" -"當列印橋接和超過設定臨界值的懸垂時,強制部件冷卻風扇為設定的速度值。強制冷卻能" -"夠使懸垂和橋接獲得更好的列印質量" +"當列印橋接和超過設定臨界值的懸垂時,強制部件冷卻風扇為設定的速度值。強制冷卻" +"能夠使懸垂和橋接獲得更好的列印質量" msgid "Cooling overhang threshold" msgstr "冷卻懸空臨界值" @@ -6949,8 +7164,8 @@ msgid "" "of the line without support from lower layer. 0% means forcing cooling for " "all outer wall no matter how much overhang degree" msgstr "" -"當列印物件的懸空程度超過此值時,強制冷卻風扇達到特定速度。用百分比表示,表明沒" -"有下層支撐的線的寬度是多少。0%%意味著無論懸垂程度如何,都要對所有外壁強制冷" +"當列印物件的懸空程度超過此值時,強制冷卻風扇達到特定速度。用百分比表示,表明" +"沒有下層支撐的線的寬度是多少。0%%意味著無論懸垂程度如何,都要對所有外壁強制冷" "卻。" msgid "Bridge infill direction" @@ -7051,6 +7266,14 @@ msgstr "懸垂降速" msgid "Enable this option to slow printing down for different overhang degree" msgstr "打開這個選項將降低不同懸垂程度的走線的列印速度" +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "mm/s 或 %" @@ -7157,8 +7380,8 @@ msgid "" "quality for needle and small details" msgstr "" "勾選這個選項,將降低列印速度,使得最終的層列印時間不小於\"最大風扇速度臨界值" -"\"裡的層時間臨界值,從而使得該層獲得更久的冷卻。這能夠改善尖頂和小細節的冷卻效" -"果" +"\"裡的層時間臨界值,從而使得該層獲得更久的冷卻。這能夠改善尖頂和小細節的冷卻" +"效果" msgid "Normal printing" msgstr "普通列印" @@ -7183,6 +7406,23 @@ msgstr "默認切片配置" msgid "Default process profile when switch to this machine profile" msgstr "該機器的默認切片配置" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "風扇速度" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "關閉冷卻對前" @@ -7244,20 +7484,6 @@ msgid "" "thickness (top+bottom solid layers)" msgstr "在斜面表面附近增加實心填充,以保證垂直外殼厚度(頂部+底部實心層)" -msgid "Internal bridge support thickness" -msgstr "內部橋接支撐厚度" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" -"如果開啟, Orcaslicer 切片會沿著內部橋接的邊沿在其下方產生支撐輪廓。這些支撐" -"輪廓可以防止懸空地列印內部橋接並提高頂面質量,特別是在填充密度較低的情況下。" -"這個設置用於調整支撐輪廓的厚度,0表示關閉此特性。" - msgid "Top surface pattern" msgstr "頂面圖案" @@ -7813,7 +8039,12 @@ msgid "accel_to_decel" msgstr "煞車速度" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" msgstr "" msgid "Jerk of outer walls" @@ -8003,6 +8234,30 @@ msgstr "噴嘴硬度。零值表示在切片時不檢查噴嘴硬度。" msgid "HRC" msgstr "洛氏硬度" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "如果機器有輔助部件冷卻風扇,勾選該選項" @@ -8039,6 +8294,28 @@ msgstr "" "讓風扇滿速運行指定時間以幫助風扇順利啟動\n" "設為0禁用此選項" +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "G-code風格" @@ -8281,9 +8558,6 @@ msgstr "空駛最大加速度" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -msgid "Fan speed" -msgstr "風扇速度" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8298,6 +8572,55 @@ msgid "" "layer hight when enable adaptive layer height" msgstr "擠出頭最大可列印的層高。用於限制開啟自適應層高時的最大層高。" +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "部件冷卻風扇的最小轉速" @@ -8564,8 +8887,24 @@ msgid "" "clearance between nozzle and the print. It prevents nozzle from hitting the " "print when travel move. Using spiral line to lift z can prevent stringing" msgstr "" -"回抽完成之後,噴嘴輕微抬升,和列印物件之間產生一定間隙。這能夠避免空駛時噴嘴和" -"列印物件剮蹭和碰撞。使用螺旋線抬升z能夠減少拉絲。" +"回抽完成之後,噴嘴輕微抬升,和列印物件之間產生一定間隙。這能夠避免空駛時噴嘴" +"和列印物件剮蹭和碰撞。使用螺旋線抬升z能夠減少拉絲。" + +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" msgid "Z hop type" msgstr "抬Z類型" @@ -9031,14 +9370,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"支撐物的樣式和形狀。對於普通支撐,將支撐投射到一個規則的網格中,將創建更穩定" -"的支撐(默認),而緊貼的支撐塔將節省材料並減少物體的瑕疵。\n" -"對於樹形支撐,苗條板的風格將更積極地合併樹枝,並節省大量的材料(默認),而混" -"合風格將在大的平面懸垂下創建與正常支撐類似的結構。" msgid "Snug" msgstr "緊貼" @@ -9188,23 +9524,19 @@ msgstr "這個設置決定是否為樹狀支撐內部的空腔產生填充。" msgid "Chamber temperature" msgstr "機箱溫度" -msgid "Target chamber temperature" -msgstr "目標腔體溫度" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" +msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "除首層外的其它層的噴嘴溫度" -msgid "Bed temperature difference" -msgstr "熱床溫差" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"不建議其它層熱床溫度比首層的熱床溫度低於這個值。太低的其它層熱床溫度可能導致" -"列印過程中模型從列印板脫落。" - msgid "Detect thin wall" msgstr "檢查薄壁" @@ -9469,9 +9801,9 @@ msgid "" "this setting reduces the number and length of these center walls, but may " "leave gaps or overextrude" msgstr "" -"何時在偶數和奇數牆層數之間創建過渡段。角度大於這個臨界值的楔形將不創建過渡段," -"並且不會在楔形中心列印牆走線以填補剩餘空間。減小這個數值能減少中心牆走線的數" -"量和長度,但可能會導致間隙或者過擠出" +"何時在偶數和奇數牆層數之間創建過渡段。角度大於這個臨界值的楔形將不創建過渡" +"段,並且不會在楔形中心列印牆走線以填補剩餘空間。減小這個數值能減少中心牆走線" +"的數量和長度,但可能會導致間隙或者過擠出" msgid "Wall distribution count" msgstr "牆分布計數" @@ -9588,6 +9920,12 @@ msgstr "載入默認列印線材" msgid "Load first filament as default for those not loaded" msgstr "載入第一個列印線材為默認線材" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "" @@ -9642,14 +9980,39 @@ msgstr "重複次數" msgid "Repetions count of the whole model" msgstr "整個模型的重複次數" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "轉換單位" msgid "Convert the units of model" msgstr "轉換模型的單位" -msgid "Orient the model" -msgstr "旋轉模型" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "根據因子縮放模型" @@ -9705,6 +10068,12 @@ msgstr "" "設置除錯日誌等級。0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "zip文件中存在錯誤" @@ -9897,6 +10266,15 @@ msgstr "請輸入要保存到3D列印機的名稱。" msgid "The name cannot exceed 40 characters." msgstr "名稱不能超過40個字元。" +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "名稱不能為空。" @@ -9926,6 +10304,9 @@ msgstr "3D列印機尚未連接。" msgid "Please select filament to calibrate." msgstr "請選擇要校準的線材。" +msgid "The input value size must be 3." +msgstr "輸入值大小必須為3。" + msgid "Connecting to printer..." msgstr "正在連接3D列印機..." @@ -9944,9 +10325,6 @@ msgstr "請至少選擇一種線材進行校準。" msgid "Flow rate calibration result has been saved to preset" msgstr "流量比例校準結果已保存到預設" -msgid "The input value size must be 3." -msgstr "輸入值大小必須為3。" - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "最大體積速度校準結果已保存到預設值" @@ -10124,6 +10502,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "請在您的列印板上找到最佳線條" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "輸入值" @@ -10229,6 +10610,12 @@ msgstr "錯誤描述" msgid "Extra info" msgstr "額外資訊" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "方法" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s 與 %s 不相容" @@ -10239,6 +10626,21 @@ msgstr "不支援TPU進行流量動態自動校準。" msgid "Connecting to printer" msgstr "正在連接3D列印機" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "噴嘴直徑已從3D列印機設置同步" @@ -10351,6 +10753,9 @@ msgstr "" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" +msgid "Upload" +msgstr "上傳" + msgid "Print host upload queue" msgstr "列印主機上傳隊列" @@ -10412,9 +10817,6 @@ msgstr "劃線模式" msgid "PA Pattern" msgstr "V形模式" -msgid "Method" -msgstr "方法" - msgid "Start PA: " msgstr "起始值" @@ -10488,7 +10890,8 @@ msgstr "步距" msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10503,7 +10906,8 @@ msgstr "結束速度" msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10559,6 +10963,17 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "" +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -10803,3 +11218,110 @@ msgid "" msgstr "" "提高強度\n" "你知道嗎?你可以使用更多的牆層數和更高的疏散填充密度來提高模型的強度。" + +#~ msgid "Cali" +#~ msgstr "校準" + +#~ msgid "Calibration of extrusion" +#~ msgstr "擠出校準" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "將新的線材推入擠出機" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "其它層的熱床溫度比首層熱床溫度低太多,超過了攝氏 %d 度。\n" +#~ "這可能導致列印中模型從熱床脫落" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "熱床溫度超過了線材的軟化溫度,線材軟化可能造成噴頭堵塞。\n" +#~ "請保持3D列印機在列印過程中敞開,保證空氣流通或降低熱床溫度" + +#~ msgid "Total Time Estimation" +#~ msgstr "總時間預估" + +#~ msgid "Resonance frequency identification" +#~ msgstr "共振頻率辨識" + +#~ msgid "Immediately score" +#~ msgstr "立即打分" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "請為您喜歡的 Bambu 商城模型打分。" + +#~ msgid "Score" +#~ msgstr "打分" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "工程列印熱床" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "高溫列印熱床" + +#~ msgid "Can't connect to the printer" +#~ msgstr "無法連接3D列印機" + +#~ msgid "Recommended temperature range" +#~ msgstr "建議溫度範圍" + +#~ msgid "High Temp Plate" +#~ msgstr "高溫列印熱床" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "安裝高溫列印熱床時的熱床溫度。0值表示這個線材不支援高溫列印熱床" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "內部橋接支撐厚度" + +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges.These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "如果開啟, Orcaslicer 切片會沿著內部橋接的邊沿在其下方產生支撐輪廓。這些支" +#~ "撐輪廓可以防止懸空地列印內部橋接並提高頂面質量,特別是在填充密度較低的情況" +#~ "下。這個設置用於調整支撐輪廓的厚度,0表示關閉此特性。" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "支撐物的樣式和形狀。對於普通支撐,將支撐投射到一個規則的網格中,將創建更穩" +#~ "定的支撐(默認),而緊貼的支撐塔將節省材料並減少物體的瑕疵。\n" +#~ "對於樹形支撐,苗條板的風格將更積極地合併樹枝,並節省大量的材料(默認),而" +#~ "混合風格將在大的平面懸垂下創建與正常支撐類似的結構。" + +#~ msgid "Target chamber temperature" +#~ msgstr "目標腔體溫度" + +#~ msgid "Bed temperature difference" +#~ msgstr "熱床溫差" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "不建議其它層熱床溫度比首層的熱床溫度低於這個值。太低的其它層熱床溫度可能導" +#~ "致列印過程中模型從列印板脫落。" + +#~ msgid "Orient the model" +#~ msgstr "旋轉模型" diff --git a/localization/i18n/zh_cn/OrcaSlicer_zh_CN.po b/localization/i18n/zh_cn/OrcaSlicer_zh_CN.po index 6687b0247e..97569d1c72 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: 2023-09-12 20:34+0800\n" +"POT-Creation-Date: 2023-09-30 10:27+0800\n" "PO-Revision-Date: 2023-04-01 13:21+0800\n" "Last-Translator: Jiang Yue \n" "Language-Team: \n" @@ -651,6 +651,9 @@ msgstr "加载模式视图" msgid "Choose one file (3mf):" msgstr "选择一个文件(3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "选择一个或多个文件(3mf/step/stl/svg/obj/amf):" @@ -1475,6 +1478,9 @@ msgstr "连接中..." msgid "?" msgstr "?" +msgid "/" +msgstr "" + msgid "Empty" msgstr "空" @@ -1487,12 +1493,6 @@ msgstr "自动补给" msgid "AMS not connected" msgstr "AMS 未连接" -msgid "Cali" -msgstr "标定" - -msgid "Calibration of extrusion" -msgstr "挤出标定" - msgid "Load Filament" msgstr "进料" @@ -1523,6 +1523,9 @@ msgstr "重新校准" msgid "Cancel calibration" msgstr "取消校准" +msgid "Idling..." +msgstr "" + msgid "Heat the nozzle" msgstr "加热喷嘴" @@ -1538,8 +1541,14 @@ msgstr "送出新的耗材丝到挤出机" msgid "Purge old filament" msgstr "冲刷旧耗材丝" -msgid "Push new filament into the extruder" -msgstr "将新的耗材丝推入挤出机" +msgid "Feed Filament" +msgstr "" + +msgid "Confirm extruded" +msgstr "" + +msgid "Check filament location" +msgstr "" msgid "Grab new filament" msgstr "咬入耗材丝" @@ -2315,24 +2324,6 @@ msgid "" "centigrade" msgstr "该耗材的推荐喷嘴温度是[%d, %d]摄氏度" -#, c-format, boost-format -msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" -msgstr "" -"其它层的热床温度比首层热床温度低太多,超过了%d 摄氏度。\n" -"这可能导致打印中模型从热床脱落" - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" -msgstr "" -"热床温度超过了耗材丝的软化温度,材料软化可能造成喷头堵塞。\n" -"请保持打印机在打印过程中敞开,保证空气流通或降低热床温度" - msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" @@ -2340,6 +2331,13 @@ msgstr "" "最大体积流量设置过小\n" "重置为0.5" +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2392,6 +2390,9 @@ msgstr "" "旋转模式只能在外墙层数为1,关闭支撑,顶层层数为0,稀疏填充密度为0,传统延时摄" "影时有效。" +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr "" + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2516,6 +2517,36 @@ msgstr "热端温控异常暂停" msgid "Paused due to heat bed temperature malfunction" msgstr "热床温控异常暂停" +msgid "Filament unloading" +msgstr "" + +msgid "Skip step pause" +msgstr "" + +msgid "Filament loading" +msgstr "" + +msgid "Motor noise calibration" +msgstr "" + +msgid "Paused due to AMS lost" +msgstr "" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" + +msgid "Paused due to chamber temperature control error" +msgstr "" + +msgid "Cooling chamber" +msgstr "" + +msgid "Paused by the Gcode inserted by user" +msgstr "" + +msgid "Motor noise showoff" +msgstr "" + msgid "MC" msgstr "" @@ -2552,6 +2583,24 @@ msgstr "验证失败。" msgid "Update failed." msgstr "更新失败。" +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" + msgid "Failed to start printing job" msgstr "发起打印任务失败" @@ -2680,12 +2729,15 @@ msgstr "冲刷" msgid "Total" msgstr "总计" -msgid "Total Time Estimation" -msgstr "总时间预估" +msgid "Total Estimation" +msgstr "总预估" msgid "Total time" msgstr "总时间" +msgid "Total cost" +msgstr "" + msgid "up to" msgstr "达到" @@ -2773,9 +2825,6 @@ msgstr "打印机" msgid "Print settings" msgstr "打印设置" -msgid "Total Estimation" -msgstr "总预估" - msgid "Time Estimation" msgstr "时间预估" @@ -2885,6 +2934,9 @@ msgstr "允许同一盘中包含多种材料" msgid "Avoid extrusion calibration region" msgstr "避开挤出标定区域" +msgid "Align to Y axis" +msgstr "" + msgid "Add" msgstr "添加" @@ -2979,8 +3031,11 @@ msgstr "微激光雷达校准" msgid "Bed leveling" msgstr "热床调平" -msgid "Resonance frequency identification" -msgstr "共振频率辨识" +msgid "Vibration compensation" +msgstr "" + +msgid "Motor noise cancellation" +msgstr "" msgid "Calibration program" msgstr "校准程序" @@ -2999,6 +3054,9 @@ msgstr "校准流程" msgid "Start Calibration" msgstr "开始校准" +msgid "No step selected" +msgstr "" + msgid "Completed" msgstr "已完成" @@ -3075,9 +3133,6 @@ msgstr "否" msgid "will be closed before creating a new model. Do you want to continue?" msgstr "将会被关闭以创建新模型,是否继续?" -msgid "Upload" -msgstr "上传" - msgid "Slice plate" msgstr "切片单盘" @@ -3737,12 +3792,20 @@ msgstr "" msgid "Layer: N/A" msgstr "层: N/A" -msgid "Immediately score" -msgstr "立即打分" - msgid "Clear" msgstr "清除" +msgid "How do you like this printing file?" +msgstr "" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" + +msgid "Rate" +msgstr "" + msgid "Camera" msgstr "摄像机" @@ -3808,12 +3871,6 @@ msgstr "前面还有%s个任务在云端切片队列中" msgid "Layer: %s" msgstr "层: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "请为您喜欢的 Bambu 商城模型打分。" - -msgid "Score" -msgstr "打分" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "层: %d/%d" @@ -3853,6 +3910,97 @@ msgstr "狂暴" msgid "Can't start this without SD card." msgstr "没有SD卡无法开始任务" +msgid "Rate the Print Profile" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Rate this print" +msgstr "" + +msgid "Add Photo" +msgstr "" + +msgid "Delete Photo" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Please click on the star first." +msgstr "" + +msgid "InFo" +msgstr "" + +msgid "Get oss config failed." +msgstr "" + +msgid "Upload Pictrues" +msgstr "" + +msgid "Number of images successfully uploaded" +msgstr "" + +msgid " upload failed" +msgstr "" + +msgid " upload config prase failed\n" +msgstr "" + +msgid " No corresponding storage bucket\n" +msgstr "" + +msgid " can not be opened\n" +msgstr "" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" + +msgid "info" +msgstr "信息" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" + +msgid "Upload failed\n" +msgstr "" + +msgid "obtaining instance_id failed\n" +msgstr "" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" + +msgid "error message: " +msgstr "" + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" + +msgid "You can select up to 16 images." +msgstr "" + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" + msgid "Status" msgstr "设备状态" @@ -3976,6 +4124,9 @@ msgstr "警告:" msgid "Export successfully." msgstr "导出成功." +msgid "Model file downloaded." +msgstr "" + msgid "Serious warning:" msgstr "严重警告:" @@ -4057,6 +4208,9 @@ msgstr "首层扫描" msgid "Auto-recovery from step loss" msgstr "自动从丢步中恢复" +msgid "Allow Prompt Sound" +msgstr "" + msgid "Global" msgstr "全局" @@ -4200,6 +4354,11 @@ msgstr "" "打印丝所要求的喷嘴硬度高于打印机默认的喷嘴硬度。请更换硬化的喷嘴或打印丝,否" "则喷嘴可能被磨损或损坏。" +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" + #, c-format, boost-format msgid "Loading file: %s" msgstr "加载文件:%s" @@ -4400,6 +4559,11 @@ msgstr "项目下载中..." msgid "Project downloaded %d%%" msgstr "项目已下载%d%%" +msgid "" +"Importing to Bambu Studio failed. Please download the file and manually " +"import it." +msgstr "" + msgid "The selected file" msgstr "已选择的文件" @@ -4772,9 +4936,6 @@ msgstr "错误" msgid "warning" msgstr "警告" -msgid "info" -msgstr "信息" - msgid "debug" msgstr "调试" @@ -5024,11 +5185,17 @@ msgstr "低温打印热床" msgid "PLA Plate" msgstr "PLA打印板" -msgid "Bamabu Engineering Plate" -msgstr "工程打印热床" +msgid "Bambu Engineering Plate" +msgstr "" -msgid "Bamabu High Temperature Plate" -msgstr "高温打印热床" +msgid "Bambu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "" + +msgid "Bambu Textured PEI Plate" +msgstr "" msgid "Send print job to" msgstr "发送打印任务至" @@ -5042,8 +5209,8 @@ msgstr "热床调平" msgid "Flow Dynamics Calibration" msgstr "动态流量校准" -msgid "Can't connect to the printer" -msgstr "无法连接打印机" +msgid "Click here if you can't connect to the printer" +msgstr "" msgid "send completed" msgstr "发送完成" @@ -5143,6 +5310,16 @@ msgstr "无法为空盘发送打印任务" msgid "This printer does not support printing all plates" msgstr "此打印机类型不支持打印所有盘" +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" + +msgid "" +"When print by object, machines with I3 structure will not generate timelapse " +"videos." +msgstr "" + msgid "Errors" msgstr "错误" @@ -5445,6 +5622,9 @@ msgstr "筏层" msgid "Support filament" msgstr "支撑耗材" +msgid "Tree supports" +msgstr "" + msgid "Prime tower" msgstr "擦拭塔" @@ -5494,9 +5674,6 @@ msgstr "建议喷嘴温度" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "该材料的建议喷嘴温度范围。0表示未设置" -msgid "Recommended temperature range" -msgstr "建议温度范围" - msgid "Print temperature" msgstr "打印温度" @@ -5522,13 +5699,14 @@ msgid "" "filament does not support to print on the Engineering Plate" msgstr "安装工程材料热床时的热床温度。0值表示这个耗材丝不支持工程材料热床" -msgid "High Temp Plate" -msgstr "高温打印热床" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" -msgstr "安装高温打印热床时的热床温度。0值表示这个耗材丝不支持高温打印热床" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" +msgstr "" msgid "Textured PEI Plate" msgstr "纹理PEI热床" @@ -5573,6 +5751,15 @@ msgstr "当预计的层打印时间比设置值要短时,部件冷却风扇转 msgid "Auxiliary part cooling fan" msgstr "辅助部件冷却风扇" +msgid "Exhaust fan" +msgstr "" + +msgid "During print" +msgstr "" + +msgid "Complete print" +msgstr "" + msgid "Filament start G-code" msgstr "耗材丝起始G-code" @@ -5624,6 +5811,9 @@ msgstr "换层前G-code" msgid "Layer change G-code" msgstr "换层G-code" +msgid "Time lapse G-code" +msgstr "" + msgid "Change filament G-code" msgstr "耗材丝更换G-code" @@ -6451,6 +6641,11 @@ msgstr "多个" msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "计算 %1%的线宽失败。无法获得 \"%2%\" 的值" +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" + msgid "undefined error" msgstr "未定义错误" @@ -6597,6 +6792,24 @@ msgid "" "materials." msgstr "不支持在包含多个材料的打印中使用旋转花瓶模式。" +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "" + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "擦拭塔不支持在逐件打印模式下使用。" @@ -7050,6 +7263,14 @@ msgstr "悬垂降速" msgid "Enable this option to slow printing down for different overhang degree" msgstr "打开这个选项将降低不同悬垂程度的走线的打印速度" +msgid "Slow down for curled perimeters" +msgstr "" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" + msgid "mm/s or %" msgstr "mm/s 或 %" @@ -7182,6 +7403,23 @@ msgstr "默认切片配置" msgid "Default process profile when switch to this machine profile" msgstr "该机器的默认切片配置" +msgid "Activate air filtration" +msgstr "" + +msgid "Activate for better air filtration" +msgstr "" + +msgid "Fan speed" +msgstr "风扇速度" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" + +msgid "Speed of exhuast fan after printing completes" +msgstr "" + msgid "No cooling for the first" msgstr "关闭冷却对前" @@ -7243,20 +7481,6 @@ msgid "" "thickness (top+bottom solid layers)" msgstr "在斜面表面附近添加实心填充,以保证垂直外壳厚度(顶部+底部实心层)" -msgid "Internal bridge support thickness" -msgstr "内部桥接支撑厚度" - -msgid "" -"If enabled, support loops will be generated under the contours of internal " -"bridges.These support loops could prevent internal bridges from extruding " -"over the air and improve the top surface quality, especially when the sparse " -"infill density is low.This value determines the thickness of the support " -"loops. 0 means disable this feature" -msgstr "" -"如果开启,逆戟鲸切片会沿着内部桥接的边沿在其下方生成支撑轮廓。这些支撑轮廓可" -"以防止悬空地打印内部桥接并提高顶面质量,特别是在填充密度较低的情况下。这个设" -"置用于调整支撑轮廓的厚度,0表示关闭此特性。" - msgid "Top surface pattern" msgstr "顶面图案" @@ -7812,7 +8036,12 @@ msgid "accel_to_decel" msgstr "制动速度" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" + +#, c-format, boost-format +msgid "%%" msgstr "" msgid "Jerk of outer walls" @@ -8002,6 +8231,30 @@ msgstr "喷嘴硬度。零值表示在切片时不检查喷嘴硬度。" msgid "HRC" msgstr "洛氏硬度" +msgid "Printer structure" +msgstr "" + +msgid "The physical arrangement and components of a printing device" +msgstr "" + +msgid "CoreXY" +msgstr "" + +msgid "I3" +msgstr "" + +msgid "Hbot" +msgstr "" + +msgid "Delta" +msgstr "" + +msgid "Best object position" +msgstr "" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" + msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "如果机器有辅助部件冷却风扇,勾选该选项" @@ -8038,6 +8291,28 @@ msgstr "" "让风扇满速运行指定时间以帮助风扇顺利启动\n" "设为0禁用此选项" +msgid "Time cost" +msgstr "" + +msgid "The printer cost per hour" +msgstr "" + +msgid "money/h" +msgstr "" + +msgid "Support control chamber temperature" +msgstr "" + +msgid "" +"This option is enabled if machine support controlling chamber temperature" +msgstr "" + +msgid "Support air filtration" +msgstr "" + +msgid "Enable this if printer support air filtration" +msgstr "" + msgid "G-code flavor" msgstr "G-code风格" @@ -8280,9 +8555,6 @@ msgstr "空驶最大加速度" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -msgid "Fan speed" -msgstr "风扇速度" - msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" @@ -8297,6 +8569,55 @@ msgid "" "layer hight when enable adaptive layer height" msgstr "挤出头最大可打印的层高。用于限制开启自适应层高时的最大层高。" +msgid "Extrusion rate smoothing" +msgstr "" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" + +msgid "mm³/s²" +msgstr "" + +msgid "Smoothing segment length" +msgstr "" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" + msgid "Minimum speed for part cooling fan" msgstr "部件冷却风扇的最小转速" @@ -8566,6 +8887,22 @@ msgstr "" "回抽完成之后,喷嘴轻微抬升,和打印件之间产生一定间隙。这能够避免空驶时喷嘴和" "打印件剐蹭和碰撞。使用螺旋线抬升z能够减少拉丝。" +msgid "Z hop lower boundary" +msgstr "" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" + +msgid "Z hop upper boundary" +msgstr "" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" + msgid "Z hop type" msgstr "抬Z类型" @@ -9031,14 +9368,11 @@ msgid "" "Style and shape of the support. For normal support, projecting the supports " "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"支撑物的样式和形状。对于普通支撑,将支撑投射到一个规则的网格中,将创建更稳定" -"的支撑(默认),而紧贴的支撑塔将节省材料并减少物体的瑕疵。\n" -"对于树形支撑,苗条板的风格将更积极地合并树枝,并节省大量的材料(默认),而混" -"合风格将在大的平面悬垂下创建与正常支撑类似的结构。" msgid "Snug" msgstr "紧贴" @@ -9188,23 +9522,19 @@ msgstr "这个设置决定是否为树状支撑内部的空腔生成填充。" msgid "Chamber temperature" msgstr "机箱温度" -msgid "Target chamber temperature" -msgstr "目标腔体温度" +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" +msgstr "" msgid "Nozzle temperature for layers after the initial one" msgstr "除首层外的其它层的喷嘴温度" -msgid "Bed temperature difference" -msgstr "热床温差" - -msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" -msgstr "" -"不建议其它层热床温度比首层的热床温度低于这个值。太低的其它层热床温度可能导致" -"打印过程中模型从打印板脱落。" - msgid "Detect thin wall" msgstr "检查薄壁" @@ -9588,6 +9918,12 @@ msgstr "加载默认打印材料" msgid "Load first filament as default for those not loaded" msgstr "加载第一个打印材料为默认材料" +msgid "Minimum save" +msgstr "" + +msgid "export 3mf with minimum size." +msgstr "" + msgid "mtcpp" msgstr "" @@ -9642,14 +9978,39 @@ msgstr "重复次数" msgid "Repetions count of the whole model" msgstr "整个模型的重复次数" +msgid "Ensure on bed" +msgstr "" + +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" + msgid "Convert Unit" msgstr "转换单位" msgid "Convert the units of model" msgstr "转换模型的单位" -msgid "Orient the model" -msgstr "旋转模型" +msgid "Orient Options" +msgstr "" + +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" + +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +msgid "Rotate around X" +msgstr "" + +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +msgid "Rotate around Y" +msgstr "" + +msgid "Rotation angle around the Y axis in degrees." +msgstr "" msgid "Scale the model by a float factor" msgstr "根据因子缩放模型" @@ -9705,6 +10066,12 @@ msgstr "" "设置调试日志等级。0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" +msgid "Load custom gcode" +msgstr "" + +msgid "Load custom gcode from json" +msgstr "" + msgid "Error in zip archive" msgstr "zip文件中存在错误" @@ -9897,6 +10264,15 @@ msgstr "请输入要保存到打印机的名称。" msgid "The name cannot exceed 40 characters." msgstr "名称不能超过40个字符。" +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" + msgid "The name cannot be empty." msgstr "名称不能为空。" @@ -9926,6 +10302,9 @@ msgstr "打印机尚未连接。" msgid "Please select filament to calibrate." msgstr "请选择要校准的耗材丝。" +msgid "The input value size must be 3." +msgstr "输入值大小必须为3。" + msgid "Connecting to printer..." msgstr "正在连接打印机..." @@ -9944,9 +10323,6 @@ msgstr "请至少选择一种材料进行校准。" msgid "Flow rate calibration result has been saved to preset" msgstr "流量比例校准结果已保存到预设" -msgid "The input value size must be 3." -msgstr "输入值大小必须为3。" - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "最大体积速度校准结果已保存到预设值" @@ -10124,6 +10500,9 @@ msgstr "" msgid "Please find the best line on your plate" msgstr "请在您的打印板上找到最佳线条" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "" + msgid "Input Value" msgstr "输入值" @@ -10229,6 +10608,12 @@ msgstr "错误描述" msgid "Extra info" msgstr "额外信息" +msgid "Pattern" +msgstr "" + +msgid "Method" +msgstr "方法" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s 与 %s 不兼容" @@ -10239,6 +10624,21 @@ msgstr "不支持TPU进行流量动态自动校准。" msgid "Connecting to printer" msgstr "正在连接打印机" +msgid "From k Value" +msgstr "" + +msgid "To k Value" +msgstr "" + +msgid "Step value" +msgstr "" + +msgid "0.5" +msgstr "" + +msgid "0.005" +msgstr "" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "喷嘴直径已从打印机设置同步" @@ -10351,6 +10751,9 @@ msgstr "" msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "" +msgid "Upload" +msgstr "上传" + msgid "Print host upload queue" msgstr "打印主机上传队列" @@ -10412,9 +10815,6 @@ msgstr "划线模式" msgid "PA Pattern" msgstr "V形模式" -msgid "Method" -msgstr "方法" - msgid "Start PA: " msgstr "起始值" @@ -10488,7 +10888,8 @@ msgstr "步距" msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10503,7 +10904,8 @@ msgstr "结束速度" msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" @@ -10559,6 +10961,17 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "" +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Need select printer" +msgstr "" + #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" @@ -10803,3 +11216,110 @@ msgid "" msgstr "" "提高强度\n" "你知道吗?你可以使用更多的墙层数和更高的疏散填充密度来提高模型的强度。" + +#~ msgid "Cali" +#~ msgstr "标定" + +#~ msgid "Calibration of extrusion" +#~ msgstr "挤出标定" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "将新的耗材丝推入挤出机" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "其它层的热床温度比首层热床温度低太多,超过了%d 摄氏度。\n" +#~ "这可能导致打印中模型从热床脱落" + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "热床温度超过了耗材丝的软化温度,材料软化可能造成喷头堵塞。\n" +#~ "请保持打印机在打印过程中敞开,保证空气流通或降低热床温度" + +#~ msgid "Total Time Estimation" +#~ msgstr "总时间预估" + +#~ msgid "Resonance frequency identification" +#~ msgstr "共振频率辨识" + +#~ msgid "Immediately score" +#~ msgstr "立即打分" + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "请为您喜欢的 Bambu 商城模型打分。" + +#~ msgid "Score" +#~ msgstr "打分" + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "工程打印热床" + +#~ msgid "Bamabu High Temperature Plate" +#~ msgstr "高温打印热床" + +#~ msgid "Can't connect to the printer" +#~ msgstr "无法连接打印机" + +#~ msgid "Recommended temperature range" +#~ msgstr "建议温度范围" + +#~ msgid "High Temp Plate" +#~ msgstr "高温打印热床" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "安装高温打印热床时的热床温度。0值表示这个耗材丝不支持高温打印热床" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "内部桥接支撑厚度" + +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges.These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "如果开启,逆戟鲸切片会沿着内部桥接的边沿在其下方生成支撑轮廓。这些支撑轮廓" +#~ "可以防止悬空地打印内部桥接并提高顶面质量,特别是在填充密度较低的情况下。这" +#~ "个设置用于调整支撑轮廓的厚度,0表示关闭此特性。" + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "支撑物的样式和形状。对于普通支撑,将支撑投射到一个规则的网格中,将创建更稳" +#~ "定的支撑(默认),而紧贴的支撑塔将节省材料并减少物体的瑕疵。\n" +#~ "对于树形支撑,苗条板的风格将更积极地合并树枝,并节省大量的材料(默认),而" +#~ "混合风格将在大的平面悬垂下创建与正常支撑类似的结构。" + +#~ msgid "Target chamber temperature" +#~ msgstr "目标腔体温度" + +#~ msgid "Bed temperature difference" +#~ msgstr "热床温差" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "不建议其它层热床温度比首层的热床温度低于这个值。太低的其它层热床温度可能导" +#~ "致打印过程中模型从打印板脱落。" + +#~ msgid "Orient the model" +#~ msgstr "旋转模型" diff --git a/resources/config.json b/resources/config.json index 1e9a2acd4d..ebd7145769 100644 --- a/resources/config.json +++ b/resources/config.json @@ -14,15 +14,17 @@ "FUNC_VIRTUAL_CAMERA": false, "FUNC_PRINT_WITHOUT_SD": false, "FUNC_ALTER_RESOLUTION": false, - "FUNC_PRINT_ALL": false, - "FUNC_EXTRUSION_CALI": true + "FUNC_EXTRUSION_CALI": true, + "FUNC_MOTOR_NOISE_CALI": false, + "FUNC_PROMPT_SOUND": false, + "FUNC_VIRTUAL_TYAY": true }, "camera_resolution": [ "720p" ], "bed_temperature_limit": 100, "model_id": "C11", "printer_type": "C11", - "compatible_machine": [ "BL-P001", "BL-P002", "C12"], + "compatible_machine": [ "BL-P001", "BL-P002", "C12", "C13"], "ftp_folder": "sdcard/", "printer_thumbnail_image": "printer_thumbnail_p1p" }, @@ -41,40 +43,86 @@ "FUNC_PRINT_WITHOUT_SD": false, "FUNC_ALTER_RESOLUTION": false, "FUNC_PRINT_ALL": false, - "FUNC_VIRTUAL_TYAY": true, - "FUNC_EXTRUSION_CALI": true + "FUNC_MOTOR_NOISE_CALI": false, + "FUNC_PROMPT_SOUND": false, + "FUNC_VIRTUAL_TYAY": true }, "camera_resolution": [ "720p" ], "bed_temperature_limit": 100, "model_id": "C12", - "compatible_machine":["BL-P001", "BL-P002", "C11"], + "compatible_machine":["BL-P001", "BL-P002", "C11", "C13"], "printer_type": "C12", "ftp_folder" : "sdcard/", "printer_thumbnail_image": "printer_thumbnail_p1p" }, { - + "display_name": "Bambu Lab A1 mini", + "func": { + "FUNC_CHAMBER_TEMP": false, + "FUNC_FIRSTLAYER_INSPECT": false, + "FUNC_AI_MONITORING": false, + "FUNC_BUILDPLATE_MARKER_DETECT": false, + "FUNC_FLOW_CALIBRATION": true, + "FUNC_MONITORING": false, + "FUNC_MEDIA_FILE": false, + "FUNC_VIRTUAL_CAMERA": false, + "FUNC_PRINT_WITHOUT_SD": false, + "FUNC_ALTER_RESOLUTION": true, + "FUNC_CHAMBER_FAN": false, + "FUNC_AUX_FAN": false, + "FUNC_UPDATE_REMAIN": false, + "FUNC_EXTRUSION_CALI": false, + "FUNC_AUTO_LEVELING": true + }, + "printer_arch" : "i3", + "camera_resolution": [ "720p" ], + "bed_temperature_limit": 100, + "model_id": "N1", + "compatible_machine":[], + "printer_type": "N1", + "ftp_folder" : "sdcard/", + "printer_thumbnail_image": "printer_thumbnail_n1" + }, + { "display_name": "Bambu Lab X1", "func": { + "FUNC_CHAMBER_TEMP": false, "FUNC_VIRTUAL_TYAY": true, "FUNC_EXTRUSION_CALI": false, - "FUNC_LOCAL_TUNNEL": false + "FUNC_MOTOR_NOISE_CALI": false, + "FUNC_PROMPT_SOUND": false }, "model_id": "BL-P002", - "compatible_machine": [ "BL-P001", "C11", "C12"], + "compatible_machine": [ "BL-P001", "C11", "C12", "C13"], "camera_resolution": [ "720p", "1080p" ], "printer_type": "3DPrinter-X1", "printer_thumbnail_image": "printer_thumbnail" }, + { + "display_name": "Bambu Lab X1E", + "func": { + "FUNC_MOTOR_NOISE_CALI": false, + "FUNC_PROMPT_SOUND": false + }, + "camera_resolution": [ "720p", "1080p" ], + "nozzle_max_temperature": 330, + "model_id": "C13", + "compatible_machine": [ "BL-P001", "BL-P002", "C11", "C12"], + "printer_type": "C13", + "printer_thumbnail_image": "printer_thumbnail" + }, { "display_name": "Bambu Lab X1 Carbon", "func": { + "FUNC_CHAMBER_TEMP": false, "FUNC_VIRTUAL_TYAY": true, "FUNC_EXTRUSION_CALI": false, - "FUNC_LOCAL_TUNNEL": false + "FUNC_LOCAL_TUNNEL": false, + "FUNC_MOTOR_NOISE_CALI": false, + "FUNC_PROMPT_SOUND": false }, "model_id": "BL-P001", - "compatible_machine": [ "BL-P002", "C11", "C12"], + "compatible_machine": [ "BL-P002", "C11", "C12", "C13"], "camera_resolution": [ "720p", "1080p" ], "printer_type": "3DPrinter-X1-Carbon", "printer_thumbnail_image": "printer_thumbnail" diff --git a/resources/handy_models/Disc.stl b/resources/handy_models/Disc.stl new file mode 100644 index 0000000000..f19bf81fff Binary files /dev/null and b/resources/handy_models/Disc.stl differ diff --git a/resources/images/ams_extra_framework_mid.svg b/resources/images/ams_extra_framework_mid.svg new file mode 100644 index 0000000000..480ae748b2 --- /dev/null +++ b/resources/images/ams_extra_framework_mid.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/bbl_bed_ep_bottom.svg b/resources/images/bbl_bed_ep_bottom.svg index 8c33731392..2ef998bbac 100644 --- a/resources/images/bbl_bed_ep_bottom.svg +++ b/resources/images/bbl_bed_ep_bottom.svg @@ -1,71 +1,71 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_ep_left.svg b/resources/images/bbl_bed_ep_left.svg index 06d0b10917..5ae83ea4a6 100644 --- a/resources/images/bbl_bed_ep_left.svg +++ b/resources/images/bbl_bed_ep_left.svg @@ -1,26 +1,23 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_pc_bottom.svg b/resources/images/bbl_bed_pc_bottom.svg index cccc20063b..357994a0fb 100644 --- a/resources/images/bbl_bed_pc_bottom.svg +++ b/resources/images/bbl_bed_pc_bottom.svg @@ -1,67 +1,67 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_pc_left.svg b/resources/images/bbl_bed_pc_left.svg index d8acdd5b13..5d3d787754 100644 --- a/resources/images/bbl_bed_pc_left.svg +++ b/resources/images/bbl_bed_pc_left.svg @@ -1,18 +1,16 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_pei_bottom.svg b/resources/images/bbl_bed_pei_bottom.svg index 8143d03a23..57303a7f5d 100644 --- a/resources/images/bbl_bed_pei_bottom.svg +++ b/resources/images/bbl_bed_pei_bottom.svg @@ -1,68 +1,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_pei_left.svg b/resources/images/bbl_bed_pei_left.svg index 11ca8892bd..91fe150403 100644 --- a/resources/images/bbl_bed_pei_left.svg +++ b/resources/images/bbl_bed_pei_left.svg @@ -1,28 +1,35 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_pte_bottom.svg b/resources/images/bbl_bed_pte_bottom.svg index cf00a644d9..529471e530 100644 --- a/resources/images/bbl_bed_pte_bottom.svg +++ b/resources/images/bbl_bed_pte_bottom.svg @@ -1,33 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_pte_left.svg b/resources/images/bbl_bed_pte_left.svg index ce812d76ba..c2ddff20d9 100644 --- a/resources/images/bbl_bed_pte_left.svg +++ b/resources/images/bbl_bed_pte_left.svg @@ -1,34 +1,23 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/enable_ams_disable.svg b/resources/images/enable_ams_disable.svg new file mode 100644 index 0000000000..69060f2a12 --- /dev/null +++ b/resources/images/enable_ams_disable.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/extra_ams_tray_left.svg b/resources/images/extra_ams_tray_left.svg new file mode 100644 index 0000000000..f2aae5c5ef --- /dev/null +++ b/resources/images/extra_ams_tray_left.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/images/extra_ams_tray_left_hover.svg b/resources/images/extra_ams_tray_left_hover.svg new file mode 100644 index 0000000000..aff51a25df --- /dev/null +++ b/resources/images/extra_ams_tray_left_hover.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/images/extra_ams_tray_left_selected.svg b/resources/images/extra_ams_tray_left_selected.svg new file mode 100644 index 0000000000..b63329c06c --- /dev/null +++ b/resources/images/extra_ams_tray_left_selected.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/images/extra_ams_tray_right.svg b/resources/images/extra_ams_tray_right.svg new file mode 100644 index 0000000000..993222a8de --- /dev/null +++ b/resources/images/extra_ams_tray_right.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/images/extra_ams_tray_right_hover.svg b/resources/images/extra_ams_tray_right_hover.svg new file mode 100644 index 0000000000..01a634981a --- /dev/null +++ b/resources/images/extra_ams_tray_right_hover.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/images/extra_ams_tray_right_selected.svg b/resources/images/extra_ams_tray_right_selected.svg new file mode 100644 index 0000000000..3fbb312a79 --- /dev/null +++ b/resources/images/extra_ams_tray_right_selected.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/images/fd_pattern_manual.png b/resources/images/fd_pattern_manual.png new file mode 100644 index 0000000000..2aefb4edb1 Binary files /dev/null and b/resources/images/fd_pattern_manual.png differ diff --git a/resources/images/fd_pattern_manual_result.png b/resources/images/fd_pattern_manual_result.png new file mode 100644 index 0000000000..dfea0e00bf Binary files /dev/null and b/resources/images/fd_pattern_manual_result.png differ diff --git a/resources/images/fd_pattern_manual_result_CN.png b/resources/images/fd_pattern_manual_result_CN.png new file mode 100644 index 0000000000..255aed5f0e Binary files /dev/null and b/resources/images/fd_pattern_manual_result_CN.png differ diff --git a/resources/images/input_access_code_n1_cn.png b/resources/images/input_access_code_n1_cn.png new file mode 100644 index 0000000000..773dc0314b Binary files /dev/null and b/resources/images/input_access_code_n1_cn.png differ diff --git a/resources/images/input_access_code_n1_en.png b/resources/images/input_access_code_n1_en.png new file mode 100644 index 0000000000..0ebdf87fc2 Binary files /dev/null and b/resources/images/input_access_code_n1_en.png differ diff --git a/resources/images/monitor_network_wired.svg b/resources/images/monitor_network_wired.svg new file mode 100644 index 0000000000..8a6a0716b3 --- /dev/null +++ b/resources/images/monitor_network_wired.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/resources/images/monitor_upgrade_f1.svg b/resources/images/monitor_upgrade_f1.svg new file mode 100644 index 0000000000..eec95433ff --- /dev/null +++ b/resources/images/monitor_upgrade_f1.svg @@ -0,0 +1,502 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/open_in_browser.svg b/resources/images/open_in_browser.svg new file mode 100644 index 0000000000..c445ea26ee --- /dev/null +++ b/resources/images/open_in_browser.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/resources/images/oss_picture_load_failed.png b/resources/images/oss_picture_load_failed.png new file mode 100644 index 0000000000..d436988a7d Binary files /dev/null and b/resources/images/oss_picture_load_failed.png differ diff --git a/resources/images/oss_picture_loading.png b/resources/images/oss_picture_loading.png new file mode 100644 index 0000000000..9dd4029b3b Binary files /dev/null and b/resources/images/oss_picture_loading.png differ diff --git a/resources/images/printer_thumbnail_n1.svg b/resources/images/printer_thumbnail_n1.svg new file mode 100644 index 0000000000..87022438d7 --- /dev/null +++ b/resources/images/printer_thumbnail_n1.svg @@ -0,0 +1,1295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/printer_thumbnail_n1_dark.svg b/resources/images/printer_thumbnail_n1_dark.svg new file mode 100644 index 0000000000..87022438d7 --- /dev/null +++ b/resources/images/printer_thumbnail_n1_dark.svg @@ -0,0 +1,1295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/score_star_dark.svg b/resources/images/score_star_dark.svg new file mode 100644 index 0000000000..d703eafb73 --- /dev/null +++ b/resources/images/score_star_dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/score_star_light.svg b/resources/images/score_star_light.svg new file mode 100644 index 0000000000..909390e078 --- /dev/null +++ b/resources/images/score_star_light.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/single_little_photo.svg b/resources/images/single_little_photo.svg new file mode 100644 index 0000000000..3b1bedb466 --- /dev/null +++ b/resources/images/single_little_photo.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/resources/images/single_little_photo_dark.svg b/resources/images/single_little_photo_dark.svg new file mode 100644 index 0000000000..915faa0fa8 --- /dev/null +++ b/resources/images/single_little_photo_dark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index d5e9c58828..3878929990 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.07.00.18", + "version": "01.07.00.25", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ @@ -20,6 +20,10 @@ { "name": "Bambu Lab P1S", "sub_path": "machine/Bambu Lab P1S.json" + }, + { + "name": "Bambu Lab A1 mini", + "sub_path": "machine/Bambu Lab A1 mini.json" } ], "process_list": [ @@ -67,94 +71,6 @@ "name": "fdm_process_bbl_0.28", "sub_path": "process/fdm_process_bbl_0.28.json" }, - { - "name": "0.08mm Extra Fine @BBL X1C", - "sub_path": "process/0.08mm Extra Fine @BBL X1C.json" - }, - { - "name": "0.12mm Fine @BBL X1C", - "sub_path": "process/0.12mm Fine @BBL X1C.json" - }, - { - "name": "0.16mm Optimal @BBL X1C", - "sub_path": "process/0.16mm Optimal @BBL X1C.json" - }, - { - "name": "0.20mm Standard @BBL X1C", - "sub_path": "process/0.20mm Standard @BBL X1C.json" - }, - { - "name": "0.20mm Strength @BBL X1C", - "sub_path": "process/0.20mm Strength @BBL X1C.json" - }, - { - "name": "0.24mm Draft @BBL X1C", - "sub_path": "process/0.24mm Draft @BBL X1C.json" - }, - { - "name": "0.28mm Extra Draft @BBL X1C", - "sub_path": "process/0.28mm Extra Draft @BBL X1C.json" - }, - { - "name": "0.10mm Standard @BBL X1C 0.2 nozzle", - "sub_path": "process/0.10mm Standard @BBL X1C 0.2 nozzle.json" - }, - { - "name": "0.30mm Standard @BBL X1C 0.6 nozzle", - "sub_path": "process/0.30mm Standard @BBL X1C 0.6 nozzle.json" - }, - { - "name": "0.30mm Standard @BBL X1 0.6 nozzle", - "sub_path": "process/0.30mm Standard @BBL X1 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @BBL X1C 0.8 nozzle", - "sub_path": "process/0.40mm Standard @BBL X1C 0.8 nozzle.json" - }, - { - "name": "0.40mm Standard @BBL X1 0.8 nozzle", - "sub_path": "process/0.40mm Standard @BBL X1 0.8 nozzle.json" - }, - { - "name": "0.10mm Standard @BBL P1P 0.2 nozzle", - "sub_path": "process/0.10mm Standard @BBL P1P 0.2 nozzle.json" - }, - { - "name": "0.20mm Standard @BBL P1P", - "sub_path": "process/0.20mm Standard @BBL P1P.json" - }, - { - "name": "0.30mm Standard @BBL P1P 0.6 nozzle", - "sub_path": "process/0.30mm Standard @BBL P1P 0.6 nozzle.json" - }, - { - "name": "0.08mm Extra Fine @BBL P1P", - "sub_path": "process/0.08mm Extra Fine @BBL P1P.json" - }, - { - "name": "0.12mm Fine @BBL P1P", - "sub_path": "process/0.12mm Fine @BBL P1P.json" - }, - { - "name": "0.16mm Optimal @BBL P1P", - "sub_path": "process/0.16mm Optimal @BBL P1P.json" - }, - { - "name": "0.20mm Strength @BBL P1P", - "sub_path": "process/0.20mm Strength @BBL P1P.json" - }, - { - "name": "0.24mm Draft @BBL P1P", - "sub_path": "process/0.24mm Draft @BBL P1P.json" - }, - { - "name": "0.28mm Extra Draft @BBL P1P", - "sub_path": "process/0.28mm Extra Draft @BBL P1P.json" - }, - { - "name": "0.40mm Standard @BBL P1P 0.8 nozzle", - "sub_path": "process/0.40mm Standard @BBL P1P 0.8 nozzle.json" - }, { "name": "fdm_process_bbl_0.06_nozzle_0.2", "sub_path": "process/fdm_process_bbl_0.06_nozzle_0.2.json" @@ -171,22 +87,6 @@ "name": "fdm_process_bbl_0.14_nozzle_0.2", "sub_path": "process/fdm_process_bbl_0.14_nozzle_0.2.json" }, - { - "name": "0.06mm Standard @BBL X1C 0.2 nozzle", - "sub_path": "process/0.06mm Standard @BBL X1C 0.2 nozzle.json" - }, - { - "name": "0.08mm Standard @BBL X1C 0.2 nozzle", - "sub_path": "process/0.08mm Standard @BBL X1C 0.2 nozzle.json" - }, - { - "name": "0.12mm Standard @BBL X1C 0.2 nozzle", - "sub_path": "process/0.12mm Standard @BBL X1C 0.2 nozzle.json" - }, - { - "name": "0.14mm Standard @BBL X1C 0.2 nozzle", - "sub_path": "process/0.14mm Standard @BBL X1C 0.2 nozzle.json" - }, { "name": "fdm_process_bbl_0.18_nozzle_0.6", "sub_path": "process/fdm_process_bbl_0.18_nozzle_0.6.json" @@ -203,22 +103,6 @@ "name": "fdm_process_bbl_0.42_nozzle_0.6", "sub_path": "process/fdm_process_bbl_0.42_nozzle_0.6.json" }, - { - "name": "0.18mm Standard @BBL X1C 0.6 nozzle", - "sub_path": "process/0.18mm Standard @BBL X1C 0.6 nozzle.json" - }, - { - "name": "0.24mm Standard @BBL X1C 0.6 nozzle", - "sub_path": "process/0.24mm Standard @BBL X1C 0.6 nozzle.json" - }, - { - "name": "0.36mm Standard @BBL X1C 0.6 nozzle", - "sub_path": "process/0.36mm Standard @BBL X1C 0.6 nozzle.json" - }, - { - "name": "0.42mm Standard @BBL X1C 0.6 nozzle", - "sub_path": "process/0.42mm Standard @BBL X1C 0.6 nozzle.json" - }, { "name": "fdm_process_bbl_0.24_nozzle_0.8", "sub_path": "process/fdm_process_bbl_0.24_nozzle_0.8.json" @@ -235,25 +119,237 @@ "name": "fdm_process_bbl_0.56_nozzle_0.8", "sub_path": "process/fdm_process_bbl_0.56_nozzle_0.8.json" }, + { + "name": "0.08mm Extra Fine @BBL X1C", + "sub_path": "process/0.08mm Extra Fine @BBL X1C.json" + }, + { + "name": "0.08mm Extra Fine @BBL P1P", + "sub_path": "process/0.08mm Extra Fine @BBL P1P.json" + }, + { + "name": "0.08mm Extra Fine @BBL A1M", + "sub_path": "process/0.08mm Extra Fine @BBL A1M.json" + }, + { + "name": "0.10mm Standard @BBL X1C 0.2 nozzle", + "sub_path": "process/0.10mm Standard @BBL X1C 0.2 nozzle.json" + }, + { + "name": "0.10mm Standard @BBL P1P 0.2 nozzle", + "sub_path": "process/0.10mm Standard @BBL P1P 0.2 nozzle.json" + }, + { + "name": "0.40mm Standard @BBL X1C 0.8 nozzle", + "sub_path": "process/0.40mm Standard @BBL X1C 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @BBL X1 0.8 nozzle", + "sub_path": "process/0.40mm Standard @BBL X1 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @BBL P1P 0.8 nozzle", + "sub_path": "process/0.40mm Standard @BBL P1P 0.8 nozzle.json" + }, + { + "name": "0.30mm Standard @BBL X1C 0.6 nozzle", + "sub_path": "process/0.30mm Standard @BBL X1C 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @BBL X1 0.6 nozzle", + "sub_path": "process/0.30mm Standard @BBL X1 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @BBL P1P 0.6 nozzle", + "sub_path": "process/0.30mm Standard @BBL P1P 0.6 nozzle.json" + }, + { + "name": "0.30mm Strength @BBL X1C 0.6 nozzle", + "sub_path": "process/0.30mm Strength @BBL X1C 0.6 nozzle.json" + }, + { + "name": "0.30mm Strength @BBL A1M 0.6 nozzle", + "sub_path": "process/0.30mm Strength @BBL A1M 0.6 nozzle.json" + }, + { + "name": "0.12mm Fine @BBL X1C", + "sub_path": "process/0.12mm Fine @BBL X1C.json" + }, + { + "name": "0.12mm Fine @BBL P1P", + "sub_path": "process/0.12mm Fine @BBL P1P.json" + }, + { + "name": "0.12mm Fine @BBL A1M", + "sub_path": "process/0.12mm Fine @BBL A1M.json" + }, + { + "name": "0.16mm Optimal @BBL X1C", + "sub_path": "process/0.16mm Optimal @BBL X1C.json" + }, + { + "name": "0.16mm Optimal @BBL P1P", + "sub_path": "process/0.16mm Optimal @BBL P1P.json" + }, + { + "name": "0.16mm Optimal @BBL A1M", + "sub_path": "process/0.16mm Optimal @BBL A1M.json" + }, + { + "name": "0.20mm Standard @BBL X1C", + "sub_path": "process/0.20mm Standard @BBL X1C.json" + }, + { + "name": "0.20mm Strength @BBL X1C", + "sub_path": "process/0.20mm Strength @BBL X1C.json" + }, + { + "name": "0.20mm Standard @BBL P1P", + "sub_path": "process/0.20mm Standard @BBL P1P.json" + }, + { + "name": "0.20mm Strength @BBL P1P", + "sub_path": "process/0.20mm Strength @BBL P1P.json" + }, + { + "name": "0.24mm Draft @BBL X1C", + "sub_path": "process/0.24mm Draft @BBL X1C.json" + }, + { + "name": "0.24mm Draft @BBL P1P", + "sub_path": "process/0.24mm Draft @BBL P1P.json" + }, + { + "name": "0.24mm Draft @BBL A1M", + "sub_path": "process/0.24mm Draft @BBL A1M.json" + }, + { + "name": "0.28mm Extra Draft @BBL X1C", + "sub_path": "process/0.28mm Extra Draft @BBL X1C.json" + }, + { + "name": "0.28mm Extra Draft @BBL P1P", + "sub_path": "process/0.28mm Extra Draft @BBL P1P.json" + }, + { + "name": "0.28mm Extra Draft @BBL A1M", + "sub_path": "process/0.28mm Extra Draft @BBL A1M.json" + }, + { + "name": "0.06mm Standard @BBL X1C 0.2 nozzle", + "sub_path": "process/0.06mm Standard @BBL X1C 0.2 nozzle.json" + }, + { + "name": "0.06mm Fine @BBL A1M 0.2 nozzle", + "sub_path": "process/0.06mm Fine @BBL A1M 0.2 nozzle.json" + }, + { + "name": "0.08mm Standard @BBL X1C 0.2 nozzle", + "sub_path": "process/0.08mm Standard @BBL X1C 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @BBL A1M 0.2 nozzle", + "sub_path": "process/0.08mm Optimal @BBL A1M 0.2 nozzle.json" + }, + { + "name": "0.12mm Standard @BBL X1C 0.2 nozzle", + "sub_path": "process/0.12mm Standard @BBL X1C 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @BBL A1M 0.2 nozzle", + "sub_path": "process/0.12mm Draft @BBL A1M 0.2 nozzle.json" + }, + { + "name": "0.14mm Standard @BBL X1C 0.2 nozzle", + "sub_path": "process/0.14mm Standard @BBL X1C 0.2 nozzle.json" + }, + { + "name": "0.14mm Extra Draft @BBL A1M 0.2 nozzle", + "sub_path": "process/0.14mm Extra Draft @BBL A1M 0.2 nozzle.json" + }, + { + "name": "0.18mm Standard @BBL X1C 0.6 nozzle", + "sub_path": "process/0.18mm Standard @BBL X1C 0.6 nozzle.json" + }, + { + "name": "0.18mm Fine @BBL A1M 0.6 nozzle", + "sub_path": "process/0.18mm Fine @BBL A1M 0.6 nozzle.json" + }, + { + "name": "0.24mm Standard @BBL X1C 0.6 nozzle", + "sub_path": "process/0.24mm Standard @BBL X1C 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @BBL A1M 0.6 nozzle", + "sub_path": "process/0.24mm Optimal @BBL A1M 0.6 nozzle.json" + }, + { + "name": "0.36mm Standard @BBL X1C 0.6 nozzle", + "sub_path": "process/0.36mm Standard @BBL X1C 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @BBL A1M 0.6 nozzle", + "sub_path": "process/0.36mm Draft @BBL A1M 0.6 nozzle.json" + }, + { + "name": "0.42mm Standard @BBL X1C 0.6 nozzle", + "sub_path": "process/0.42mm Standard @BBL X1C 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @BBL A1M 0.6 nozzle", + "sub_path": "process/0.42mm Extra Draft @BBL A1M 0.6 nozzle.json" + }, { "name": "0.24mm Standard @BBL X1C 0.8 nozzle", "sub_path": "process/0.24mm Standard @BBL X1C 0.8 nozzle.json" }, + { + "name": "0.24mm Fine @BBL A1M 0.8 nozzle", + "sub_path": "process/0.24mm Fine @BBL A1M 0.8 nozzle.json" + }, { "name": "0.32mm Standard @BBL X1C 0.8 nozzle", "sub_path": "process/0.32mm Standard @BBL X1C 0.8 nozzle.json" }, + { + "name": "0.32mm Optimal @BBL A1M 0.8 nozzle", + "sub_path": "process/0.32mm Optimal @BBL A1M 0.8 nozzle.json" + }, { "name": "0.48mm Standard @BBL X1C 0.8 nozzle", "sub_path": "process/0.48mm Standard @BBL X1C 0.8 nozzle.json" }, + { + "name": "0.48mm Draft @BBL A1M 0.8 nozzle", + "sub_path": "process/0.48mm Draft @BBL A1M 0.8 nozzle.json" + }, { "name": "0.56mm Standard @BBL X1C 0.8 nozzle", "sub_path": "process/0.56mm Standard @BBL X1C 0.8 nozzle.json" }, { - "name": "0.30mm Strength @BBL X1C 0.6 nozzle", - "sub_path": "process/0.30mm Strength @BBL X1C 0.6 nozzle.json" + "name": "0.56mm Extra Draft @BBL A1M 0.8 nozzle", + "sub_path": "process/0.56mm Extra Draft @BBL A1M 0.8 nozzle.json" + }, + { + "name": "0.10mm Standard @BBL A1M 0.2 nozzle", + "sub_path": "process/0.10mm Standard @BBL A1M 0.2 nozzle.json" + }, + { + "name": "0.40mm Standard @BBL A1M 0.8 nozzle", + "sub_path": "process/0.40mm Standard @BBL A1M 0.8 nozzle.json" + }, + { + "name": "0.30mm Standard @BBL A1M 0.6 nozzle", + "sub_path": "process/0.30mm Standard @BBL A1M 0.6 nozzle.json" + }, + { + "name": "0.20mm Standard @BBL A1M", + "sub_path": "process/0.20mm Standard @BBL A1M.json" + }, + { + "name": "0.20mm Strength @BBL A1M", + "sub_path": "process/0.20mm Strength @BBL A1M.json" } ], "filament_list": [ @@ -297,6 +393,14 @@ "name": "fdm_filament_hips", "sub_path": "filament/fdm_filament_hips.json" }, + { + "name": "fdm_filament_pps", + "sub_path": "filament/fdm_filament_pps.json" + }, + { + "name": "fdm_filament_ppa", + "sub_path": "filament/fdm_filament_ppa.json" + }, { "name": "Bambu PLA Matte @base", "sub_path": "filament/Bambu PLA Matte @base.json" @@ -493,6 +597,22 @@ "name": "Generic HIPS @base", "sub_path": "filament/Generic HIPS @base.json" }, + { + "name": "Generic PPS-CF @base", + "sub_path": "filament/Generic PPS-CF @base.json" + }, + { + "name": "Generic PPS @base", + "sub_path": "filament/Generic PPS @base.json" + }, + { + "name": "Generic PPA-CF @base", + "sub_path": "filament/Generic PPA-CF @base.json" + }, + { + "name": "Generic PPA-GF @base", + "sub_path": "filament/Generic PPA-GF @base.json" + }, { "name": "Bambu PLA Matte @BBL X1C", "sub_path": "filament/Bambu PLA Matte @BBL X1C.json" @@ -517,6 +637,14 @@ "name": "Bambu PLA Matte @BBL P1P", "sub_path": "filament/P1P/Bambu PLA Matte @BBL P1P.json" }, + { + "name": "Bambu PLA Matte @BBL A1M", + "sub_path": "filament/Bambu PLA Matte @BBL A1M.json" + }, + { + "name": "Bambu PLA Matte @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json" + }, { "name": "Bambu PLA Basic @BBL X1C", "sub_path": "filament/Bambu PLA Basic @BBL X1C.json" @@ -541,6 +669,14 @@ "name": "Bambu PLA Basic @BBL P1P", "sub_path": "filament/P1P/Bambu PLA Basic @BBL P1P.json" }, + { + "name": "Bambu PLA Basic @BBL A1M", + "sub_path": "filament/Bambu PLA Basic @BBL A1M.json" + }, + { + "name": "Bambu PLA Basic @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json" + }, { "name": "Bambu PLA Tough @BBL X1C", "sub_path": "filament/Bambu PLA Tough @BBL X1C.json" @@ -561,6 +697,14 @@ "name": "Bambu PLA Tough @BBL P1P", "sub_path": "filament/P1P/Bambu PLA Tough @BBL P1P.json" }, + { + "name": "Bambu PLA Tough @BBL A1M", + "sub_path": "filament/Bambu PLA Tough @BBL A1M.json" + }, + { + "name": "Bambu PLA Tough @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Tough @BBL A1M 0.2 nozzle.json" + }, { "name": "Bambu PLA Marble @BBL X1", "sub_path": "filament/Bambu PLA Marble @BBL X1.json" @@ -573,6 +717,10 @@ "name": "Bambu PLA Marble @BBL P1P", "sub_path": "filament/P1P/Bambu PLA Marble @BBL P1P.json" }, + { + "name": "Bambu PLA Marble @BBL A1M", + "sub_path": "filament/Bambu PLA Marble @BBL A1M.json" + }, { "name": "Bambu PLA Sparkle @BBL X1", "sub_path": "filament/Bambu PLA Sparkle @BBL X1.json" @@ -585,6 +733,10 @@ "name": "Bambu PLA Sparkle @BBL P1P", "sub_path": "filament/P1P/Bambu PLA Sparkle @BBL P1P.json" }, + { + "name": "Bambu PLA Sparkle @BBL A1M", + "sub_path": "filament/Bambu PLA Sparkle @BBL A1M.json" + }, { "name": "Bambu PLA Metal @BBL X1C 0.2 nozzle", "sub_path": "filament/Bambu PLA Metal @BBL X1C 0.2 nozzle.json" @@ -605,6 +757,14 @@ "name": "Bambu PLA Metal @BBL P1P", "sub_path": "filament/P1P/Bambu PLA Metal @BBL P1P.json" }, + { + "name": "Bambu PLA Metal @BBL A1M", + "sub_path": "filament/Bambu PLA Metal @BBL A1M.json" + }, + { + "name": "Bambu PLA Metal @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Metal @BBL A1M 0.2 nozzle.json" + }, { "name": "Bambu PLA Silk @BBL X1", "sub_path": "filament/Bambu PLA Silk @BBL X1.json" @@ -625,6 +785,14 @@ "name": "Bambu PLA Silk @BBL P1P 0.2 nozzle", "sub_path": "filament/P1P/Bambu PLA Silk @BBL P1P 0.2 nozzle.json" }, + { + "name": "Bambu PLA Silk @BBL A1M", + "sub_path": "filament/Bambu PLA Silk @BBL A1M.json" + }, + { + "name": "Bambu PLA Silk @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk @BBL A1M 0.2 nozzle.json" + }, { "name": "Bambu Support W @BBL X1C", "sub_path": "filament/Bambu Support W @BBL X1C.json" @@ -645,6 +813,14 @@ "name": "Bambu Support W @BBL P1P", "sub_path": "filament/P1P/Bambu Support W @BBL P1P.json" }, + { + "name": "Bambu Support W @BBL A1M", + "sub_path": "filament/Bambu Support W @BBL A1M.json" + }, + { + "name": "Bambu Support W @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu Support W @BBL A1M 0.2 nozzle.json" + }, { "name": "eSUN PLA+ @BBL X1C", "sub_path": "filament/eSUN PLA+ @BBL X1C.json" @@ -665,6 +841,14 @@ "name": "eSUN PLA+ @BBL P1P 0.2 nozzle", "sub_path": "filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json" }, + { + "name": "eSUN PLA+ @BBL A1M", + "sub_path": "filament/eSUN PLA+ @BBL A1M.json" + }, + { + "name": "eSUN PLA+ @BBL A1M 0.2 nozzle", + "sub_path": "filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json" + }, { "name": "PolyTerra PLA @BBL X1C", "sub_path": "filament/PolyTerra PLA @BBL X1C.json" @@ -677,6 +861,14 @@ "name": "PolyTerra PLA @BBL P1P", "sub_path": "filament/P1P/PolyTerra PLA @BBL P1P.json" }, + { + "name": "PolyTerra PLA @BBL A1M", + "sub_path": "filament/PolyTerra PLA @BBL A1M.json" + }, + { + "name": "PolyTerra PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/PolyTerra PLA @BBL A1M 0.2 nozzle.json" + }, { "name": "PolyLite PLA @BBL X1C", "sub_path": "filament/PolyLite PLA @BBL X1C.json" @@ -689,6 +881,14 @@ "name": "PolyLite PLA @BBL P1P", "sub_path": "filament/P1P/PolyLite PLA @BBL P1P.json" }, + { + "name": "PolyLite PLA @BBL A1M", + "sub_path": "filament/PolyLite PLA @BBL A1M.json" + }, + { + "name": "PolyLite PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/PolyLite PLA @BBL A1M 0.2 nozzle.json" + }, { "name": "Generic PLA", "sub_path": "filament/Generic PLA.json" @@ -705,6 +905,14 @@ "name": "Generic PLA @BBL P1P", "sub_path": "filament/P1P/Generic PLA @BBL P1P.json" }, + { + "name": "Generic PLA @BBL A1M", + "sub_path": "filament/Generic PLA @BBL A1M.json" + }, + { + "name": "Generic PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic PLA @BBL A1M 0.2 nozzle.json" + }, { "name": "Generic PLA Silk", "sub_path": "filament/Generic PLA Silk.json" @@ -713,6 +921,10 @@ "name": "Generic PLA Silk @BBL P1P", "sub_path": "filament/P1P/Generic PLA Silk @BBL P1P.json" }, + { + "name": "Generic PLA Silk @BBL A1M", + "sub_path": "filament/Generic PLA Silk @BBL A1M.json" + }, { "name": "Generic PLA-CF", "sub_path": "filament/Generic PLA-CF.json" @@ -721,6 +933,10 @@ "name": "Generic PLA-CF @BBL P1P", "sub_path": "filament/P1P/Generic PLA-CF @BBL P1P.json" }, + { + "name": "Generic PLA-CF @BBL A1M", + "sub_path": "filament/Generic PLA-CF @BBL A1M.json" + }, { "name": "Bambu PLA-CF @BBL X1C 0.8 nozzle", "sub_path": "filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json" @@ -737,6 +953,14 @@ "name": "Bambu PLA-CF @BBL P1P 0.8 nozzle", "sub_path": "filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json" }, + { + "name": "Bambu PLA-CF @BBL A1M", + "sub_path": "filament/Bambu PLA-CF @BBL A1M.json" + }, + { + "name": "Bambu PLA-CF @BBL A1M 0.8 nozzle", + "sub_path": "filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json" + }, { "name": "Bambu Support For PLA @BBL X1C 0.2 nozzle", "sub_path": "filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json" @@ -753,6 +977,14 @@ "name": "Bambu Support For PLA @BBL P1P", "sub_path": "filament/P1P/Bambu Support For PLA @BBL P1P.json" }, + { + "name": "Bambu Support For PLA @BBL A1M", + "sub_path": "filament/Bambu Support For PLA @BBL A1M.json" + }, + { + "name": "Bambu Support For PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA @BBL A1M 0.2 nozzle.json" + }, { "name": "Bambu PLA Aero @BBL X1", "sub_path": "filament/Bambu PLA Aero @BBL X1.json" @@ -765,6 +997,10 @@ "name": "Bambu PLA Aero @BBL P1P", "sub_path": "filament/P1P/Bambu PLA Aero @BBL P1P.json" }, + { + "name": "Bambu PLA Aero @BBL A1M", + "sub_path": "filament/Bambu PLA Aero @BBL A1M.json" + }, { "name": "Overture PLA @BBL X1C", "sub_path": "filament/Overture PLA @BBL X1C.json" @@ -777,6 +1013,10 @@ "name": "Overture PLA @BBL P1P", "sub_path": "filament/Overture PLA @BBL P1P.json" }, + { + "name": "Overture PLA @BBL A1M", + "sub_path": "filament/Overture PLA @BBL A1M.json" + }, { "name": "Overture Matte PLA @BBL X1C", "sub_path": "filament/Overture Matte PLA @BBL X1C.json" @@ -789,6 +1029,10 @@ "name": "Overture Matte PLA @BBL P1P", "sub_path": "filament/Overture Matte PLA @BBL P1P.json" }, + { + "name": "Overture Matte PLA @BBL A1M", + "sub_path": "filament/Overture Matte PLA @BBL A1M.json" + }, { "name": "Generic PLA High Speed @BBL X1C", "sub_path": "filament/Generic PLA High Speed @BBL X1C.json" @@ -797,6 +1041,10 @@ "name": "Generic PLA High Speed @BBL P1P", "sub_path": "filament/Generic PLA High Speed @BBL P1P.json" }, + { + "name": "Generic PLA High Speed @BBL A1M", + "sub_path": "filament/Generic PLA High Speed @BBL A1M.json" + }, { "name": "Bambu TPU 95A @BBL X1C", "sub_path": "filament/Bambu TPU 95A @BBL X1C.json" @@ -809,6 +1057,14 @@ "name": "Bambu TPU 95A @BBL P1P", "sub_path": "filament/P1P/Bambu TPU 95A @BBL P1P.json" }, + { + "name": "Bambu TPU 95A @BBL A1M", + "sub_path": "filament/Bambu TPU 95A @BBL A1M.json" + }, + { + "name": "Generic TPU @BBL A1M", + "sub_path": "filament/Generic TPU @BBL A1M.json" + }, { "name": "Bambu PETG Basic @BBL X1C", "sub_path": "filament/Bambu PETG Basic @BBL X1C.json" @@ -845,6 +1101,14 @@ "name": "Generic PETG @BBL P1P 0.2 nozzle", "sub_path": "filament/P1P/Generic PETG @BBL P1P 0.2 nozzle.json" }, + { + "name": "Generic PETG @BBL A1M", + "sub_path": "filament/Generic PETG @BBL A1M.json" + }, + { + "name": "Generic PETG @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic PETG @BBL A1M 0.2 nozzle.json" + }, { "name": "Generic PETG-CF @BBL X1C", "sub_path": "filament/Generic PETG-CF @BBL X1C.json" @@ -869,6 +1133,10 @@ "name": "Bambu PETG-CF @BBL P1P 0.4 nozzle", "sub_path": "filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json" }, + { + "name": "Bambu PETG-CF @BBL A1M", + "sub_path": "filament/Bambu PETG-CF @BBL A1M.json" + }, { "name": "PolyLite PETG @BBL X1C", "sub_path": "filament/PolyLite PETG @BBL X1C.json" @@ -877,6 +1145,10 @@ "name": "PolyLite PETG @BBL P1P", "sub_path": "filament/PolyLite PETG @BBL P1P.json" }, + { + "name": "PolyLite PETG @BBL A1M", + "sub_path": "filament/PolyLite PETG @BBL A1M.json" + }, { "name": "Bambu ABS @BBL X1C", "sub_path": "filament/Bambu ABS @BBL X1C.json" @@ -1021,6 +1293,14 @@ "name": "Generic PVA @BBL P1P", "sub_path": "filament/P1P/Generic PVA @BBL P1P.json" }, + { + "name": "Generic PVA @BBL A1M", + "sub_path": "filament/Generic PVA @BBL A1M.json" + }, + { + "name": "Generic PVA @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic PVA @BBL A1M 0.2 nozzle.json" + }, { "name": "Bambu Support G @BBL X1C", "sub_path": "filament/Bambu Support G @BBL X1C.json" @@ -1065,6 +1345,22 @@ "name": "Generic HIPS @BBL X1C 0.2 nozzle", "sub_path": "filament/Generic HIPS @BBL X1C 0.2 nozzle.json" }, + { + "name": "Generic HIPS @BBL A1M", + "sub_path": "filament/Generic HIPS @BBL A1M.json" + }, + { + "name": "Generic HIPS @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic HIPS @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Generic PPA-CF @BBL X1C", + "sub_path": "filament/Generic PPA-CF @BBL X1C.json" + }, + { + "name": "Generic PPA-GF @BBL X1C", + "sub_path": "filament/Generic PPA-GF @BBL X1C.json" + }, { "name": "PolyTerra PLA @BBL X1C 0.2 nozzle", "sub_path": "filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json" @@ -1089,6 +1385,10 @@ "name": "Overture PLA @BBL P1P 0.2 nozzle", "sub_path": "filament/Overture PLA @BBL P1P 0.2 nozzle.json" }, + { + "name": "Overture PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/Overture PLA @BBL A1M 0.2 nozzle.json" + }, { "name": "Overture Matte PLA @BBL X1C 0.2 nozzle", "sub_path": "filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json" @@ -1097,6 +1397,10 @@ "name": "Overture Matte PLA @BBL P1P 0.2 nozzle", "sub_path": "filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json" }, + { + "name": "Overture Matte PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/Overture Matte PLA @BBL A1M 0.2 nozzle.json" + }, { "name": "Generic PLA High Speed @BBL X1C 0.2 nozzle", "sub_path": "filament/Generic PLA High Speed @BBL X1C 0.2 nozzle.json" @@ -1105,6 +1409,30 @@ "name": "Generic PLA High Speed @BBL P1P 0.2 nozzle", "sub_path": "filament/Generic PLA High Speed @BBL P1P 0.2 nozzle.json" }, + { + "name": "Generic PLA High Speed @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic PLA High Speed @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Bambu PETG Basic @BBL A1M 0.4 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL A1M 0.4 nozzle.json" + }, + { + "name": "Bambu PETG Basic @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Bambu PETG Basic @BBL A1M 0.8 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json" + }, + { + "name": "Generic PETG-CF @BBL A1M", + "sub_path": "filament/P1P/Generic PETG-CF @BBL A1M.json" + }, + { + "name": "Bambu PETG-CF @BBL A1M 0.4 nozzle", + "sub_path": "filament/Bambu PETG-CF @BBL A1M 0.4 nozzle.json" + }, { "name": "PolyLite PETG @BBL X1C 0.2 nozzle", "sub_path": "filament/PolyLite PETG @BBL X1C 0.2 nozzle.json" @@ -1113,6 +1441,10 @@ "name": "PolyLite PETG @BBL P1P 0.2 nozzle", "sub_path": "filament/PolyLite PETG @BBL P1P 0.2 nozzle.json" }, + { + "name": "PolyLite PETG @BBL A1M 0.2 nozzle", + "sub_path": "filament/PolyLite PETG @BBL A1M 0.2 nozzle.json" + }, { "name": "PolyLite ABS @BBL X1C 0.2 nozzle", "sub_path": "filament/PolyLite ABS @BBL X1C 0.2 nozzle.json" @@ -1172,16 +1504,16 @@ "sub_path": "machine/Bambu Lab X1 0.4 nozzle.json" }, { - "name": "Bambu Lab X1 0.2 nozzle", - "sub_path": "machine/Bambu Lab X1 0.2 nozzle.json" + "name": "Bambu Lab P1P 0.4 nozzle", + "sub_path": "machine/Bambu Lab P1P 0.4 nozzle.json" }, { - "name": "Bambu Lab X1 0.8 nozzle", - "sub_path": "machine/Bambu Lab X1 0.8 nozzle.json" + "name": "Bambu Lab P1S 0.4 nozzle", + "sub_path": "machine/Bambu Lab P1S 0.4 nozzle.json" }, { - "name": "Bambu Lab X1 0.6 nozzle", - "sub_path": "machine/Bambu Lab X1 0.6 nozzle.json" + "name": "Bambu Lab A1 mini 0.4 nozzle", + "sub_path": "machine/Bambu Lab A1 mini 0.4 nozzle.json" }, { "name": "Bambu Lab X1 Carbon 0.2 nozzle", @@ -1196,8 +1528,16 @@ "sub_path": "machine/Bambu Lab X1 Carbon 0.8 nozzle.json" }, { - "name": "Bambu Lab P1P 0.4 nozzle", - "sub_path": "machine/Bambu Lab P1P 0.4 nozzle.json" + "name": "Bambu Lab X1 0.2 nozzle", + "sub_path": "machine/Bambu Lab X1 0.2 nozzle.json" + }, + { + "name": "Bambu Lab X1 0.8 nozzle", + "sub_path": "machine/Bambu Lab X1 0.8 nozzle.json" + }, + { + "name": "Bambu Lab X1 0.6 nozzle", + "sub_path": "machine/Bambu Lab X1 0.6 nozzle.json" }, { "name": "Bambu Lab P1P 0.2 nozzle", @@ -1211,10 +1551,6 @@ "name": "Bambu Lab P1P 0.8 nozzle", "sub_path": "machine/Bambu Lab P1P 0.8 nozzle.json" }, - { - "name": "Bambu Lab P1S 0.4 nozzle", - "sub_path": "machine/Bambu Lab P1S 0.4 nozzle.json" - }, { "name": "Bambu Lab P1S 0.2 nozzle", "sub_path": "machine/Bambu Lab P1S 0.2 nozzle.json" @@ -1226,6 +1562,18 @@ { "name": "Bambu Lab P1S 0.8 nozzle", "sub_path": "machine/Bambu Lab P1S 0.8 nozzle.json" + }, + { + "name": "Bambu Lab A1 mini 0.2 nozzle", + "sub_path": "machine/Bambu Lab A1 mini 0.2 nozzle.json" + }, + { + "name": "Bambu Lab A1 mini 0.6 nozzle", + "sub_path": "machine/Bambu Lab A1 mini 0.6 nozzle.json" + }, + { + "name": "Bambu Lab A1 mini 0.8 nozzle", + "sub_path": "machine/Bambu Lab A1 mini 0.8 nozzle.json" } ] } \ No newline at end of file diff --git a/resources/profiles/BBL/Bambu LAb A1 mini_cover.png b/resources/profiles/BBL/Bambu LAb A1 mini_cover.png new file mode 100644 index 0000000000..f224e40b89 Binary files /dev/null and b/resources/profiles/BBL/Bambu LAb A1 mini_cover.png differ diff --git a/resources/web/image/printer/Bambu Lab P1P_cover.png b/resources/profiles/BBL/Bambu Lab P1P_cover.png similarity index 100% rename from resources/web/image/printer/Bambu Lab P1P_cover.png rename to resources/profiles/BBL/Bambu Lab P1P_cover.png diff --git a/resources/web/image/printer/Bambu Lab P1S_cover.png b/resources/profiles/BBL/Bambu Lab P1S_cover.png similarity index 100% rename from resources/web/image/printer/Bambu Lab P1S_cover.png rename to resources/profiles/BBL/Bambu Lab P1S_cover.png diff --git a/resources/web/image/printer/Bambu Lab X1 Carbon_cover.png b/resources/profiles/BBL/Bambu Lab X1 Carbon_cover.png similarity index 100% rename from resources/web/image/printer/Bambu Lab X1 Carbon_cover.png rename to resources/profiles/BBL/Bambu Lab X1 Carbon_cover.png diff --git a/resources/web/image/printer/Bambu Lab X1_cover.png b/resources/profiles/BBL/Bambu Lab X1_cover.png similarity index 100% rename from resources/web/image/printer/Bambu Lab X1_cover.png rename to resources/profiles/BBL/Bambu Lab X1_cover.png diff --git a/resources/profiles/BBL/bbl-3dp-A1M.stl b/resources/profiles/BBL/bbl-3dp-A1M.stl new file mode 100644 index 0000000000..ccdc7982e0 Binary files /dev/null and b/resources/profiles/BBL/bbl-3dp-A1M.stl differ diff --git a/resources/profiles/BBL/bbl-3dp-logo_cali_lines.svg b/resources/profiles/BBL/bbl-3dp-logo_cali_lines.svg deleted file mode 100644 index 9e40f62c03..0000000000 --- a/resources/profiles/BBL/bbl-3dp-logo_cali_lines.svg +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json index abc56a5fe7..3949e18511 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB00_00", "name": "Bambu ABS @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu ABS @base", + "from": "system", + "setting_id": "GFSB00_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json index 0ff435196e..70613a34f2 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB00_01", "name": "Bambu ABS @BBL X1C 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu ABS @base", + "from": "system", + "setting_id": "GFSB00_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "22" ], @@ -18,6 +18,5 @@ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab X1 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json index a5c0875b0b..3fb2c7f621 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB00", "name": "Bambu ABS @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu ABS @base", + "from": "system", + "setting_id": "GFSB00", + "instantiation": "true", "filament_max_volumetric_speed": [ "22" ], @@ -15,6 +15,5 @@ "Bambu Lab X1 0.6 nozzle", "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ABS @base.json b/resources/profiles/BBL/filament/Bambu ABS @base.json index 0117852594..a185e7cf80 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @base.json +++ b/resources/profiles/BBL/filament/Bambu ABS @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFB00", "name": "Bambu ABS @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_abs", + "from": "system", + "filament_id": "GFB00", + "instantiation": "false", "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.2 nozzle.json index d2cd753b0e..abaa62c35e 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.2 nozzle.json @@ -1,10 +1,10 @@ { - "name": "Bambu ASA @BBL X1 0.2 nozzle", "type": "filament", - "instantiation": "true", - "from": "system", + "name": "Bambu ASA @BBL X1 0.2 nozzle", "inherits": "Bambu ASA @base", + "from": "system", "setting_id": "GFSB01_03", + "instantiation": "true", "fan_max_speed": [ "80" ], @@ -13,6 +13,5 @@ ], "compatible_printers": [ "Bambu Lab X1 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.6 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.6 nozzle.json index adadbab3cf..e98e02789d 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.6 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.6 nozzle.json @@ -1,10 +1,10 @@ { - "name": "Bambu ASA @BBL X1 0.6 nozzle", "type": "filament", - "instantiation": "true", - "from": "system", + "name": "Bambu ASA @BBL X1 0.6 nozzle", "inherits": "Bambu ASA @base", + "from": "system", "setting_id": "GFSB01_04", + "instantiation": "true", "fan_max_speed": [ "90" ], @@ -16,6 +16,5 @@ ], "compatible_printers": [ "Bambu Lab X1 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.2 nozzle.json index 75d45b2321..1253bff71f 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.2 nozzle.json @@ -1,17 +1,16 @@ { - "name": "Bambu ASA @BBL X1C 0.2 nozzle", "type": "filament", - "instantiation": "true", - "from": "system", + "name": "Bambu ASA @BBL X1C 0.2 nozzle", "inherits": "Bambu ASA @base", + "from": "system", "setting_id": "GFSB01_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", - "Bambu Lab P1P 0.2 nozzle", - "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + "Bambu Lab P1S 0.2 nozzle", + "Bambu Lab P1P 0.2 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.4 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.4 nozzle.json index 619c357739..b3c53e095c 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.4 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.4 nozzle.json @@ -1,16 +1,18 @@ { - "name": "Bambu ASA @BBL X1C 0.4 nozzle", "type": "filament", - "instantiation": "true", - "from": "system", + "name": "Bambu ASA @BBL X1C 0.4 nozzle", "inherits": "Bambu ASA @base", + "from": "system", "setting_id": "GFSB01_02", + "instantiation": "true", + "chamber_temperatures": [ + "60" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab P1P 0.4 nozzle", - "Bambu Lab P1P 0.8 nozzle", - "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + "Bambu Lab P1P 0.8 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C.json b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C.json index dac40dca8a..5693a2c1d0 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C.json @@ -1,10 +1,10 @@ { - "name": "Bambu ASA @BBL X1C", "type": "filament", - "instantiation": "true", - "from": "system", + "name": "Bambu ASA @BBL X1C", "inherits": "Bambu ASA @base", + "from": "system", "setting_id": "GFSB01_00", + "instantiation": "true", "fan_min_speed": [ "25" ], @@ -16,7 +16,7 @@ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab X1 0.8 nozzle", "Bambu Lab P1S 0.6 nozzle", - "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab P1P 0.6 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA @base.json b/resources/profiles/BBL/filament/Bambu ASA @base.json index f3c174af5e..f2fc943a0d 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @base.json +++ b/resources/profiles/BBL/filament/Bambu ASA @base.json @@ -1,16 +1,16 @@ { - "name": "Bambu ASA @base", "type": "filament", - "instantiation": "false", - "from": "system", + "name": "Bambu ASA @base", "inherits": "fdm_filament_asa", + "from": "system", + "filament_id": "GFB01", + "instantiation": "false", "filament_density": [ "1.05" ], "filament_cost": [ "31.99" ], - "filament_id": "GFB01", "nozzle_temperature_initial_layer": [ "270" ], diff --git a/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json index e89a79dd0d..1ee5a243ae 100644 --- a/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSN00", "name": "Bambu PA-CF @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PA-CF @base", + "from": "system", + "setting_id": "GFSN00", + "instantiation": "true", "nozzle_temperature_initial_layer": [ "290" ], @@ -33,6 +33,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PA-CF @base.json b/resources/profiles/BBL/filament/Bambu PA-CF @base.json index 98842dc105..2788ee1bdc 100644 --- a/resources/profiles/BBL/filament/Bambu PA-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PA-CF @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFN03", "name": "Bambu PA-CF @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "GFN03", + "instantiation": "false", "filament_cost": [ "84.99" ], diff --git a/resources/profiles/BBL/filament/Bambu PA6-CF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PA6-CF @BBL X1C.json index 53eaa6a22f..3d81a495a1 100644 --- a/resources/profiles/BBL/filament/Bambu PA6-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PA6-CF @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSN05_02", "name": "Bambu PA6-CF @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PA6-CF @base", + "from": "system", + "setting_id": "GFSN05_02", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", @@ -18,6 +18,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PA6-CF @base.json b/resources/profiles/BBL/filament/Bambu PA6-CF @base.json index 5fdacfe596..697101fff8 100644 --- a/resources/profiles/BBL/filament/Bambu PA6-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PA6-CF @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFN05", "name": "Bambu PA6-CF @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "GFN05", + "instantiation": "false", "fan_cooling_layer_time": [ "5" ], diff --git a/resources/profiles/BBL/filament/Bambu PAHT-CF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PAHT-CF @BBL X1C.json index 30e9b9fbaa..6d4344b3a7 100644 --- a/resources/profiles/BBL/filament/Bambu PAHT-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PAHT-CF @BBL X1C.json @@ -1,10 +1,13 @@ { "type": "filament", - "setting_id": "GFSN04", "name": "Bambu PAHT-CF @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PAHT-CF @base", + "from": "system", + "setting_id": "GFSN04", + "instantiation": "true", + "chamber_temperatures": [ + "60" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -15,6 +18,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json b/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json index 67182ecc5c..0f5dcfb745 100644 --- a/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFN04", "name": "Bambu PAHT-CF @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "GFN04", + "instantiation": "false", "fan_max_speed": [ "30" ], diff --git a/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.2 nozzle.json index 3b597c1b8d..4190eb1836 100644 --- a/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC00_06", "name": "Bambu PC @BBL P1S 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PC @BBL X1C 0.2 nozzle", + "from": "system", + "setting_id": "GFSC00_06", + "instantiation": "true", "eng_plate_temp": [ "100" ], @@ -25,6 +25,5 @@ ], "compatible_printers": [ "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.6 nozzle.json b/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.6 nozzle.json index ea01e68361..67bb02d3fa 100644 --- a/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.6 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC00_08", "name": "Bambu PC @BBL P1S 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PC @BBL X1C 0.6 nozzle", + "from": "system", + "setting_id": "GFSC00_08", + "instantiation": "true", "eng_plate_temp": [ "100" ], @@ -25,6 +25,5 @@ ], "compatible_printers": [ "Bambu Lab P1S 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.8 nozzle.json index 711931b943..144a5cae30 100644 --- a/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PC @BBL P1S 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC00_07", "name": "Bambu PC @BBL P1S 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PC @BBL X1C 0.8 nozzle", + "from": "system", + "setting_id": "GFSC00_07", + "instantiation": "true", "eng_plate_temp": [ "100" ], @@ -25,6 +25,5 @@ ], "compatible_printers": [ "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PC @BBL P1S.json b/resources/profiles/BBL/filament/Bambu PC @BBL P1S.json index 622626a09b..ea192bfba3 100644 --- a/resources/profiles/BBL/filament/Bambu PC @BBL P1S.json +++ b/resources/profiles/BBL/filament/Bambu PC @BBL P1S.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC00_05", "name": "Bambu PC @BBL P1S", - "from": "system", - "instantiation": "true", "inherits": "Bambu PC @BBL X1C", + "from": "system", + "setting_id": "GFSC00_05", + "instantiation": "true", "eng_plate_temp": [ "100" ], @@ -25,6 +25,5 @@ ], "compatible_printers": [ "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.2 nozzle.json index c9e4e9b644..31d13f48e8 100644 --- a/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC00_02", "name": "Bambu PC @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PC @base", + "from": "system", + "setting_id": "GFSC00_02", + "instantiation": "true", "filament_max_volumetric_speed": [ "1" ], @@ -14,6 +14,5 @@ "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.6 nozzle.json index 3e40978689..3b5399efa2 100644 --- a/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.6 nozzle.json @@ -1,16 +1,15 @@ { "type": "filament", - "setting_id": "GFSC00_01", "name": "Bambu PC @BBL X1C 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PC @base", + "from": "system", + "setting_id": "GFSC00_01", + "instantiation": "true", "nozzle_temperature": [ "260" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.8 nozzle.json index 05cf7862c7..b1cc742c2c 100644 --- a/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.8 nozzle.json @@ -1,16 +1,15 @@ { "type": "filament", - "setting_id": "GFSC00_00", "name": "Bambu PC @BBL X1C 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PC @base", + "from": "system", + "setting_id": "GFSC00_00", + "instantiation": "true", "nozzle_temperature": [ "260" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PC @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PC @BBL X1C.json index 3199f7c969..7ee2131465 100644 --- a/resources/profiles/BBL/filament/Bambu PC @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PC @BBL X1C.json @@ -1,13 +1,12 @@ { "type": "filament", - "setting_id": "GFSC00", "name": "Bambu PC @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PC @base", + "from": "system", + "setting_id": "GFSC00", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PC @base.json b/resources/profiles/BBL/filament/Bambu PC @base.json index a9038a4b92..001f7c94d7 100644 --- a/resources/profiles/BBL/filament/Bambu PC @base.json +++ b/resources/profiles/BBL/filament/Bambu PC @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFC00", "name": "Bambu PC @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pc", + "from": "system", + "filament_id": "GFC00", + "instantiation": "false", "filament_vendor": [ "Bambu Lab" ], diff --git a/resources/profiles/BBL/filament/Bambu PET-CF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PET-CF @BBL X1C.json index 0ab0cde98c..09f2147d66 100644 --- a/resources/profiles/BBL/filament/Bambu PET-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PET-CF @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFST01", "name": "Bambu PET-CF @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PET-CF @base", + "from": "system", + "setting_id": "GFST01", + "instantiation": "true", "reduce_fan_stop_start_freq": [ "0" ], @@ -21,6 +21,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PET-CF @base.json b/resources/profiles/BBL/filament/Bambu PET-CF @base.json index a5aa8cc47d..9cfc605c32 100644 --- a/resources/profiles/BBL/filament/Bambu PET-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PET-CF @base.json @@ -1,18 +1,24 @@ { "type": "filament", - "filament_id": "GFT01", "name": "Bambu PET-CF @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pet", - "temperature_vitrification": [ - "185" + "from": "system", + "filament_id": "GFT01", + "instantiation": "false", + "cool_plate_temp": [ + "0" ], - "overhang_fan_threshold": [ - "0%" + "cool_plate_temp_initial_layer": [ + "0" ], - "overhang_fan_speed": [ - "40" + "eng_plate_temp": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "fan_cooling_layer_time": [ + "5" ], "fan_max_speed": [ "30" @@ -20,67 +26,61 @@ "fan_min_speed": [ "10" ], - "filament_max_volumetric_speed": [ - "8" - ], - "slow_down_layer_time": [ - "2" - ], - "fan_cooling_layer_time": [ - "5" - ], - "cool_plate_temp": [ - "0" - ], - "eng_plate_temp": [ - "80" - ], - "hot_plate_temp": [ - "100" - ], - "textured_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "required_nozzle_HRC": [ - "40" - ], - "filament_vendor": [ - "Bambu Lab" - ], - "filament_type": [ - "PET-CF" - ], "filament_cost": [ "84.99" ], "filament_density": [ "1.29" ], - "nozzle_temperature_range_low": [ - "260" + "filament_max_volumetric_speed": [ + "8" ], - "nozzle_temperature_range_high": [ - "290" + "filament_type": [ + "PET-CF" ], - "nozzle_temperature_initial_layer": [ - "270" + "filament_vendor": [ + "Bambu Lab" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" ], "nozzle_temperature": [ "270" ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "required_nozzle_HRC": [ + "40" + ], + "slow_down_layer_time": [ + "2" + ], + "temperature_vitrification": [ + "185" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..6553473d1b --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Bambu PETG Basic @BBL A1M 0.2 nozzle", + "inherits": "Bambu PETG Basic @BBL X1C 0.2 nozzle", + "from": "system", + "setting_id": "GFSG00_04", + "instantiation": "true", + "filament_flow_ratio": [ + "0.94" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.4 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.4 nozzle.json new file mode 100644 index 0000000000..837e060fe5 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.4 nozzle.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Bambu PETG Basic @BBL A1M 0.4 nozzle", + "inherits": "Bambu PETG Basic @BBL X1C", + "from": "system", + "setting_id": "GFSG00_03", + "instantiation": "true", + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "9" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json new file mode 100644 index 0000000000..e3d66863c0 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json @@ -0,0 +1,18 @@ +{ + "type": "filament", + "name": "Bambu PETG Basic @BBL A1M 0.8 nozzle", + "inherits": "Bambu PETG Basic @BBL X1C 0.8 nozzle", + "from": "system", + "setting_id": "GFSG00_05", + "instantiation": "true", + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C 0.2 nozzle.json index 0016649ed1..f1e94f7f99 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSG00_00", "name": "Bambu PETG Basic @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PETG Basic @base", + "from": "system", + "setting_id": "GFSG00_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "1" ], @@ -13,6 +13,5 @@ "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1P 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C 0.8 nozzle.json index 66d4c0ec6e..e12b65d701 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C 0.8 nozzle.json @@ -1,19 +1,19 @@ { "type": "filament", - "setting_id": "GFSG00_02", "name": "Bambu PETG Basic @BBL X1C 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PETG Basic @base", - "filament_max_volumetric_speed": [ - "16" - ], + "from": "system", + "setting_id": "GFSG00_02", + "instantiation": "true", "fan_max_speed": [ "60" ], "fan_min_speed": [ "20" ], + "filament_max_volumetric_speed": [ + "16" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle", @@ -23,6 +23,5 @@ "Bambu Lab P1P 0.8 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C.json index 0c1248519c..c40928fb49 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSG00_01", "name": "Bambu PETG Basic @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PETG Basic @base", + "from": "system", + "setting_id": "GFSG00_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "13" ], @@ -13,6 +13,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @base.json b/resources/profiles/BBL/filament/Bambu PETG Basic @base.json index 4c0ccd83dc..02ca4846f8 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Basic @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @base.json @@ -1,18 +1,24 @@ { "type": "filament", - "filament_id": "GFG00", "name": "Bambu PETG Basic @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pet", - "filament_flow_ratio": [ - "0.95" + "from": "system", + "filament_id": "GFG00", + "instantiation": "false", + "cool_plate_temp": [ + "0" ], - "overhang_fan_speed": [ - "90" + "cool_plate_temp_initial_layer": [ + "0" ], - "overhang_fan_threshold": [ - "10%" + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "30" ], "fan_max_speed": [ "40" @@ -20,52 +26,46 @@ "fan_min_speed": [ "10" ], - "filament_max_volumetric_speed": [ - "8" - ], - "fan_cooling_layer_time": [ - "30" - ], - "cool_plate_temp": [ - "0" - ], - "eng_plate_temp": [ - "70" - ], - "hot_plate_temp": [ - "70" - ], - "textured_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_vendor": [ - "Bambu Lab" - ], "filament_cost": [ "24.99" ], "filament_density": [ "1.25" ], - "nozzle_temperature_range_low": [ - "240" + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" ], "nozzle_temperature_range_high": [ "270" ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1M 0.4 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1M 0.4 nozzle.json new file mode 100644 index 0000000000..4545a6f2a9 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1M 0.4 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Bambu PETG-CF @BBL A1M 0.4 nozzle", + "inherits": "Bambu PETG-CF @BBL A1M", + "from": "system", + "setting_id": "GFSG50_04", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "9" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1M.json new file mode 100644 index 0000000000..a630c42d3c --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1M.json @@ -0,0 +1,15 @@ +{ + "type": "filament", + "name": "Bambu PETG-CF @BBL A1M", + "inherits": "Bambu PETG-CF @base", + "from": "system", + "setting_id": "GFSG50_00", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "9" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json index 0824fe7b8a..95c2cc329c 100644 --- a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSG50_02", "name": "Bambu PETG-CF @BBL X1C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PETG-CF @base", + "from": "system", + "setting_id": "GFSG50_02", + "instantiation": "true", "filament_max_volumetric_speed": [ "13" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C.json index a26cd492b7..22c4caf109 100644 --- a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSG50_01", "name": "Bambu PETG-CF @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PETG-CF @base", + "from": "system", + "setting_id": "GFSG50_01", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 Carbon 0.8 nozzle", @@ -12,6 +12,5 @@ "Bambu Lab X1 0.8 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @base.json b/resources/profiles/BBL/filament/Bambu PETG-CF @base.json index f0627b0f0e..5263e70059 100644 --- a/resources/profiles/BBL/filament/Bambu PETG-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @base.json @@ -1,80 +1,80 @@ { "type": "filament", - "filament_id": "GFG50", "name": "Bambu PETG-CF @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pet", - "filament_flow_ratio": [ - "0.95" - ], - "temperature_vitrification": [ - "75" - ], - "overhang_fan_threshold": [ - "10%" - ], - "overhang_fan_speed": [ - "90" - ], + "from": "system", + "filament_id": "GFG50", + "instantiation": "false", "cool_plate_temp": [ "0" ], + "cool_plate_temp_initial_layer": [ + "0" + ], "eng_plate_temp": [ "70" ], - "hot_plate_temp": [ - "70" - ], - "textured_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], "eng_plate_temp_initial_layer": [ "70" ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "required_nozzle_HRC": [ - "40" - ], - "filament_vendor": [ - "Bambu Lab" - ], - "filament_type": [ - "PETG-CF" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "filament_cost": [ - "34.99" - ], - "filament_density": [ - "1.25" - ], "fan_max_speed": [ "30" ], "fan_min_speed": [ "0" ], + "filament_cost": [ + "34.99" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.95" + ], "filament_max_volumetric_speed": [ "14" ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "40" + ], "slow_down_layer_time": [ "6" ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Aero @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Aero @BBL A1M.json new file mode 100644 index 0000000000..6483f04f4c --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Aero @BBL A1M.json @@ -0,0 +1,40 @@ +{ + "type": "filament", + "name": "Bambu PLA Aero @BBL A1M", + "inherits": "Bambu PLA Aero @base", + "from": "system", + "setting_id": "GFSA11_03", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Aero @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Aero @BBL X1.json index 525eafebb3..d614051813 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Aero @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Aero @BBL X1.json @@ -1,10 +1,13 @@ { - "name": "Bambu PLA Aero @BBL X1", "type": "filament", - "instantiation": "true", - "from": "system", + "name": "Bambu PLA Aero @BBL X1", "inherits": "Bambu PLA Aero @base", + "from": "system", "setting_id": "GFSA11_00", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], "slow_down_layer_time": [ "8" ], @@ -12,6 +15,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Aero @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Aero @BBL X1C.json index 6ff948fcde..5e72c32a96 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Aero @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Aero @BBL X1C.json @@ -1,12 +1,15 @@ { - "name": "Bambu PLA Aero @BBL X1C", "type": "filament", - "instantiation": "true", - "from": "system", + "name": "Bambu PLA Aero @BBL X1C", "inherits": "Bambu PLA Aero @base", + "from": "system", "setting_id": "GFSA11_01", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], "slow_down_layer_time": [ - "4" + "8" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", @@ -15,6 +18,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Aero @base.json b/resources/profiles/BBL/filament/Bambu PLA Aero @base.json index b5787ea311..95b26c2796 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Aero @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Aero @base.json @@ -1,15 +1,12 @@ { "type": "filament", "name": "Bambu PLA Aero @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", + "from": "system", "filament_id": "GFA11", - "filament_type":[ - "PLA-AERO" - ], - "filament_flow_ratio": [ - "0.6" + "instantiation": "false", + "fan_min_speed": [ + "30" ], "filament_cost": [ "44.99" @@ -17,16 +14,25 @@ "filament_density": [ "1.21" ], + "filament_flow_ratio": [ + "0.6" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_type": [ + "PLA-AERO" + ], "filament_vendor": [ "Bambu Lab" ], - "nozzle_temperature_range_low": [ - "210" - ], "nozzle_temperature_range_high": [ "260" ], + "nozzle_temperature_range_low": [ + "210" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..c1a12b1c4a --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "Bambu PLA Basic @BBL A1M 0.2 nozzle", + "inherits": "Bambu PLA Basic @base", + "from": "system", + "setting_id": "GFSA00_03", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M.json new file mode 100644 index 0000000000..85c54ef7d6 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Bambu PLA Basic @BBL A1M", + "inherits": "Bambu PLA Basic @base", + "from": "system", + "setting_id": "GFSA00_02", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1.json index 2f2222cf6f..3a70c808a4 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA04", "name": "Bambu PLA Basic @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Basic @base", + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", "filament_max_volumetric_speed": [ "21" ], @@ -15,6 +15,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.2 nozzle.json index 7ee46a61e1..7dbd894526 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA00_00", "name": "Bambu PLA Basic @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Basic @base", + "from": "system", + "setting_id": "GFSA00_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.8 nozzle.json index 25be2bc3e0..7e98cd452b 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.8 nozzle.json @@ -1,16 +1,15 @@ { "type": "filament", - "setting_id": "GFSA00_01", "name": "Bambu PLA Basic @BBL X1C 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Basic @base", + "from": "system", + "setting_id": "GFSA00_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "21" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C.json index 852fd3ed44..d5cb0165b3 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA00", "name": "Bambu PLA Basic @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Basic @base", + "from": "system", + "setting_id": "GFSA00", + "instantiation": "true", "filament_max_volumetric_speed": [ "21" ], @@ -13,6 +13,5 @@ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @base.json b/resources/profiles/BBL/filament/Bambu PLA Basic @base.json index ded3eb4ebf..b975be47dc 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @base.json @@ -1,23 +1,26 @@ { "type": "filament", - "filament_id": "GFA00", "name": "Bambu PLA Basic @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Bambu Lab" - ], + "from": "system", + "filament_id": "GFA00", + "instantiation": "false", "filament_cost": [ "24.99" ], - "filament_flow_ratio": [ - "0.98" - ], "filament_density": [ "1.26" ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_vendor": [ + "Bambu Lab" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Impact @base.json b/resources/profiles/BBL/filament/Bambu PLA Impact @base.json index cf7f860a53..7cdc6f3e42 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Impact @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Impact @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFA03", "name": "Bambu PLA Impact @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "GFA03", + "instantiation": "false", "filament_vendor": [ "Bambu Lab" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL A1M.json new file mode 100644 index 0000000000..92dfae7b7e --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL A1M.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Bambu PLA Marble @BBL A1M", + "inherits": "Bambu PLA Marble @base", + "from": "system", + "setting_id": "GFSA07_02", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1.json index 31c9936e09..20b0a0969e 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA07_01", "name": "Bambu PLA Marble @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Marble @base", + "from": "system", + "setting_id": "GFSA07_01", + "instantiation": "true", "slow_down_layer_time": [ "8" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1C.json index d399304c56..d8e67b7b16 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA07_00", "name": "Bambu PLA Marble @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Marble @base", + "from": "system", + "setting_id": "GFSA07_00", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -12,6 +12,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Marble @base.json b/resources/profiles/BBL/filament/Bambu PLA Marble @base.json index 47df386956..be77e77870 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Marble @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Marble @base.json @@ -1,13 +1,10 @@ { "type": "filament", - "filament_id": "GFA07", "name": "Bambu PLA Marble @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Bambu Lab" - ], + "from": "system", + "filament_id": "GFA07", + "instantiation": "false", "filament_cost": [ "29.99" ], @@ -17,7 +14,10 @@ "filament_flow_ratio": [ "0.98" ], + "filament_vendor": [ + "Bambu Lab" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..d637a5e270 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "Bambu PLA Matte @BBL A1M 0.2 nozzle", + "inherits": "Bambu PLA Matte @base", + "from": "system", + "setting_id": "GFSA01_03", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M.json new file mode 100644 index 0000000000..c08d84529d --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M.json @@ -0,0 +1,40 @@ +{ + "type": "filament", + "name": "Bambu PLA Matte @BBL A1M", + "inherits": "Bambu PLA Matte @base", + "from": "system", + "setting_id": "GFSA01_02", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json index 15be4526ec..7721eacbc8 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA05", "name": "Bambu PLA Matte @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Matte @base", + "from": "system", + "setting_id": "GFSA05", + "instantiation": "true", "filament_max_volumetric_speed": [ "22" ], @@ -15,6 +15,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json index 9cb548eb20..724412a738 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA01_00", "name": "Bambu PLA Matte @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Matte @base", + "from": "system", + "setting_id": "GFSA01_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json index 249051bae5..4764dde452 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json @@ -1,16 +1,15 @@ { "type": "filament", - "setting_id": "GFSA01_01", "name": "Bambu PLA Matte @BBL X1C 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Matte @base", + "from": "system", + "setting_id": "GFSA01_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "22" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C.json index 3451f4172e..0351e674a0 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA01", "name": "Bambu PLA Matte @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Matte @base", + "from": "system", + "setting_id": "GFSA01", + "instantiation": "true", "filament_max_volumetric_speed": [ "22" ], @@ -13,6 +13,5 @@ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @base.json b/resources/profiles/BBL/filament/Bambu PLA Matte @base.json index 16e468681c..a9a337c6a4 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFA01", "name": "Bambu PLA Matte @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "GFA01", + "instantiation": "false", "filament_vendor": [ "Bambu Lab" ], @@ -18,6 +18,6 @@ "0.98" ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Metal @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Metal @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..b486490b0d --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Metal @BBL A1M 0.2 nozzle.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "Bambu PLA Metal @BBL A1M 0.2 nozzle", + "inherits": "Bambu PLA Metal @base", + "from": "system", + "setting_id": "GFSA02_03", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Metal @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Metal @BBL A1M.json new file mode 100644 index 0000000000..9b58508d54 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Metal @BBL A1M.json @@ -0,0 +1,40 @@ +{ + "type": "filament", + "name": "Bambu PLA Metal @BBL A1M", + "inherits": "Bambu PLA Metal @base", + "from": "system", + "setting_id": "GFSA02_00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1.json index 1ce24d2e44..c481b66c0a 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA02_02", "name": "Bambu PLA Metal @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Metal @base", + "from": "system", + "setting_id": "GFSA02_02", + "instantiation": "true", "filament_max_volumetric_speed": [ "21" ], @@ -15,6 +15,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1C 0.2 nozzle.json index bc0e5ab292..75ef9a15ad 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA02_01", "name": "Bambu PLA Metal @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Metal @base", + "from": "system", + "setting_id": "GFSA02_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1C.json index ed8a13a369..1739a9ebdc 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Metal @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA02", "name": "Bambu PLA Metal @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Metal @base", + "from": "system", + "setting_id": "GFSA02", + "instantiation": "true", "filament_max_volumetric_speed": [ "21" ], @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Metal @base.json b/resources/profiles/BBL/filament/Bambu PLA Metal @base.json index da916316e5..77c81e4fb0 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Metal @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Metal @base.json @@ -1,23 +1,23 @@ { "type": "filament", - "filament_id": "GFA02", "name": "Bambu PLA Metal @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Bambu Lab" - ], + "from": "system", + "filament_id": "GFA02", + "instantiation": "false", "filament_cost": [ "29.99" ], - "filament_flow_ratio": [ - "0.98" - ], "filament_density": [ "1.25" ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_vendor": [ + "Bambu Lab" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Silk @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Silk @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..19caa9c9e6 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Silk @BBL A1M 0.2 nozzle.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "Bambu PLA Silk @BBL A1M 0.2 nozzle", + "inherits": "Bambu PLA Silk @base", + "from": "system", + "setting_id": "GFSA05_04", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Silk @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Silk @BBL A1M.json new file mode 100644 index 0000000000..e85cca345a --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Silk @BBL A1M.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Bambu PLA Silk @BBL A1M", + "inherits": "Bambu PLA Silk @base", + "from": "system", + "setting_id": "GFSA05_03", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1.json index ad0f3b9345..0c0c43cb7c 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA05_02", "name": "Bambu PLA Silk @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Silk @base", + "from": "system", + "setting_id": "GFSA05_02", + "instantiation": "true", "slow_down_layer_time": [ "8" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1C 0.2 nozzle.json index e82bf4fb15..2ce7e49f44 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA05_00", "name": "Bambu PLA Silk @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Silk @base", + "from": "system", + "setting_id": "GFSA05_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1C.json index 968dd3b550..a4ecedcc8a 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Silk @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA05_01", "name": "Bambu PLA Silk @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Silk @base", + "from": "system", + "setting_id": "GFSA05_01", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -12,6 +12,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Silk @base.json b/resources/profiles/BBL/filament/Bambu PLA Silk @base.json index a64a0c7280..642f939610 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Silk @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Silk @base.json @@ -1,29 +1,29 @@ { "type": "filament", - "filament_id": "GFA05", "name": "Bambu PLA Silk @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Bambu Lab" - ], - "filament_flow_ratio": [ - "0.98" + "from": "system", + "filament_id": "GFA05", + "instantiation": "false", + "filament_cost": [ + "29.99" ], "filament_density": [ "1.32" ], - "filament_cost": [ - "29.99" + "filament_flow_ratio": [ + "0.98" ], - "nozzle_temperature_initial_layer": [ - "230" + "filament_vendor": [ + "Bambu Lab" ], "nozzle_temperature": [ "230" ], + "nozzle_temperature_initial_layer": [ + "230" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Sparkle @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Sparkle @BBL A1M.json new file mode 100644 index 0000000000..d585542697 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Sparkle @BBL A1M.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Bambu PLA Sparkle @BBL A1M", + "inherits": "Bambu PLA Sparkle @base", + "from": "system", + "setting_id": "GFSA08_02", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Sparkle @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Sparkle @BBL X1.json index cd53484b2d..7e9b618e38 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Sparkle @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Sparkle @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA08_01", "name": "Bambu PLA Sparkle @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Sparkle @base", + "from": "system", + "setting_id": "GFSA08_01", + "instantiation": "true", "slow_down_layer_time": [ "8" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Sparkle @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Sparkle @BBL X1C.json index 1794aaaf20..7d18fcfe2a 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Sparkle @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Sparkle @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA08_00", "name": "Bambu PLA Sparkle @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Sparkle @base", + "from": "system", + "setting_id": "GFSA08_00", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -12,6 +12,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Sparkle @base.json b/resources/profiles/BBL/filament/Bambu PLA Sparkle @base.json index 15f3acc7fe..cd4ee94fd6 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Sparkle @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Sparkle @base.json @@ -1,13 +1,10 @@ { "type": "filament", - "filament_id": "GFA08", "name": "Bambu PLA Sparkle @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Bambu Lab" - ], + "from": "system", + "filament_id": "GFA08", + "instantiation": "false", "filament_cost": [ "29.99" ], @@ -17,7 +14,10 @@ "filament_flow_ratio": [ "0.98" ], + "filament_vendor": [ + "Bambu Lab" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Tough @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Tough @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..4f10cb0ed5 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Tough @BBL A1M 0.2 nozzle.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "Bambu PLA Tough @BBL A1M 0.2 nozzle", + "inherits": "Bambu PLA Tough @base", + "from": "system", + "setting_id": "GFSA09_04", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Tough @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Tough @BBL A1M.json new file mode 100644 index 0000000000..40b03fb52b --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA Tough @BBL A1M.json @@ -0,0 +1,40 @@ +{ + "type": "filament", + "name": "Bambu PLA Tough @BBL A1M", + "inherits": "Bambu PLA Tough @base", + "from": "system", + "setting_id": "GFSA09_03", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1.json index 8682564135..afab239c47 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA09_01", "name": "Bambu PLA Tough @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Tough @base", + "from": "system", + "setting_id": "GFSA09_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "21" ], @@ -15,6 +15,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1C 0.2 nozzle.json index ef7b0d9281..85fdd47846 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA09_00", "name": "Bambu PLA Tough @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Tough @base", + "from": "system", + "setting_id": "GFSA09_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1C.json index 2b6884d03d..78626f437c 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Tough @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA09_02", "name": "Bambu PLA Tough @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Tough @base", + "from": "system", + "setting_id": "GFSA09_02", + "instantiation": "true", "filament_max_volumetric_speed": [ "21" ], @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA Tough @base.json b/resources/profiles/BBL/filament/Bambu PLA Tough @base.json index 764386ed45..24168d6f13 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Tough @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Tough @base.json @@ -1,23 +1,23 @@ { "type": "filament", - "filament_id": "GFA09", "name": "Bambu PLA Tough @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Bambu Lab" - ], + "from": "system", + "filament_id": "GFA09", + "instantiation": "false", "filament_cost": [ "28.99" ], - "filament_flow_ratio": [ - "0.98" - ], "filament_density": [ "1.26" ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_vendor": [ + "Bambu Lab" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json new file mode 100644 index 0000000000..9e6df67b92 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json @@ -0,0 +1,45 @@ +{ + "type": "filament", + "name": "Bambu PLA-CF @BBL A1M 0.8 nozzle", + "inherits": "Bambu PLA-CF @base", + "from": "system", + "setting_id": "GFSA50_03", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M.json new file mode 100644 index 0000000000..8994c7d43c --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "name": "Bambu PLA-CF @BBL A1M", + "inherits": "Bambu PLA-CF @base", + "from": "system", + "setting_id": "GFSA50_00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json index f42ba10f70..e9017e3513 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json @@ -1,17 +1,17 @@ { "type": "filament", - "setting_id": "GFSA50_02", "name": "Bambu PLA-CF @BBL X1C 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA-CF @base", + "from": "system", + "setting_id": "GFSA50_02", + "instantiation": "true", "filament_max_volumetric_speed": [ "18" ], - "nozzle_temperature_initial_layer": [ + "nozzle_temperature": [ "230" ], - "nozzle_temperature": [ + "nozzle_temperature_initial_layer": [ "230" ], "compatible_printers": [ @@ -21,6 +21,5 @@ "Bambu Lab X1 0.8 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C.json index 6fbc6544ab..f22fe330ce 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C.json @@ -1,23 +1,22 @@ { "type": "filament", - "setting_id": "GFSA50_01", "name": "Bambu PLA-CF @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA-CF @base", + "from": "system", + "setting_id": "GFSA50_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "15" ], - "nozzle_temperature_initial_layer": [ + "nozzle_temperature": [ "230" ], - "nozzle_temperature": [ + "nozzle_temperature_initial_layer": [ "230" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @base.json b/resources/profiles/BBL/filament/Bambu PLA-CF @base.json index 763e2d0703..3f356ae865 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @base.json @@ -1,12 +1,12 @@ { "type": "filament", - "filament_id": "GFA50", "name": "Bambu PLA-CF @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Bambu Lab" + "from": "system", + "filament_id": "GFA50", + "instantiation": "false", + "additional_cooling_fan_speed": [ + "0" ], "cool_plate_temp": [ "45" @@ -17,11 +17,23 @@ "filament_cost": [ "34.99" ], + "filament_density": [ + "1.22" + ], "filament_flow_ratio": [ "0.98" ], - "filament_density": [ - "1.22" + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "210" ], "required_nozzle_HRC": [ "40" @@ -29,19 +41,7 @@ "slow_down_layer_time": [ "8" ], - "nozzle_temperature_range_low": [ - "210" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support For PA PET @BBL X1C.json b/resources/profiles/BBL/filament/Bambu Support For PA PET @BBL X1C.json index 1a772e5e5f..f963959089 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PA PET @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu Support For PA PET @BBL X1C.json @@ -1,10 +1,13 @@ { "type": "filament", - "setting_id": "GFSS03_00", "name": "Bambu Support For PA/PET @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support For PA/PET @base", + "from": "system", + "setting_id": "GFSS03_00", + "instantiation": "true", + "chamber_temperatures": [ + "60" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -15,6 +18,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json b/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json index 1c41f14c7f..7af6db4c14 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json +++ b/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFS03", "name": "Bambu Support For PA/PET @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "GFS03", + "instantiation": "false", "required_nozzle_HRC": [ "3" ], diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..f02e4de3c2 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL A1M 0.2 nozzle.json @@ -0,0 +1,41 @@ +{ + "type": "filament", + "name": "Bambu Support For PLA @BBL A1M 0.2 nozzle", + "inherits": "Bambu Support For PLA @base", + "from": "system", + "setting_id": "GFSS02_03", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "0.5" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @BBL A1M.json b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL A1M.json new file mode 100644 index 0000000000..4a73ea4aca --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL A1M.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "name": "Bambu Support For PLA @BBL A1M", + "inherits": "Bambu Support For PLA @base", + "from": "system", + "setting_id": "GFSS02_00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json index 018ffbdd52..b7a0f007a5 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json @@ -1,23 +1,22 @@ { "type": "filament", - "setting_id": "GFSS02_01", "name": "Bambu Support For PLA @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support For PLA @base", + "from": "system", + "setting_id": "GFSS02_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "0.5" ], - "nozzle_temperature_initial_layer": [ + "nozzle_temperature": [ "240" ], - "nozzle_temperature": [ + "nozzle_temperature_initial_layer": [ "240" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C.json b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C.json index b9c8e8a133..52fa72bd5b 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSS02_02", "name": "Bambu Support For PLA @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support For PLA @base", + "from": "system", + "setting_id": "GFSS02_02", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @base.json b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json index e014c00138..75179145e6 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA @base.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json @@ -1,19 +1,10 @@ { "type": "filament", - "filament_id": "GFS02", "name": "Bambu Support For PLA @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Bambu Lab" - ], - "filament_density": [ - "1.30" - ], - "filament_is_support": [ - "1" - ], + "from": "system", + "filament_id": "GFS02", + "instantiation": "false", "cool_plate_temp": [ "40" ], @@ -23,10 +14,19 @@ "filament_cost": [ "69.98" ], + "filament_density": [ + "1.30" + ], + "filament_is_support": [ + "1" + ], + "filament_vendor": [ + "Bambu Lab" + ], "slow_down_layer_time": [ "8" ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support G @BBL X1C.json b/resources/profiles/BBL/filament/Bambu Support G @BBL X1C.json index ced4f2bfe7..b0847af241 100644 --- a/resources/profiles/BBL/filament/Bambu Support G @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu Support G @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSS01", "name": "Bambu Support G @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support G @base", + "from": "system", + "setting_id": "GFSS01", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support G @base.json b/resources/profiles/BBL/filament/Bambu Support G @base.json index bbc35bf607..1d72fe9580 100644 --- a/resources/profiles/BBL/filament/Bambu Support G @base.json +++ b/resources/profiles/BBL/filament/Bambu Support G @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFS01", "name": "Bambu Support G @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "GFS01", + "instantiation": "false", "required_nozzle_HRC": [ "3" ], diff --git a/resources/profiles/BBL/filament/Bambu Support W @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu Support W @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..96c226d8e0 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support W @BBL A1M 0.2 nozzle.json @@ -0,0 +1,41 @@ +{ + "type": "filament", + "name": "Bambu Support W @BBL A1M 0.2 nozzle", + "inherits": "Bambu Support W @base", + "from": "system", + "setting_id": "GFSS00_02", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "0.5" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support W @BBL A1M.json b/resources/profiles/BBL/filament/Bambu Support W @BBL A1M.json new file mode 100644 index 0000000000..51efafdccf --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support W @BBL A1M.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "name": "Bambu Support W @BBL A1M", + "inherits": "Bambu Support W @base", + "from": "system", + "setting_id": "GFSS00_01", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support W @BBL X1.json b/resources/profiles/BBL/filament/Bambu Support W @BBL X1.json index ea65cb4c42..3d00718f7e 100644 --- a/resources/profiles/BBL/filament/Bambu Support W @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu Support W @BBL X1.json @@ -1,14 +1,13 @@ { "type": "filament", - "setting_id": "GFSS02", "name": "Bambu Support W @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support W @base", + "from": "system", + "setting_id": "GFSS02", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support W @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu Support W @BBL X1C 0.2 nozzle.json index 846495d92d..b7ecb14a81 100644 --- a/resources/profiles/BBL/filament/Bambu Support W @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu Support W @BBL X1C 0.2 nozzle.json @@ -1,23 +1,22 @@ { "type": "filament", - "setting_id": "GFSS00_00", "name": "Bambu Support W @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support W @base", + "from": "system", + "setting_id": "GFSS00_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "0.5" ], - "nozzle_temperature_initial_layer": [ + "nozzle_temperature": [ "240" ], - "nozzle_temperature": [ + "nozzle_temperature_initial_layer": [ "240" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support W @BBL X1C.json b/resources/profiles/BBL/filament/Bambu Support W @BBL X1C.json index d6f9346e1c..ebd8d00134 100644 --- a/resources/profiles/BBL/filament/Bambu Support W @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu Support W @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSS00", "name": "Bambu Support W @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support W @base", + "from": "system", + "setting_id": "GFSS00", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -12,6 +12,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support W @base.json b/resources/profiles/BBL/filament/Bambu Support W @base.json index e6efbd3c45..63f7acebc8 100644 --- a/resources/profiles/BBL/filament/Bambu Support W @base.json +++ b/resources/profiles/BBL/filament/Bambu Support W @base.json @@ -1,19 +1,10 @@ { "type": "filament", - "filament_id": "GFS00", "name": "Bambu Support W @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Bambu Lab" - ], - "filament_density": [ - "1.30" - ], - "filament_is_support": [ - "1" - ], + "from": "system", + "filament_id": "GFS00", + "instantiation": "false", "cool_plate_temp": [ "40" ], @@ -23,10 +14,19 @@ "filament_cost": [ "69.98" ], + "filament_density": [ + "1.30" + ], + "filament_is_support": [ + "1" + ], + "filament_vendor": [ + "Bambu Lab" + ], "slow_down_layer_time": [ "8" ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A @BBL A1M.json b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL A1M.json new file mode 100644 index 0000000000..eefb04f274 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL A1M.json @@ -0,0 +1,28 @@ +{ + "type": "filament", + "name": "Bambu TPU 95A @BBL A1M", + "inherits": "Bambu TPU 95A @base", + "from": "system", + "setting_id": "GFSU01_00", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.6" + ], + "hot_plate_temp": [ + "30" + ], + "hot_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "30" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1.json b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1.json index c45bcca8ca..2625946528 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSU01", "name": "Bambu TPU 95A @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "Bambu TPU 95A @base", + "from": "system", + "setting_id": "GFSU01", + "instantiation": "true", "filament_max_volumetric_speed": [ "3.6" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C.json b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C.json index b5535d246c..838fc4eb2e 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSU00", "name": "Bambu TPU 95A @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Bambu TPU 95A @base", + "from": "system", + "setting_id": "GFSU00", + "instantiation": "true", "filament_max_volumetric_speed": [ "3.6" ], @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A @base.json b/resources/profiles/BBL/filament/Bambu TPU 95A @base.json index 507386fb56..bc1e839340 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 95A @base.json +++ b/resources/profiles/BBL/filament/Bambu TPU 95A @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFU01", "name": "Bambu TPU 95A @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_tpu", + "from": "system", + "filament_id": "GFU01", + "instantiation": "false", "filament_vendor": [ "Bambu Lab" ], diff --git a/resources/profiles/BBL/filament/Generic ABS @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic ABS @0.2 nozzle.json index 59971c21a6..ea692b1849 100644 --- a/resources/profiles/BBL/filament/Generic ABS @0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic ABS @0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB99_00", "name": "Generic ABS @0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic ABS @base", + "from": "system", + "setting_id": "GFSB99_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic ABS @base.json b/resources/profiles/BBL/filament/Generic ABS @base.json index 044703f6a9..e41b289fbc 100644 --- a/resources/profiles/BBL/filament/Generic ABS @base.json +++ b/resources/profiles/BBL/filament/Generic ABS @base.json @@ -1,14 +1,14 @@ { "type": "filament", - "filament_id": "GFB99", "name": "Generic ABS @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_abs", + "from": "system", + "filament_id": "GFB99", + "instantiation": "false", "filament_flow_ratio": [ "0.95" ], "filament_max_volumetric_speed": [ "16" ] -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic ABS.json b/resources/profiles/BBL/filament/Generic ABS.json index 6602737aaf..bd7c0959c6 100644 --- a/resources/profiles/BBL/filament/Generic ABS.json +++ b/resources/profiles/BBL/filament/Generic ABS.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB99", "name": "Generic ABS", - "from": "system", - "instantiation": "true", "inherits": "Generic ABS @base", + "from": "system", + "setting_id": "GFSB99", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic ASA @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic ASA @0.2 nozzle.json index 1c274d1e2a..7e26d7bb66 100644 --- a/resources/profiles/BBL/filament/Generic ASA @0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic ASA @0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB98_00", "name": "Generic ASA @0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic ASA @base", + "from": "system", + "setting_id": "GFSB98_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic ASA @base.json b/resources/profiles/BBL/filament/Generic ASA @base.json index 10ed891833..9f80b36f12 100644 --- a/resources/profiles/BBL/filament/Generic ASA @base.json +++ b/resources/profiles/BBL/filament/Generic ASA @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFB98", "name": "Generic ASA @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_asa", + "from": "system", + "filament_id": "GFB98", + "instantiation": "false", "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/BBL/filament/Generic ASA.json b/resources/profiles/BBL/filament/Generic ASA.json index 4196ac2100..7e56eb37af 100644 --- a/resources/profiles/BBL/filament/Generic ASA.json +++ b/resources/profiles/BBL/filament/Generic ASA.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB98", "name": "Generic ASA", - "from": "system", - "instantiation": "true", "inherits": "Generic ASA @base", + "from": "system", + "setting_id": "GFSB98", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic HIPS @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic HIPS @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..a2200be03c --- /dev/null +++ b/resources/profiles/BBL/filament/Generic HIPS @BBL A1M 0.2 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "name": "Generic HIPS @BBL A1M 0.2 nozzle", + "inherits": "Generic HIPS @base", + "from": "system", + "setting_id": "GFSS98_03", + "instantiation": "true", + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "filament_max_volumetric_speed": [ + "0.5" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic HIPS @BBL A1M.json b/resources/profiles/BBL/filament/Generic HIPS @BBL A1M.json new file mode 100644 index 0000000000..11c1000c23 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic HIPS @BBL A1M.json @@ -0,0 +1,31 @@ +{ + "type": "filament", + "name": "Generic HIPS @BBL A1M", + "inherits": "Generic HIPS @base", + "from": "system", + "setting_id": "GFSS98_02", + "instantiation": "true", + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic HIPS @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic HIPS @BBL X1C 0.2 nozzle.json index 49134d2446..ea504f770a 100644 --- a/resources/profiles/BBL/filament/Generic HIPS @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic HIPS @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSS98_01", "name": "Generic HIPS @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic HIPS @base", + "from": "system", + "setting_id": "GFSS98_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "0.5" ], @@ -13,6 +13,5 @@ "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1P 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic HIPS @BBL X1C.json b/resources/profiles/BBL/filament/Generic HIPS @BBL X1C.json index 92608bb4d0..cf3280305b 100644 --- a/resources/profiles/BBL/filament/Generic HIPS @BBL X1C.json +++ b/resources/profiles/BBL/filament/Generic HIPS @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSS98_00", "name": "Generic HIPS @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Generic HIPS @base", + "from": "system", + "setting_id": "GFSS98_00", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", @@ -18,6 +18,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic HIPS @base.json b/resources/profiles/BBL/filament/Generic HIPS @base.json index 030daa118d..9ffe6a8598 100644 --- a/resources/profiles/BBL/filament/Generic HIPS @base.json +++ b/resources/profiles/BBL/filament/Generic HIPS @base.json @@ -1,14 +1,11 @@ { - "type": "filament", - "filament_id": "GFS98", - "name": "Generic HIPS @base", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_hips", - "filament_vendor": [ - "Generic" - ], - "filament_is_support": [ - "1" - ] + "type": "filament", + "name": "Generic HIPS @base", + "inherits": "fdm_filament_hips", + "from": "system", + "filament_id": "GFS98", + "instantiation": "false", + "filament_is_support": [ + "1" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PA-CF.json b/resources/profiles/BBL/filament/Generic PA-CF.json index dd1c485e06..5ce9881f82 100644 --- a/resources/profiles/BBL/filament/Generic PA-CF.json +++ b/resources/profiles/BBL/filament/Generic PA-CF.json @@ -1,11 +1,11 @@ { "type": "filament", + "name": "Generic PA-CF", + "inherits": "fdm_filament_pa", + "from": "system", "filament_id": "GFN98", "setting_id": "GFSN99", - "name": "Generic PA-CF", - "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pa", "fan_cooling_layer_time": [ "5" ], @@ -40,6 +40,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PA.json b/resources/profiles/BBL/filament/Generic PA.json index f8d714fd91..2fb23d1705 100644 --- a/resources/profiles/BBL/filament/Generic PA.json +++ b/resources/profiles/BBL/filament/Generic PA.json @@ -1,22 +1,25 @@ { "type": "filament", + "name": "Generic PA", + "inherits": "fdm_filament_pa", + "from": "system", "filament_id": "GFN99", "setting_id": "GFSN98", - "name": "Generic PA", - "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pa", - "required_nozzle_HRC": [ - "3" + "chamber_temperatures": [ + "60" ], - "nozzle_temperature_initial_layer": [ - "280" + "filament_max_volumetric_speed": [ + "16" ], "nozzle_temperature": [ "280" ], - "filament_max_volumetric_speed": [ - "16" + "nozzle_temperature_initial_layer": [ + "280" + ], + "required_nozzle_HRC": [ + "3" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", @@ -28,6 +31,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PC @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PC @0.2 nozzle.json index 11e8f5d3e6..2aaddc1d97 100644 --- a/resources/profiles/BBL/filament/Generic PC @0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic PC @0.2 nozzle.json @@ -1,16 +1,15 @@ { "type": "filament", - "setting_id": "GFSC99_00", "name": "Generic PC @0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic PC @base", + "from": "system", + "setting_id": "GFSC99_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "1" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PC @BBL P1S 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PC @BBL P1S 0.2 nozzle.json index 6eaf2c133a..43ba9a9c6b 100644 --- a/resources/profiles/BBL/filament/Generic PC @BBL P1S 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic PC @BBL P1S 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC99_03", "name": "Generic PC @BBL P1S 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic PC @0.2 nozzle", + "from": "system", + "setting_id": "GFSC99_03", + "instantiation": "true", "eng_plate_temp": [ "100" ], @@ -25,6 +25,5 @@ ], "compatible_printers": [ "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PC @BBL P1S.json b/resources/profiles/BBL/filament/Generic PC @BBL P1S.json index 5ea0e3409e..a384d080e8 100644 --- a/resources/profiles/BBL/filament/Generic PC @BBL P1S.json +++ b/resources/profiles/BBL/filament/Generic PC @BBL P1S.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC99_04", "name": "Generic PC @BBL P1S", - "from": "system", - "instantiation": "true", "inherits": "Generic PC", + "from": "system", + "setting_id": "GFSC99_04", + "instantiation": "true", "eng_plate_temp": [ "100" ], @@ -27,6 +27,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PC @base.json b/resources/profiles/BBL/filament/Generic PC @base.json index b51b608898..6c56650baf 100644 --- a/resources/profiles/BBL/filament/Generic PC @base.json +++ b/resources/profiles/BBL/filament/Generic PC @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFC99", "name": "Generic PC @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pc", + "from": "system", + "filament_id": "GFC99", + "instantiation": "false", "filament_max_volumetric_speed": [ "16" ], diff --git a/resources/profiles/BBL/filament/Generic PC.json b/resources/profiles/BBL/filament/Generic PC.json index 377f4885f6..6e8cbc2c6e 100644 --- a/resources/profiles/BBL/filament/Generic PC.json +++ b/resources/profiles/BBL/filament/Generic PC.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC99", "name": "Generic PC", - "from": "system", - "instantiation": "true", "inherits": "Generic PC @base", + "from": "system", + "setting_id": "GFSC99", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -12,6 +12,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PETG @0.2 nozzle.json index 46fbc4df63..ce6645dbf1 100644 --- a/resources/profiles/BBL/filament/Generic PETG @0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic PETG @0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSG99_01", "name": "Generic PETG @0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic PETG @base", + "from": "system", + "setting_id": "GFSG99_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "1" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PETG @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..7abc1a0652 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG @BBL A1M 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Generic PETG @BBL A1M 0.2 nozzle", + "inherits": "Generic PETG @base", + "from": "system", + "setting_id": "GFSG99_02", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG @BBL A1M.json b/resources/profiles/BBL/filament/Generic PETG @BBL A1M.json new file mode 100644 index 0000000000..83ce33ee7b --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG @BBL A1M.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PETG @BBL A1M", + "inherits": "Generic PETG @base", + "from": "system", + "setting_id": "GFSG99_00", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "8" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG @base.json b/resources/profiles/BBL/filament/Generic PETG @base.json index 2308488ea8..6e25c129fc 100644 --- a/resources/profiles/BBL/filament/Generic PETG @base.json +++ b/resources/profiles/BBL/filament/Generic PETG @base.json @@ -1,51 +1,54 @@ { "type": "filament", - "filament_id": "GFG99", "name": "Generic PETG @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "GFG99", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], "fan_cooling_layer_time": [ "30" ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], "fan_max_speed": [ "90" ], "fan_min_speed": [ "40" ], - "slow_down_min_speed": [ - "20" - ], "filament_flow_ratio": [ "0.95" ], "filament_max_volumetric_speed": [ "12" ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], "nozzle_temperature_range_high": [ "270" ], - "cool_plate_temp": [ - "0" + "overhang_fan_speed": [ + "90" ], - "eng_plate_temp": [ - "70" + "overhang_fan_threshold": [ + "10%" ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "70" - ], - "hot_plate_temp": [ - "70" + "slow_down_min_speed": [ + "20" ], "textured_plate_temp": [ "70" @@ -53,10 +56,7 @@ "textured_plate_temp_initial_layer": [ "70" ], - "hot_plate_temp_initial_layer": [ - "70" - ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG-CF @BBL X1C.json b/resources/profiles/BBL/filament/Generic PETG-CF @BBL X1C.json index 7bd57db6ed..cd1ddd9780 100644 --- a/resources/profiles/BBL/filament/Generic PETG-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Generic PETG-CF @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSG50", "name": "Generic PETG-CF @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Generic PETG-CF @base", + "from": "system", + "setting_id": "GFSG50", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG-CF @base.json b/resources/profiles/BBL/filament/Generic PETG-CF @base.json index c4c96b813b..c794c3566c 100644 --- a/resources/profiles/BBL/filament/Generic PETG-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PETG-CF @base.json @@ -1,80 +1,80 @@ { "type": "filament", - "filament_id": "GFG98", "name": "Generic PETG-CF @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pet", - "filament_flow_ratio": [ - "0.95" - ], - "temperature_vitrification": [ - "75" - ], - "overhang_fan_threshold": [ - "10%" - ], - "overhang_fan_speed": [ - "90" - ], + "from": "system", + "filament_id": "GFG98", + "instantiation": "false", "cool_plate_temp": [ "0" ], + "cool_plate_temp_initial_layer": [ + "0" + ], "eng_plate_temp": [ "70" ], - "hot_plate_temp": [ - "70" - ], - "textured_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], "eng_plate_temp_initial_layer": [ "70" ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "required_nozzle_HRC": [ - "40" - ], - "filament_vendor": [ - "Bambu Lab" - ], - "filament_type": [ - "PETG-CF" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "filament_cost": [ - "34.99" - ], - "filament_density": [ - "1.25" - ], "fan_max_speed": [ "30" ], "fan_min_speed": [ "0" ], + "filament_cost": [ + "34.99" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.95" + ], "filament_max_volumetric_speed": [ "12" ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "40" + ], "slow_down_layer_time": [ "6" ], - "filament_start_gcode":[ - "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}" + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG.json b/resources/profiles/BBL/filament/Generic PETG.json index 4ccbffb532..50827d352f 100644 --- a/resources/profiles/BBL/filament/Generic PETG.json +++ b/resources/profiles/BBL/filament/Generic PETG.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSG99", "name": "Generic PETG", - "from": "system", - "instantiation": "true", "inherits": "Generic PETG @base", + "from": "system", + "setting_id": "GFSG99", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json index da55b3cb06..734c0d5faf 100644 --- a/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json @@ -1,20 +1,19 @@ { "type": "filament", - "setting_id": "GFSL99_00", "name": "Generic PLA @0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic PLA @base", + "from": "system", + "setting_id": "GFSL99_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], - "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" - ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" ], - "version": "01.07.00.18" + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PLA @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..79d1f2150b --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PLA @BBL A1M 0.2 nozzle.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "Generic PLA @BBL A1M 0.2 nozzle", + "inherits": "Generic PLA @base", + "from": "system", + "setting_id": "GFSL99_03", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA @BBL A1M.json b/resources/profiles/BBL/filament/Generic PLA @BBL A1M.json new file mode 100644 index 0000000000..84bbaa9e13 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PLA @BBL A1M.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "name": "Generic PLA @BBL A1M", + "inherits": "Generic PLA @base", + "from": "system", + "setting_id": "GFSL99_02", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA @base.json b/resources/profiles/BBL/filament/Generic PLA @base.json index 43e3ff2f6a..904cef4dae 100644 --- a/resources/profiles/BBL/filament/Generic PLA @base.json +++ b/resources/profiles/BBL/filament/Generic PLA @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFL99", "name": "Generic PLA @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "GFL99", + "instantiation": "false", "filament_flow_ratio": [ "0.98" ], @@ -12,6 +12,6 @@ "8" ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif};Prevent PLA from jamming" + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif};Prevent PLA from jamming\n\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA High Speed @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..b043e52658 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL A1M 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Generic PLA High Speed @BBL A1M 0.2 nozzle", + "inherits": "Generic PLA High Speed @BBL A1M", + "from": "system", + "setting_id": "GFSL95_07", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "2" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA High Speed @BBL A1M.json b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL A1M.json new file mode 100644 index 0000000000..0697473589 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL A1M.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Generic PLA High Speed @BBL A1M", + "inherits": "Generic PLA High Speed @base", + "from": "system", + "setting_id": "GFSL95_06", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle", + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA High Speed @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL P1P 0.2 nozzle.json index 349be3047c..a96bb26134 100644 --- a/resources/profiles/BBL/filament/Generic PLA High Speed @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL P1P 0.2 nozzle.json @@ -10,6 +10,5 @@ ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA High Speed @BBL P1P.json b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL P1P.json index dbf1393681..a1750a1a16 100644 --- a/resources/profiles/BBL/filament/Generic PLA High Speed @BBL P1P.json +++ b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL P1P.json @@ -27,6 +27,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA High Speed @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL X1C 0.2 nozzle.json index 2a1ac23ef4..b5312c39f6 100644 --- a/resources/profiles/BBL/filament/Generic PLA High Speed @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL X1C 0.2 nozzle.json @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA High Speed @BBL X1C.json b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL X1C.json index 2ae8c726f7..ca0e526bdf 100644 --- a/resources/profiles/BBL/filament/Generic PLA High Speed @BBL X1C.json +++ b/resources/profiles/BBL/filament/Generic PLA High Speed @BBL X1C.json @@ -18,6 +18,5 @@ "Bambu Lab X1 0.6 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA Silk @BBL A1M.json b/resources/profiles/BBL/filament/Generic PLA Silk @BBL A1M.json new file mode 100644 index 0000000000..ba7582a9e1 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PLA Silk @BBL A1M.json @@ -0,0 +1,40 @@ +{ + "type": "filament", + "name": "Generic PLA Silk @BBL A1M", + "inherits": "Generic PLA Silk @base", + "from": "system", + "setting_id": "GFSL96_00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "7.5" + ], + "filament_retraction_length": [ + "0.5" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA Silk @base.json b/resources/profiles/BBL/filament/Generic PLA Silk @base.json index 456b9a6fad..60ac1d46fa 100644 --- a/resources/profiles/BBL/filament/Generic PLA Silk @base.json +++ b/resources/profiles/BBL/filament/Generic PLA Silk @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFL96", "name": "Generic PLA Silk @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "GFL96", + "instantiation": "false", "filament_flow_ratio": [ "0.98" ], @@ -12,6 +12,6 @@ "8" ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif};Prevent PLA from jamming" + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif};Prevent PLA from jamming\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA Silk.json b/resources/profiles/BBL/filament/Generic PLA Silk.json index decb00ab75..183cea5d65 100644 --- a/resources/profiles/BBL/filament/Generic PLA Silk.json +++ b/resources/profiles/BBL/filament/Generic PLA Silk.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL99_01", "name": "Generic PLA Silk", - "from": "system", - "instantiation": "true", "inherits": "Generic PLA Silk @base", + "from": "system", + "setting_id": "GFSL99_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "7.5" ], @@ -21,6 +21,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA-CF @BBL A1M.json b/resources/profiles/BBL/filament/Generic PLA-CF @BBL A1M.json new file mode 100644 index 0000000000..b8438ffee5 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PLA-CF @BBL A1M.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Generic PLA-CF @BBL A1M", + "inherits": "Generic PLA-CF @base", + "from": "system", + "setting_id": "GFSL98_00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA-CF @base.json b/resources/profiles/BBL/filament/Generic PLA-CF @base.json index 1055ec9902..597bdd6e23 100644 --- a/resources/profiles/BBL/filament/Generic PLA-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PLA-CF @base.json @@ -1,12 +1,12 @@ { "type": "filament", - "filament_id": "GFL98", "name": "Generic PLA-CF @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "required_nozzle_HRC": [ - "40" + "from": "system", + "filament_id": "GFL98", + "instantiation": "false", + "additional_cooling_fan_speed": [ + "0" ], "cool_plate_temp": [ "45" @@ -20,13 +20,13 @@ "filament_type": [ "PLA-CF" ], + "required_nozzle_HRC": [ + "40" + ], "slow_down_layer_time": [ "7" ], - "additional_cooling_fan_speed": [ - "0" - ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA-CF.json b/resources/profiles/BBL/filament/Generic PLA-CF.json index eadc8b1572..d1c4a8e9bd 100644 --- a/resources/profiles/BBL/filament/Generic PLA-CF.json +++ b/resources/profiles/BBL/filament/Generic PLA-CF.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL98", "name": "Generic PLA-CF", - "from": "system", - "instantiation": "true", "inherits": "Generic PLA-CF @base", + "from": "system", + "setting_id": "GFSL98", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PLA.json b/resources/profiles/BBL/filament/Generic PLA.json index a98d62ce51..800947d83a 100644 --- a/resources/profiles/BBL/filament/Generic PLA.json +++ b/resources/profiles/BBL/filament/Generic PLA.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL99", "name": "Generic PLA", - "from": "system", - "instantiation": "true", "inherits": "Generic PLA @base", + "from": "system", + "setting_id": "GFSL99", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", @@ -17,7 +17,6 @@ "Bambu Lab P1S 0.8 nozzle" ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" - ], - "version": "01.07.00.18" + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PPA-CF @BBL X1C.json b/resources/profiles/BBL/filament/Generic PPA-CF @BBL X1C.json new file mode 100644 index 0000000000..2df7f15255 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PPA-CF @BBL X1C.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Generic PPA-CF @BBL X1C", + "inherits": "Generic PPA-CF @base", + "from": "system", + "setting_id": "GFSN97_00", + "instantiation": "true", + "filament_type": [ + "PPA-CF" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1P 0.8 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PPA-CF @base.json b/resources/profiles/BBL/filament/Generic PPA-CF @base.json new file mode 100644 index 0000000000..1e642929b2 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PPA-CF @base.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PPA-CF @base", + "inherits": "fdm_filament_ppa", + "from": "system", + "filament_id": "GFN97", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "6" + ], + "filament_type": [ + "PPA-CF" + ], + "filament_vendor": [ + "Generic" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PPA-GF @BBL X1C.json b/resources/profiles/BBL/filament/Generic PPA-GF @BBL X1C.json new file mode 100644 index 0000000000..39cd2763d9 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PPA-GF @BBL X1C.json @@ -0,0 +1,31 @@ +{ + "type": "filament", + "name": "Generic PPA-GF @BBL X1C", + "inherits": "Generic PPA-GF @base", + "from": "system", + "setting_id": "GFSN96_00", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "8" + ], + "filament_type": [ + "PPA-GF" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PPA-GF @base.json b/resources/profiles/BBL/filament/Generic PPA-GF @base.json new file mode 100644 index 0000000000..2d95e3f5c0 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PPA-GF @base.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PPA-GF @base", + "inherits": "fdm_filament_ppa", + "from": "system", + "filament_id": "GFN96", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "6" + ], + "filament_type": [ + "PPA-GF" + ], + "filament_vendor": [ + "Generic" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PPS @base.json b/resources/profiles/BBL/filament/Generic PPS @base.json new file mode 100644 index 0000000000..7fa708bae6 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PPS @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic PPS @base", + "inherits": "fdm_filament_pps", + "from": "system", + "filament_id": "GFT97", + "instantiation": "false" +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PPS-CF @base.json b/resources/profiles/BBL/filament/Generic PPS-CF @base.json new file mode 100644 index 0000000000..887d276e2d --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PPS-CF @base.json @@ -0,0 +1,29 @@ +{ + "type": "filament", + "name": "Generic PPS-CF @base", + "inherits": "fdm_filament_pps", + "from": "system", + "filament_id": "GFT98", + "instantiation": "false", + "fan_max_speed": [ + "30" + ], + "filament_density": [ + "1.3" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_type": [ + "PPS-CF" + ], + "nozzle_temperature_range_high": [ + "350" + ], + "required_nozzle_HRC": [ + "40" + ], + "temperature_vitrification": [ + "220" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PVA @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PVA @0.2 nozzle.json index 6438b37537..63afb9af10 100644 --- a/resources/profiles/BBL/filament/Generic PVA @0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic PVA @0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSS99_00", "name": "Generic PVA @0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic PVA @base", + "from": "system", + "setting_id": "GFSS99_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "0.5" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PVA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PVA @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..d57e6fd726 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PVA @BBL A1M 0.2 nozzle.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "Generic PVA @BBL A1M 0.2 nozzle", + "inherits": "Generic PVA @base", + "from": "system", + "setting_id": "GFSS99_02", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "0.5" + ], + "hot_plate_temp": [ + "65" + ], + "hot_plate_temp_initial_layer": [ + "65" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PVA @BBL A1M.json b/resources/profiles/BBL/filament/Generic PVA @BBL A1M.json new file mode 100644 index 0000000000..fa3e915260 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PVA @BBL A1M.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Generic PVA @BBL A1M", + "inherits": "Generic PVA @base", + "from": "system", + "setting_id": "GFSS99_01", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "65" + ], + "hot_plate_temp_initial_layer": [ + "65" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle", + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PVA @base.json b/resources/profiles/BBL/filament/Generic PVA @base.json index e472d0284c..c29671ea3c 100644 --- a/resources/profiles/BBL/filament/Generic PVA @base.json +++ b/resources/profiles/BBL/filament/Generic PVA @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFS99", "name": "Generic PVA @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pva", + "from": "system", + "filament_id": "GFS99", + "instantiation": "false", "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/BBL/filament/Generic PVA.json b/resources/profiles/BBL/filament/Generic PVA.json index 4caebc3f31..fe621b3df7 100644 --- a/resources/profiles/BBL/filament/Generic PVA.json +++ b/resources/profiles/BBL/filament/Generic PVA.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSS99", "name": "Generic PVA", - "from": "system", - "instantiation": "true", "inherits": "Generic PVA @base", + "from": "system", + "setting_id": "GFSS99", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic TPU @BBL A1M.json b/resources/profiles/BBL/filament/Generic TPU @BBL A1M.json new file mode 100644 index 0000000000..d5caa5640a --- /dev/null +++ b/resources/profiles/BBL/filament/Generic TPU @BBL A1M.json @@ -0,0 +1,28 @@ +{ + "type": "filament", + "name": "Generic TPU @BBL A1M", + "inherits": "Generic TPU", + "from": "system", + "setting_id": "GFSU99_00", + "instantiation": "true", + "hot_plate_temp": [ + "30" + ], + "hot_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "30" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif} \n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic TPU.json b/resources/profiles/BBL/filament/Generic TPU.json index 4dea613b47..b8b689644f 100644 --- a/resources/profiles/BBL/filament/Generic TPU.json +++ b/resources/profiles/BBL/filament/Generic TPU.json @@ -1,17 +1,14 @@ { "type": "filament", + "name": "Generic TPU", + "inherits": "fdm_filament_tpu", + "from": "system", "filament_id": "GFU99", "setting_id": "GFSR99", - "name": "Generic TPU", - "from": "system", "instantiation": "true", - "inherits": "fdm_filament_tpu", "filament_max_volumetric_speed": [ "3.2" ], - "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}" - ], "compatible_printers": [ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", @@ -23,5 +20,7 @@ "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" ], - "version": "01.07.00.18" + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif} \n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..dd372d83b2 --- /dev/null +++ b/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1M 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Overture Matte PLA @BBL A1M 0.2 nozzle", + "inherits": "Overture Matte PLA @BBL A1M", + "from": "system", + "setting_id": "GFSL05_06", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab P1P 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1M.json b/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1M.json new file mode 100644 index 0000000000..0e6e727a3f --- /dev/null +++ b/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1M.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Overture Matte PLA @BBL A1M", + "inherits": "Overture Matte PLA @base", + "from": "system", + "setting_id": "GFSL05_05", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.8 nozzle", + "Bambu Lab A1 mini 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json index 1233076ac0..8b51a32b04 100644 --- a/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json @@ -10,6 +10,5 @@ ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P.json b/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P.json index 2ca075af16..634f7ef0a9 100644 --- a/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P.json +++ b/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P.json @@ -30,6 +30,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1.json b/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1.json index 3c906f1703..cedb6ba843 100644 --- a/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1.json +++ b/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL05_02", "name": "Overture Matte PLA @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "Overture Matte PLA @base", + "from": "system", + "setting_id": "GFSL05_02", + "instantiation": "true", "slow_down_layer_time": [ "10" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle", "Bambu Lab X1 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json index 44fddb6104..75e17fe8c8 100644 --- a/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL05_01", "name": "Overture Matte PLA @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Overture Matte PLA @BBL X1C", + "from": "system", + "setting_id": "GFSL05_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "1" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 0.2 nozzle", "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C.json b/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C.json index cf3b4dea14..421c52ff84 100644 --- a/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C.json +++ b/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL05_00", "name": "Overture Matte PLA @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Overture Matte PLA @base", + "from": "system", + "setting_id": "GFSL05_00", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -12,6 +12,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @base.json b/resources/profiles/BBL/filament/Overture Matte PLA @base.json index e833c9ae36..b4e2e3748f 100644 --- a/resources/profiles/BBL/filament/Overture Matte PLA @base.json +++ b/resources/profiles/BBL/filament/Overture Matte PLA @base.json @@ -1,16 +1,19 @@ { "type": "filament", - "filament_id": "GFL05", "name": "Overture Matte PLA @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "GFL05", + "instantiation": "false", "filament_cost": [ "24.52" ], "filament_density": [ "1.22" ], + "filament_flow_ratio": [ + "0.98" + ], "filament_max_volumetric_speed": [ "16" ], diff --git a/resources/profiles/BBL/filament/Overture PLA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture PLA @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..5a705c4a01 --- /dev/null +++ b/resources/profiles/BBL/filament/Overture PLA @BBL A1M 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Overture PLA @BBL A1M 0.2 nozzle", + "inherits": "Overture PLA @BBL A1M", + "from": "system", + "setting_id": "GFSL04_06", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture PLA @BBL A1M.json b/resources/profiles/BBL/filament/Overture PLA @BBL A1M.json new file mode 100644 index 0000000000..851864ce0e --- /dev/null +++ b/resources/profiles/BBL/filament/Overture PLA @BBL A1M.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Overture PLA @BBL A1M", + "inherits": "Overture PLA @base", + "from": "system", + "setting_id": "GFSL04_00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture PLA @BBL P1P 0.2 nozzle.json index 05994a7f80..f8de6aa199 100644 --- a/resources/profiles/BBL/filament/Overture PLA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture PLA @BBL P1P 0.2 nozzle.json @@ -10,6 +10,5 @@ ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture PLA @BBL P1P.json b/resources/profiles/BBL/filament/Overture PLA @BBL P1P.json index a7b857782a..d1d0e4af73 100644 --- a/resources/profiles/BBL/filament/Overture PLA @BBL P1P.json +++ b/resources/profiles/BBL/filament/Overture PLA @BBL P1P.json @@ -18,6 +18,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture PLA @BBL X1.json b/resources/profiles/BBL/filament/Overture PLA @BBL X1.json index f4138b2f81..c36384a9e7 100644 --- a/resources/profiles/BBL/filament/Overture PLA @BBL X1.json +++ b/resources/profiles/BBL/filament/Overture PLA @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL04_01", "name": "Overture PLA @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "Overture PLA @base", + "from": "system", + "setting_id": "GFSL04_01", + "instantiation": "true", "slow_down_layer_time": [ "10" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.8 nozzle", "Bambu Lab X1 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture PLA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture PLA @BBL X1C 0.2 nozzle.json index 4025bb9eb8..d8e4eb5116 100644 --- a/resources/profiles/BBL/filament/Overture PLA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture PLA @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL04_02", "name": "Overture PLA @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Overture PLA @BBL X1C", + "from": "system", + "setting_id": "GFSL04_02", + "instantiation": "true", "filament_max_volumetric_speed": [ "1" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture PLA @BBL X1C.json b/resources/profiles/BBL/filament/Overture PLA @BBL X1C.json index 1079ec06cd..28e21b831e 100644 --- a/resources/profiles/BBL/filament/Overture PLA @BBL X1C.json +++ b/resources/profiles/BBL/filament/Overture PLA @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL04_05", "name": "Overture PLA @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "Overture PLA @base", + "from": "system", + "setting_id": "GFSL04_05", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -12,6 +12,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Overture PLA @base.json b/resources/profiles/BBL/filament/Overture PLA @base.json index cf33af0390..7a4ce113b1 100644 --- a/resources/profiles/BBL/filament/Overture PLA @base.json +++ b/resources/profiles/BBL/filament/Overture PLA @base.json @@ -1,16 +1,19 @@ { "type": "filament", - "filament_id": "GFL04", "name": "Overture PLA @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "GFL04", + "instantiation": "false", "filament_cost": [ "24.15" ], "filament_density": [ "1.2" ], + "filament_flow_ratio": [ + "0.98" + ], "filament_max_volumetric_speed": [ "15" ], diff --git a/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P 0.2 nozzle.json index eaeaeed16a..e703e3d6a6 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P 0.2 nozzle.json @@ -1,10 +1,13 @@ { "type": "filament", - "setting_id": "GFSB00_02", "name": "Bambu ABS @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu ABS @base", + "from": "system", + "setting_id": "GFSB00_02", + "instantiation": "true", + "fan_max_speed": [ + "20" + ], "filament_max_volumetric_speed": [ "2" ], @@ -14,20 +17,16 @@ "hot_plate_temp_initial_layer": [ "100" ], + "reduce_fan_stop_start_freq": [ + "0" + ], "textured_plate_temp": [ "100" ], "textured_plate_temp_initial_layer": [ "100" ], - "fan_max_speed": [ - "20" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P.json index 4251860aa2..40a0a0a260 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P.json @@ -1,18 +1,15 @@ { "type": "filament", - "setting_id": "GFSB00_03", "name": "Bambu ABS @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu ABS @base", - "filament_max_volumetric_speed": [ - "22" - ], + "from": "system", + "setting_id": "GFSB00_03", + "instantiation": "true", "fan_max_speed": [ "20" ], - "reduce_fan_stop_start_freq": [ - "0" + "filament_max_volumetric_speed": [ + "22" ], "hot_plate_temp": [ "100" @@ -20,6 +17,9 @@ "hot_plate_temp_initial_layer": [ "100" ], + "reduce_fan_stop_start_freq": [ + "0" + ], "textured_plate_temp": [ "100" ], @@ -30,6 +30,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PA-CF @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PA-CF @BBL P1P.json index 2cbc777856..8a29f7a0db 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PA-CF @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PA-CF @BBL P1P.json @@ -1,15 +1,12 @@ { "type": "filament", - "setting_id": "GFSN00_10", "name": "Bambu PA-CF @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PA-CF @base", - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature": [ - "290" + "from": "system", + "setting_id": "GFSN00_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "5" ], "fan_max_speed": [ "30" @@ -17,16 +14,18 @@ "fan_min_speed": [ "10" ], - "fan_cooling_layer_time": [ - "5" - ], "full_fan_speed_layer": [ "2" ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PAHT-CF @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PAHT-CF @BBL P1P.json index 4f4629859f..705d143274 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PAHT-CF @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PAHT-CF @BBL P1P.json @@ -1,14 +1,13 @@ { "type": "filament", - "setting_id": "GFSN04_10", "name": "Bambu PAHT-CF @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PAHT-CF @base", + "from": "system", + "setting_id": "GFSN04_10", + "instantiation": "true", "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PC @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu PC @BBL P1P 0.2 nozzle.json index 5be4ad1684..b4bcf75507 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PC @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PC @BBL P1P 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC00_03", "name": "Bambu PC @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PC @base", + "from": "system", + "setting_id": "GFSC00_03", + "instantiation": "true", "eng_plate_temp": [ "100" ], @@ -37,6 +37,5 @@ ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PC @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PC @BBL P1P.json index 56d71597a3..a34eef36af 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PC @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PC @BBL P1P.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC00_04", "name": "Bambu PC @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PC @base", + "from": "system", + "setting_id": "GFSC00_04", + "instantiation": "true", "eng_plate_temp": [ "100" ], @@ -33,6 +33,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PET-CF @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PET-CF @BBL P1P.json index b3928f04a8..9edc5c0844 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PET-CF @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PET-CF @BBL P1P.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFST01_10", "name": "Bambu PET-CF @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PET-CF @base", + "from": "system", + "setting_id": "GFST01_10", + "instantiation": "true", "reduce_fan_stop_start_freq": [ "0" ], @@ -15,6 +15,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json index 8c99b497c9..4904cf0b10 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json @@ -1,15 +1,14 @@ { "type": "filament", - "setting_id": "GFSG50_03", "name": "Bambu PETG-CF @BBL P1P 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PETG-CF @base", + "from": "system", + "setting_id": "GFSG50_03", + "instantiation": "true", "filament_max_volumetric_speed": [ "13" ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P.json index c86e47ac5a..fe4edb3f3d 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P.json @@ -1,13 +1,12 @@ { "type": "filament", - "setting_id": "GFSG50_11", "name": "Bambu PETG-CF @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PETG-CF @base", + "from": "system", + "setting_id": "GFSG50_11", + "instantiation": "true", "compatible_printers": [ "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Aero @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Aero @BBL P1P.json index e0fba9d63a..12b0b187cf 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Aero @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Aero @BBL P1P.json @@ -1,35 +1,34 @@ { - "name": "Bambu PLA Aero @BBL P1P", "type": "filament", - "instantiation": "true", - "from": "system", + "name": "Bambu PLA Aero @BBL P1P", "inherits": "Bambu PLA Aero @base", + "from": "system", "setting_id": "GFSA11_02", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], + "fan_cooling_layer_time": [ + "80" + ], + "hot_plate_temp": [ + "65" + ], "hot_plate_temp_initial_layer": [ "65" ], - "hot_plate_temp": [ + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "textured_plate_temp": [ - "65" - ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], - "slow_down_layer_time": [ - "8" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Basic @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Basic @BBL P1P 0.2 nozzle.json index ef06b387db..815cca5839 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Basic @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Basic @BBL P1P 0.2 nozzle.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSA00_10", "name": "Bambu PLA Basic @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Basic @base", + "from": "system", + "setting_id": "GFSA00_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "2" ], @@ -20,14 +26,7 @@ "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Basic @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Basic @BBL P1P.json index cc6c104cb6..d64ab7e7d1 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Basic @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Basic @BBL P1P.json @@ -1,38 +1,37 @@ { "type": "filament", - "setting_id": "GFSA04_10", "name": "Bambu PLA Basic @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Basic @base", + "from": "system", + "setting_id": "GFSA04_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "21" ], - "slow_down_layer_time": [ - "8" - ], "hot_plate_temp": [ "65" ], "hot_plate_temp_initial_layer": [ "65" ], + "slow_down_layer_time": [ + "8" + ], "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Marble @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Marble @BBL P1P.json index 1de552cdac..01a5fab4a1 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Marble @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Marble @BBL P1P.json @@ -1,35 +1,34 @@ { "type": "filament", - "setting_id": "GFSA07_10", "name": "Bambu PLA Marble @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Marble @base", + "from": "system", + "setting_id": "GFSA07_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "hot_plate_temp": [ "65" ], "hot_plate_temp_initial_layer": [ "65" ], + "slow_down_layer_time": [ + "8" + ], "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], - "slow_down_layer_time": [ - "8" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P 0.2 nozzle.json index dcee309eed..469caee5cd 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P 0.2 nozzle.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSA01_10", "name": "Bambu PLA Matte @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Matte @base", + "from": "system", + "setting_id": "GFSA01_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "2" ], @@ -20,14 +26,7 @@ "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P.json index 4af3f8ab56..fcfc07fd19 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P.json @@ -1,38 +1,37 @@ { "type": "filament", - "setting_id": "GFSA05_10", "name": "Bambu PLA Matte @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Matte @base", + "from": "system", + "setting_id": "GFSA05_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "22" ], - "slow_down_layer_time": [ - "8" - ], "hot_plate_temp": [ "65" ], "hot_plate_temp_initial_layer": [ "65" ], + "slow_down_layer_time": [ + "8" + ], "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Metal @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Metal @BBL P1P 0.2 nozzle.json index e5ca0cd91e..e15633097b 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Metal @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Metal @BBL P1P 0.2 nozzle.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSA02_11", "name": "Bambu PLA Metal @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Metal @base", + "from": "system", + "setting_id": "GFSA02_11", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "2" ], @@ -20,14 +26,7 @@ "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Metal @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Metal @BBL P1P.json index c9cf41f464..a0dca2a898 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Metal @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Metal @BBL P1P.json @@ -1,38 +1,37 @@ { "type": "filament", - "setting_id": "GFSA02_10", "name": "Bambu PLA Metal @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Metal @base", + "from": "system", + "setting_id": "GFSA02_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "21" ], - "slow_down_layer_time": [ - "8" - ], "hot_plate_temp": [ "65" ], "hot_plate_temp_initial_layer": [ "65" ], + "slow_down_layer_time": [ + "8" + ], "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Silk @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Silk @BBL P1P 0.2 nozzle.json index 9287aef080..09a0b7a53b 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Silk @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Silk @BBL P1P 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSA05_11", "name": "Bambu PLA Silk @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Silk @base", + "from": "system", + "setting_id": "GFSA05_11", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -22,6 +22,5 @@ ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Silk @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Silk @BBL P1P.json index 936782d046..81eed74e3d 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Silk @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Silk @BBL P1P.json @@ -1,19 +1,19 @@ { "type": "filament", - "setting_id": "GFSA05_12", "name": "Bambu PLA Silk @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Silk @base", - "slow_down_layer_time": [ - "8" - ], + "from": "system", + "setting_id": "GFSA05_12", + "instantiation": "true", "hot_plate_temp": [ "65" ], "hot_plate_temp_initial_layer": [ "65" ], + "slow_down_layer_time": [ + "8" + ], "textured_plate_temp": [ "65" ], @@ -24,6 +24,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Sparkle @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Sparkle @BBL P1P.json index 0ff5e89cbf..437b010e73 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Sparkle @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Sparkle @BBL P1P.json @@ -1,35 +1,34 @@ { "type": "filament", - "setting_id": "GFSA08_10", "name": "Bambu PLA Sparkle @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Sparkle @base", + "from": "system", + "setting_id": "GFSA08_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "hot_plate_temp": [ "65" ], "hot_plate_temp_initial_layer": [ "65" ], + "slow_down_layer_time": [ + "8" + ], "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], - "slow_down_layer_time": [ - "8" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Tough @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Tough @BBL P1P 0.2 nozzle.json index 04800c5247..b1d1351f6d 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Tough @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Tough @BBL P1P 0.2 nozzle.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSA09_10", "name": "Bambu PLA Tough @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Tough @base", + "from": "system", + "setting_id": "GFSA09_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "2" ], @@ -20,14 +26,7 @@ "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Tough @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Tough @BBL P1P.json index 572c4b5c6b..f756aef514 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Tough @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Tough @BBL P1P.json @@ -1,38 +1,37 @@ { "type": "filament", - "setting_id": "GFSA09_11", "name": "Bambu PLA Tough @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA Tough @base", + "from": "system", + "setting_id": "GFSA09_11", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "21" ], - "slow_down_layer_time": [ - "8" - ], "hot_plate_temp": [ "65" ], "hot_plate_temp_initial_layer": [ "65" ], + "slow_down_layer_time": [ + "8" + ], "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json index d13973d724..500dacbbf3 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSA50_11", "name": "Bambu PLA-CF @BBL P1P 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA-CF @base", + "from": "system", + "setting_id": "GFSA50_11", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "18" ], @@ -14,27 +20,20 @@ "hot_plate_temp_initial_layer": [ "65" ], - "textured_plate_temp": [ - "65" - ], - "textured_plate_temp_initial_layer": [ - "65" - ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "nozzle_temperature": [ "230" ], "nozzle_temperature_initial_layer": [ "230" ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], "compatible_printers": [ "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P.json index 5eca882786..640bb4af9a 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSA50_10", "name": "Bambu PLA-CF @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu PLA-CF @base", + "from": "system", + "setting_id": "GFSA50_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "15" ], @@ -14,26 +20,19 @@ "hot_plate_temp_initial_layer": [ "65" ], - "textured_plate_temp": [ - "65" - ], - "textured_plate_temp_initial_layer": [ - "65" - ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "nozzle_temperature": [ "230" ], "nozzle_temperature_initial_layer": [ "230" ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu Support For PA PET @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu Support For PA PET @BBL P1P.json index bba2ae2a1d..394b924a0c 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu Support For PA PET @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu Support For PA PET @BBL P1P.json @@ -1,14 +1,13 @@ { "type": "filament", - "setting_id": "GFSS03_01", "name": "Bambu Support For PA/PET @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support For PA/PET @base", + "from": "system", + "setting_id": "GFSS03_01", + "instantiation": "true", "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json index 6c5ee18e4d..c8eacd22f8 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json @@ -1,39 +1,38 @@ { "type": "filament", - "setting_id": "GFSS02_11", "name": "Bambu Support For PLA @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support For PLA @base", + "from": "system", + "setting_id": "GFSS02_11", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "0.5" ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature": [ - "240" - ], "hot_plate_temp": [ "65" ], "hot_plate_temp_initial_layer": [ "65" ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P.json index ce56629e6a..cbe201a3a3 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSS02_12", "name": "Bambu Support For PLA @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support For PLA @base", + "from": "system", + "setting_id": "GFSS02_12", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "hot_plate_temp": [ "65" ], @@ -17,16 +23,9 @@ "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu Support G @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu Support G @BBL P1P.json index d6e5035829..318bcd86d1 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu Support G @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu Support G @BBL P1P.json @@ -1,14 +1,13 @@ { "type": "filament", - "setting_id": "GFSS01_10", "name": "Bambu Support G @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support G @base", + "from": "system", + "setting_id": "GFSS01_10", + "instantiation": "true", "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu Support W @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu Support W @BBL P1P 0.2 nozzle.json index 471f83db41..0b1994f67c 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu Support W @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu Support W @BBL P1P 0.2 nozzle.json @@ -1,39 +1,38 @@ { "type": "filament", - "setting_id": "GFSS00_10", "name": "Bambu Support W @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support W @base", + "from": "system", + "setting_id": "GFSS00_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "0.5" ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature": [ - "240" - ], "hot_plate_temp": [ "65" ], "hot_plate_temp_initial_layer": [ "65" ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu Support W @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu Support W @BBL P1P.json index d7fe18d99b..4463bcd325 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu Support W @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu Support W @BBL P1P.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSS02_10", "name": "Bambu Support W @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu Support W @base", + "from": "system", + "setting_id": "GFSS02_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "hot_plate_temp": [ "65" ], @@ -17,16 +23,9 @@ "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu TPU 95A @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu TPU 95A @BBL P1P.json index ef68f2c392..5c980a1e6b 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu TPU 95A @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu TPU 95A @BBL P1P.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSU01_10", "name": "Bambu TPU 95A @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Bambu TPU 95A @base", + "from": "system", + "setting_id": "GFSU01_10", + "instantiation": "true", "filament_max_volumetric_speed": [ "3.6" ], @@ -23,7 +23,9 @@ "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", - "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + "Bambu Lab P1P 0.8 nozzle", + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic ABS @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Generic ABS @BBL P1P 0.2 nozzle.json index 3b18b92c35..2315e5da8a 100644 --- a/resources/profiles/BBL/filament/P1P/Generic ABS @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Generic ABS @BBL P1P 0.2 nozzle.json @@ -1,18 +1,15 @@ { "type": "filament", - "setting_id": "GFSB99_02", "name": "Generic ABS @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic ABS @base", - "filament_max_volumetric_speed": [ - "2" - ], + "from": "system", + "setting_id": "GFSB99_02", + "instantiation": "true", "fan_max_speed": [ "20" ], - "reduce_fan_stop_start_freq": [ - "0" + "filament_max_volumetric_speed": [ + "2" ], "hot_plate_temp": [ "100" @@ -20,6 +17,9 @@ "hot_plate_temp_initial_layer": [ "100" ], + "reduce_fan_stop_start_freq": [ + "0" + ], "textured_plate_temp": [ "100" ], @@ -28,6 +28,5 @@ ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic ABS @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic ABS @BBL P1P.json index 8f2b1fd8fb..3b46c650d1 100644 --- a/resources/profiles/BBL/filament/P1P/Generic ABS @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic ABS @BBL P1P.json @@ -1,22 +1,22 @@ { "type": "filament", - "setting_id": "GFSB99_01", "name": "Generic ABS @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Generic ABS @base", + "from": "system", + "setting_id": "GFSB99_01", + "instantiation": "true", "fan_max_speed": [ "20" ], - "reduce_fan_stop_start_freq": [ - "0" - ], "hot_plate_temp": [ "100" ], "hot_plate_temp_initial_layer": [ "100" ], + "reduce_fan_stop_start_freq": [ + "0" + ], "textured_plate_temp": [ "100" ], @@ -27,6 +27,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic ASA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Generic ASA @BBL P1P 0.2 nozzle.json index 0c33a83125..50bf7bebbe 100644 --- a/resources/profiles/BBL/filament/P1P/Generic ASA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Generic ASA @BBL P1P 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB98_11", "name": "Generic ASA @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic ASA @base", + "from": "system", + "setting_id": "GFSB98_11", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -22,6 +22,5 @@ ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic ASA @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic ASA @BBL P1P.json index 339dd358dc..000cddfd36 100644 --- a/resources/profiles/BBL/filament/P1P/Generic ASA @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic ASA @BBL P1P.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB98_10", "name": "Generic ASA @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Generic ASA @base", + "from": "system", + "setting_id": "GFSB98_10", + "instantiation": "true", "hot_plate_temp": [ "100" ], @@ -21,6 +21,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PA @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic PA @BBL P1P.json index 2d212ce45a..696ea395e1 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PA @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic PA @BBL P1P.json @@ -1,27 +1,26 @@ { "type": "filament", + "name": "Generic PA @BBL P1P", + "inherits": "fdm_filament_pa", + "from": "system", "filament_id": "GFN99", "setting_id": "GFSN98_10", - "name": "Generic PA @BBL P1P", - "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pa", - "required_nozzle_HRC": [ - "3" - ], - "nozzle_temperature_initial_layer": [ - "280" + "filament_max_volumetric_speed": [ + "16" ], "nozzle_temperature": [ "280" ], - "filament_max_volumetric_speed": [ - "16" + "nozzle_temperature_initial_layer": [ + "280" + ], + "required_nozzle_HRC": [ + "3" ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PA-CF @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic PA-CF @BBL P1P.json index 07f4a404f1..1e17c278ce 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PA-CF @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic PA-CF @BBL P1P.json @@ -1,13 +1,13 @@ { "type": "filament", + "name": "Generic PA-CF @BBL P1P", + "inherits": "fdm_filament_pa", + "from": "system", "filament_id": "GFN98", "setting_id": "GFSN99_10", - "name": "Generic PA-CF @BBL P1P", - "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pa", - "filament_type": [ - "PA-CF" + "fan_cooling_layer_time": [ + "5" ], "fan_max_speed": [ "30" @@ -15,22 +15,21 @@ "fan_min_speed": [ "10" ], - "overhang_fan_threshold": [ - "0%" + "filament_type": [ + "PA-CF" + ], + "full_fan_speed_layer": [ + "2" ], "overhang_fan_speed": [ "40" ], - "fan_cooling_layer_time": [ - "5" - ], - "full_fan_speed_layer": [ - "2" + "overhang_fan_threshold": [ + "0%" ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PC @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Generic PC @BBL P1P 0.2 nozzle.json index ede9a8830c..9a08a5b75b 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PC @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Generic PC @BBL P1P 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC99_01", "name": "Generic PC @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic PC @base", + "from": "system", + "setting_id": "GFSC99_01", + "instantiation": "true", "eng_plate_temp": [ "100" ], @@ -34,6 +34,5 @@ ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PC @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic PC @BBL P1P.json index fdea6384a2..e49796daee 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PC @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic PC @BBL P1P.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSC99_02", "name": "Generic PC @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Generic PC @base", + "from": "system", + "setting_id": "GFSC99_02", + "instantiation": "true", "eng_plate_temp": [ "100" ], @@ -33,6 +33,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PETG @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Generic PETG @BBL P1P 0.2 nozzle.json index 439c67d766..317c0d0ac6 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PETG @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Generic PETG @BBL P1P 0.2 nozzle.json @@ -1,10 +1,13 @@ { "type": "filament", - "setting_id": "GFSG99_11", "name": "Generic PETG @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic PETG @base", + "from": "system", + "setting_id": "GFSG99_11", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], "hot_plate_temp": [ "80" ], @@ -17,11 +20,7 @@ "textured_plate_temp_initial_layer": [ "80" ], - "filament_max_volumetric_speed": [ - "1" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PETG @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic PETG @BBL P1P.json index 4103e51bc8..c50407cac3 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PETG @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic PETG @BBL P1P.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSG99_10", "name": "Generic PETG @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Generic PETG @base", + "from": "system", + "setting_id": "GFSG99_10", + "instantiation": "true", "hot_plate_temp": [ "80" ], @@ -21,6 +21,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PETG-CF @BBL A1M.json b/resources/profiles/BBL/filament/P1P/Generic PETG-CF @BBL A1M.json new file mode 100644 index 0000000000..927e839529 --- /dev/null +++ b/resources/profiles/BBL/filament/P1P/Generic PETG-CF @BBL A1M.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PETG-CF @BBL A1M", + "inherits": "Generic PETG-CF @BBL P1P", + "from": "system", + "setting_id": "GFSG98_00", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "8" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PETG-CF @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic PETG-CF @BBL P1P.json index 894c152c2f..bf4c3ae6d8 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PETG-CF @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic PETG-CF @BBL P1P.json @@ -1,14 +1,13 @@ { "type": "filament", - "setting_id": "GFSG50_10", "name": "Generic PETG-CF @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Generic PETG-CF @base", + "from": "system", + "setting_id": "GFSG50_10", + "instantiation": "true", "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P 0.2 nozzle.json index b8ff4c07b0..7e5aa202ae 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P 0.2 nozzle.json @@ -1,16 +1,19 @@ { "type": "filament", - "setting_id": "GFSL99_11", "name": "Generic PLA @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic PLA @base", + "from": "system", + "setting_id": "GFSL99_11", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "2" ], - "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}" - ], "hot_plate_temp": [ "65" ], @@ -23,14 +26,10 @@ "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" ], - "version": "01.07.00.18" + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P.json index f9156161db..9315248c4c 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSL99_10", "name": "Generic PLA @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Generic PLA @base", + "from": "system", + "setting_id": "GFSL99_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "hot_plate_temp": [ "65" ], @@ -17,16 +23,9 @@ "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PLA Silk @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic PLA Silk @BBL P1P.json index 366bf72d6c..3be9850301 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PLA Silk @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic PLA Silk @BBL P1P.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL99_12", "name": "Generic PLA Silk @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Generic PLA Silk @base", + "from": "system", + "setting_id": "GFSL99_12", + "instantiation": "true", "filament_max_volumetric_speed": [ "7.5" ], @@ -15,6 +15,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PLA-CF @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic PLA-CF @BBL P1P.json index 4713f504b7..6cfee5a5e1 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PLA-CF @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic PLA-CF @BBL P1P.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL98_10", "name": "Generic PLA-CF @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Generic PLA-CF @base", + "from": "system", + "setting_id": "GFSL98_10", + "instantiation": "true", "hot_plate_temp": [ "65" ], @@ -21,6 +21,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PVA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Generic PVA @BBL P1P 0.2 nozzle.json index 79b160d76b..b8635c757a 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PVA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Generic PVA @BBL P1P 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSS99_11", "name": "Generic PVA @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Generic PVA @base", + "from": "system", + "setting_id": "GFSS99_11", + "instantiation": "true", "filament_max_volumetric_speed": [ "0.5" ], @@ -22,6 +22,5 @@ ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic PVA @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic PVA @BBL P1P.json index 2279bdff7b..b7b0ea7808 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PVA @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic PVA @BBL P1P.json @@ -1,15 +1,15 @@ { "type": "filament", - "setting_id": "GFSS99_10", "name": "Generic PVA @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "Generic PVA @base", - "textured_plate_temp": [ - "65" + "from": "system", + "setting_id": "GFSS99_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" ], - "textured_plate_temp_initial_layer": [ - "65" + "fan_min_speed": [ + "50" ], "hot_plate_temp": [ "65" @@ -17,16 +17,15 @@ "hot_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" + "textured_plate_temp": [ + "65" ], - "fan_cooling_layer_time": [ - "80" + "textured_plate_temp_initial_layer": [ + "65" ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Generic TPU @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic TPU @BBL P1P.json index af99bdaebd..effdb2d7f3 100644 --- a/resources/profiles/BBL/filament/P1P/Generic TPU @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic TPU @BBL P1P.json @@ -1,17 +1,14 @@ { "type": "filament", + "name": "Generic TPU @BBL P1P", + "inherits": "fdm_filament_tpu", + "from": "system", "filament_id": "GFU99", "setting_id": "GFSR99_10", - "name": "Generic TPU @BBL P1P", - "from": "system", "instantiation": "true", - "inherits": "fdm_filament_tpu", "filament_max_volumetric_speed": [ "3.2" ], - "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}" - ], "hot_plate_temp": [ "45" ], @@ -29,5 +26,7 @@ "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" ], - "version": "01.07.00.18" + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif} \n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json index e869ab7c50..70619f5284 100644 --- a/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSL25_10", "name": "PolyLite PLA @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "PolyLite PLA @BBL X1C", + "from": "system", + "setting_id": "GFSL25_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "1" ], @@ -20,14 +26,7 @@ "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P.json b/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P.json index 6d8f8048d7..8430df5296 100644 --- a/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P.json @@ -1,38 +1,37 @@ { "type": "filament", - "setting_id": "GFSL23_10", "name": "PolyLite PLA @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "PolyLite PLA @base", + "from": "system", + "setting_id": "GFSL23_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "15" ], - "slow_down_layer_time": [ - "8" - ], "hot_plate_temp": [ "65" ], "hot_plate_temp_initial_layer": [ "65" ], + "slow_down_layer_time": [ + "8" + ], "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json index caf5221da0..789062def6 100644 --- a/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSL24_10", "name": "PolyTerra PLA @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "PolyTerra PLA @BBL X1C", + "from": "system", + "setting_id": "GFSL24_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "1" ], @@ -20,14 +26,7 @@ "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P.json b/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P.json index 4d3f0476ab..7504020d8f 100644 --- a/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P.json @@ -1,38 +1,37 @@ { "type": "filament", - "setting_id": "GFSL22_10", "name": "PolyTerra PLA @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "PolyTerra PLA @base", + "from": "system", + "setting_id": "GFSL22_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "22" ], - "slow_down_layer_time": [ - "8" - ], "hot_plate_temp": [ "65" ], "hot_plate_temp_initial_layer": [ "65" ], + "slow_down_layer_time": [ + "8" + ], "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json index f96da4892e..154a347fd1 100644 --- a/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json @@ -1,10 +1,16 @@ { "type": "filament", - "setting_id": "GFSL03_10", "name": "eSUN PLA+ @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "eSUN PLA+ @base", + "from": "system", + "setting_id": "GFSL03_10", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], "filament_max_volumetric_speed": [ "1" ], @@ -20,14 +26,7 @@ "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P.json b/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P.json index 26edb03393..a2523d3f54 100644 --- a/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P.json @@ -1,12 +1,15 @@ { "type": "filament", - "setting_id": "GFSL03_11", "name": "eSUN PLA+ @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "eSUN PLA+ @base", - "slow_down_layer_time": [ - "10" + "from": "system", + "setting_id": "GFSL03_11", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" ], "hot_plate_temp": [ "65" @@ -14,22 +17,18 @@ "hot_plate_temp_initial_layer": [ "65" ], + "slow_down_layer_time": [ + "10" + ], "textured_plate_temp": [ "65" ], "textured_plate_temp_initial_layer": [ "65" ], - "fan_min_speed": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite ABS @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite ABS @BBL P1P 0.2 nozzle.json index 537a06c733..82d325cab1 100644 --- a/resources/profiles/BBL/filament/PolyLite ABS @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyLite ABS @BBL P1P 0.2 nozzle.json @@ -1,15 +1,14 @@ { "type": "filament", - "setting_id": "GFSB60_05", "name": "PolyLite ABS @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "PolyLite ABS @BBL P1P", + "from": "system", + "setting_id": "GFSB60_05", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite ABS @BBL P1P.json b/resources/profiles/BBL/filament/PolyLite ABS @BBL P1P.json index 56212c576e..264eaa67cd 100644 --- a/resources/profiles/BBL/filament/PolyLite ABS @BBL P1P.json +++ b/resources/profiles/BBL/filament/PolyLite ABS @BBL P1P.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB60_04", "name": "PolyLite ABS @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "PolyLite ABS @base", + "from": "system", + "setting_id": "GFSB60_04", + "instantiation": "true", "fan_max_speed": [ "20" ], @@ -27,6 +27,5 @@ "Bambu Lab P1P 0.8 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite ABS @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite ABS @BBL X1C 0.2 nozzle.json index d23adde4ba..fe96accbfb 100644 --- a/resources/profiles/BBL/filament/PolyLite ABS @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyLite ABS @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB60_02", "name": "PolyLite ABS @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "PolyLite ABS @BBL X1C", + "from": "system", + "setting_id": "GFSB60_02", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite ABS @BBL X1C.json b/resources/profiles/BBL/filament/PolyLite ABS @BBL X1C.json index dfac5a9b65..c3738bc335 100644 --- a/resources/profiles/BBL/filament/PolyLite ABS @BBL X1C.json +++ b/resources/profiles/BBL/filament/PolyLite ABS @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB60_00", "name": "PolyLite ABS @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "PolyLite ABS @base", + "from": "system", + "setting_id": "GFSB60_00", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite ABS @base.json b/resources/profiles/BBL/filament/PolyLite ABS @base.json index fcbc279dea..e722c94f04 100644 --- a/resources/profiles/BBL/filament/PolyLite ABS @base.json +++ b/resources/profiles/BBL/filament/PolyLite ABS @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFB60", "name": "PolyLite ABS @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_abs", + "from": "system", + "filament_id": "GFB60", + "instantiation": "false", "filament_cost": [ "26.9" ], diff --git a/resources/profiles/BBL/filament/PolyLite ASA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite ASA @BBL P1P 0.2 nozzle.json index 714a020540..a40ce53727 100644 --- a/resources/profiles/BBL/filament/PolyLite ASA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyLite ASA @BBL P1P 0.2 nozzle.json @@ -1,15 +1,14 @@ { "type": "filament", - "setting_id": "GFSB61_05", "name": "PolyLite ASA @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "PolyLite ASA @BBL P1P", + "from": "system", + "setting_id": "GFSB61_05", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite ASA @BBL P1P.json b/resources/profiles/BBL/filament/PolyLite ASA @BBL P1P.json index e551f7b60a..2b00174b2f 100644 --- a/resources/profiles/BBL/filament/PolyLite ASA @BBL P1P.json +++ b/resources/profiles/BBL/filament/PolyLite ASA @BBL P1P.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB61_04", "name": "PolyLite ASA @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "PolyLite ASA @base", + "from": "system", + "setting_id": "GFSB61_04", + "instantiation": "true", "hot_plate_temp": [ "100" ], @@ -21,6 +21,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite ASA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite ASA @BBL X1C 0.2 nozzle.json index 10ef3d7845..16bc0ad8e7 100644 --- a/resources/profiles/BBL/filament/PolyLite ASA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyLite ASA @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB61_01", "name": "PolyLite ASA @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "PolyLite ASA @BBL X1C", + "from": "system", + "setting_id": "GFSB61_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "2" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 0.2 nozzle", "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite ASA @BBL X1C.json b/resources/profiles/BBL/filament/PolyLite ASA @BBL X1C.json index 84a6d9a99d..3380230fd9 100644 --- a/resources/profiles/BBL/filament/PolyLite ASA @BBL X1C.json +++ b/resources/profiles/BBL/filament/PolyLite ASA @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSB61_00", "name": "PolyLite ASA @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "PolyLite ASA @base", + "from": "system", + "setting_id": "GFSB61_00", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite ASA @base.json b/resources/profiles/BBL/filament/PolyLite ASA @base.json index a01b2a5f21..169e38c125 100644 --- a/resources/profiles/BBL/filament/PolyLite ASA @base.json +++ b/resources/profiles/BBL/filament/PolyLite ASA @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFB61", "name": "PolyLite ASA @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_asa", + "from": "system", + "filament_id": "GFB61", + "instantiation": "false", "filament_cost": [ "23.6" ], diff --git a/resources/profiles/BBL/filament/PolyLite PETG @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite PETG @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..a7cc88d94e --- /dev/null +++ b/resources/profiles/BBL/filament/PolyLite PETG @BBL A1M 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "PolyLite PETG @BBL A1M 0.2 nozzle", + "inherits": "PolyLite PETG @BBL A1M", + "from": "system", + "setting_id": "GFSG60_05", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite PETG @BBL A1M.json b/resources/profiles/BBL/filament/PolyLite PETG @BBL A1M.json new file mode 100644 index 0000000000..81ade454bf --- /dev/null +++ b/resources/profiles/BBL/filament/PolyLite PETG @BBL A1M.json @@ -0,0 +1,19 @@ +{ + "type": "filament", + "name": "PolyLite PETG @BBL A1M", + "inherits": "PolyLite PETG @base", + "from": "system", + "setting_id": "GFSG60_04", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "8" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite PETG @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite PETG @BBL P1P 0.2 nozzle.json index 3a25bac8b6..a8a418a64e 100644 --- a/resources/profiles/BBL/filament/PolyLite PETG @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyLite PETG @BBL P1P 0.2 nozzle.json @@ -1,15 +1,14 @@ { "type": "filament", - "setting_id": "GFSG60_03", "name": "PolyLite PETG @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "PolyLite PETG @BBL P1P", + "from": "system", + "setting_id": "GFSG60_03", + "instantiation": "true", "filament_max_volumetric_speed": [ "1" ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite PETG @BBL P1P.json b/resources/profiles/BBL/filament/PolyLite PETG @BBL P1P.json index c0b0bc7a42..9d3d627736 100644 --- a/resources/profiles/BBL/filament/PolyLite PETG @BBL P1P.json +++ b/resources/profiles/BBL/filament/PolyLite PETG @BBL P1P.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSG60_02", "name": "PolyLite PETG @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "PolyLite PETG @base", + "from": "system", + "setting_id": "GFSG60_02", + "instantiation": "true", "filament_max_volumetric_speed": [ "11" ], @@ -27,6 +27,5 @@ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite PETG @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite PETG @BBL X1C 0.2 nozzle.json index 534b4484b5..9a58b91bfb 100644 --- a/resources/profiles/BBL/filament/PolyLite PETG @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyLite PETG @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSG60_01", "name": "PolyLite PETG @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "PolyLite PETG @BBL X1C", + "from": "system", + "setting_id": "GFSG60_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "1" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite PETG @BBL X1C.json b/resources/profiles/BBL/filament/PolyLite PETG @BBL X1C.json index 54efcbeaa5..ea9688b83e 100644 --- a/resources/profiles/BBL/filament/PolyLite PETG @BBL X1C.json +++ b/resources/profiles/BBL/filament/PolyLite PETG @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSG60_00", "name": "PolyLite PETG @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "PolyLite PETG @base", + "from": "system", + "setting_id": "GFSG60_00", + "instantiation": "true", "filament_max_volumetric_speed": [ "11" ], @@ -21,6 +21,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite PETG @base.json b/resources/profiles/BBL/filament/PolyLite PETG @base.json index 22964406d3..60c9451a57 100644 --- a/resources/profiles/BBL/filament/PolyLite PETG @base.json +++ b/resources/profiles/BBL/filament/PolyLite PETG @base.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFG60", "name": "PolyLite PETG @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "GFG60", + "instantiation": "false", "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/PolyLite PLA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite PLA @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..ff991970c2 --- /dev/null +++ b/resources/profiles/BBL/filament/PolyLite PLA @BBL A1M 0.2 nozzle.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "PolyLite PLA @BBL A1M 0.2 nozzle", + "inherits": "PolyLite PLA @base", + "from": "system", + "setting_id": "GFSL00_01", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "1" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite PLA @BBL A1M.json b/resources/profiles/BBL/filament/PolyLite PLA @BBL A1M.json new file mode 100644 index 0000000000..a07bb0110d --- /dev/null +++ b/resources/profiles/BBL/filament/PolyLite PLA @BBL A1M.json @@ -0,0 +1,40 @@ +{ + "type": "filament", + "name": "PolyLite PLA @BBL A1M", + "inherits": "PolyLite PLA @base", + "from": "system", + "setting_id": "GFSL00_00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite PLA @BBL X1.json b/resources/profiles/BBL/filament/PolyLite PLA @BBL X1.json index fccd7d6503..4ed5821921 100644 --- a/resources/profiles/BBL/filament/PolyLite PLA @BBL X1.json +++ b/resources/profiles/BBL/filament/PolyLite PLA @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL23", "name": "PolyLite PLA @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "PolyLite PLA @base", + "from": "system", + "setting_id": "GFSL23", + "instantiation": "true", "filament_max_volumetric_speed": [ "15" ], @@ -15,6 +15,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C 0.2 nozzle.json index fab179b662..353f029cbc 100644 --- a/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL25", "name": "PolyLite PLA @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "PolyLite PLA @BBL X1C", + "from": "system", + "setting_id": "GFSL25", + "instantiation": "true", "filament_max_volumetric_speed": [ "1" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C.json b/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C.json index 71f2d583ac..e214da24df 100644 --- a/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C.json +++ b/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL19", "name": "PolyLite PLA @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "PolyLite PLA @base", + "from": "system", + "setting_id": "GFSL19", + "instantiation": "true", "filament_max_volumetric_speed": [ "15" ], @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyLite PLA @base.json b/resources/profiles/BBL/filament/PolyLite PLA @base.json index f8914467ea..1e7f4d16b7 100644 --- a/resources/profiles/BBL/filament/PolyLite PLA @base.json +++ b/resources/profiles/BBL/filament/PolyLite PLA @base.json @@ -1,17 +1,17 @@ { "type": "filament", - "filament_id": "GFL00", "name": "PolyLite PLA @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Polymaker" - ], + "from": "system", + "filament_id": "GFL00", + "instantiation": "false", "filament_cost": [ "25.4" ], "filament_flow_ratio": [ "0.95" + ], + "filament_vendor": [ + "Polymaker" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..73d3ce1a89 --- /dev/null +++ b/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1M 0.2 nozzle.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "PolyTerra PLA @BBL A1M 0.2 nozzle", + "inherits": "PolyTerra PLA @base", + "from": "system", + "setting_id": "GFSL01_01", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "1" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1M.json b/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1M.json new file mode 100644 index 0000000000..288e5e938b --- /dev/null +++ b/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1M.json @@ -0,0 +1,40 @@ +{ + "type": "filament", + "name": "PolyTerra PLA @BBL A1M", + "inherits": "PolyTerra PLA @base", + "from": "system", + "setting_id": "GFSL01_00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1.json b/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1.json index 5e63867c42..d3fd2251c3 100644 --- a/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1.json +++ b/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL22", "name": "PolyTerra PLA @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "PolyTerra PLA @base", + "from": "system", + "setting_id": "GFSL22", + "instantiation": "true", "filament_max_volumetric_speed": [ "22" ], @@ -15,6 +15,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json index 9b76837aed..123f71d69e 100644 --- a/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL24", "name": "PolyTerra PLA @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "PolyTerra PLA @BBL X1C", + "from": "system", + "setting_id": "GFSL24", + "instantiation": "true", "filament_max_volumetric_speed": [ "1" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C.json b/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C.json index 529dd61a76..2925ff8bbf 100644 --- a/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C.json +++ b/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL18", "name": "PolyTerra PLA @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "PolyTerra PLA @base", + "from": "system", + "setting_id": "GFSL18", + "instantiation": "true", "filament_max_volumetric_speed": [ "22" ], @@ -15,6 +15,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/PolyTerra PLA @base.json b/resources/profiles/BBL/filament/PolyTerra PLA @base.json index 16a29aa51d..2deb2d9141 100644 --- a/resources/profiles/BBL/filament/PolyTerra PLA @base.json +++ b/resources/profiles/BBL/filament/PolyTerra PLA @base.json @@ -1,13 +1,10 @@ { "type": "filament", - "filament_id": "GFL01", "name": "PolyTerra PLA @base", - "from": "system", - "instantiation": "false", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Polymaker" - ], + "from": "system", + "filament_id": "GFL01", + "instantiation": "false", "filament_cost": [ "25.4" ], @@ -16,5 +13,8 @@ ], "filament_flow_ratio": [ "0.98" + ], + "filament_vendor": [ + "Polymaker" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..96573934d6 --- /dev/null +++ b/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "eSUN PLA+ @BBL A1M 0.2 nozzle", + "inherits": "eSUN PLA+ @base", + "from": "system", + "setting_id": "GFSL03_04", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "1" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M.json b/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M.json new file mode 100644 index 0000000000..92a72de8f0 --- /dev/null +++ b/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "eSUN PLA+ @BBL A1M", + "inherits": "eSUN PLA+ @base", + "from": "system", + "setting_id": "GFSL03_03", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1.json b/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1.json index d29a748ac4..fca65e947d 100644 --- a/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1.json +++ b/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL03_02", "name": "eSUN PLA+ @BBL X1", - "from": "system", - "instantiation": "true", "inherits": "eSUN PLA+ @base", + "from": "system", + "setting_id": "GFSL03_02", + "instantiation": "true", "slow_down_layer_time": [ "10" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json index 4980248260..25394b7ff7 100644 --- a/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL03_01", "name": "eSUN PLA+ @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "eSUN PLA+ @base", + "from": "system", + "setting_id": "GFSL03_01", + "instantiation": "true", "filament_max_volumetric_speed": [ "1" ], @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C.json b/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C.json index 0b7291e5a1..686d1dd3cb 100644 --- a/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C.json +++ b/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "filament", - "setting_id": "GFSL03_00", "name": "eSUN PLA+ @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "eSUN PLA+ @base", + "from": "system", + "setting_id": "GFSL03_00", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", @@ -12,6 +12,5 @@ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @base.json b/resources/profiles/BBL/filament/eSUN PLA+ @base.json index 160bd7fb4c..6219d24562 100644 --- a/resources/profiles/BBL/filament/eSUN PLA+ @base.json +++ b/resources/profiles/BBL/filament/eSUN PLA+ @base.json @@ -1,29 +1,29 @@ { - "type": "filament", - "filament_id": "GFL03", - "name": "eSUN PLA+ @base", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_pla", - "filament_vendor": [ - "eSUN" - ], - "filament_cost": [ - "22.99" - ], - "filament_density": [ - "1.25" - ], - "filament_flow_ratio": [ - "0.98" - ], - "slow_down_layer_time": [ - "6" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}" - ] + "type": "filament", + "name": "eSUN PLA+ @base", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "GFL03", + "instantiation": "false", + "filament_cost": [ + "22.99" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_vendor": [ + "eSUN" + ], + "slow_down_layer_time": [ + "6" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_abs.json b/resources/profiles/BBL/filament/fdm_filament_abs.json index 16497a718d..461dd5e610 100644 --- a/resources/profiles/BBL/filament/fdm_filament_abs.json +++ b/resources/profiles/BBL/filament/fdm_filament_abs.json @@ -1,88 +1,82 @@ { "type": "filament", "name": "fdm_filament_abs", + "inherits": "fdm_filament_common", "from": "system", "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "0" - ], - "eng_plate_temp" : [ - "90" - ], - "hot_plate_temp" : [ - "90" - ], - "textured_plate_temp" : [ - "90" - ], - "cool_plate_temp_initial_layer" : [ - "0" - ], - "eng_plate_temp_initial_layer" : [ - "90" - ], - "hot_plate_temp_initial_layer" : [ - "90" - ], - "textured_plate_temp_initial_layer" : [ - "90" - ], - "slow_down_for_layer_cooling": [ + "activate_air_filtration": [ "1" ], - "close_fan_the_first_x_layers": [ - "3" + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "90" + ], + "eng_plate_temp_initial_layer": [ + "90" ], "fan_cooling_layer_time": [ "30" ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ABS" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], "fan_max_speed": [ "80" ], "fan_min_speed": [ "10" ], - "overhang_fan_threshold": [ - "25%" + "filament_cost": [ + "20" ], - "overhang_fan_speed": [ - "80" + "filament_density": [ + "1.04" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ABS" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" ], "nozzle_temperature": [ "270" ], - "temperature_vitrification": [ - "100" - ], - "nozzle_temperature_range_low": [ - "240" + "nozzle_temperature_initial_layer": [ + "260" ], "nozzle_temperature_range_high": [ "280" ], - "slow_down_min_speed": [ - "20" + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" ], "slow_down_layer_time": [ "3" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" ] -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_asa.json b/resources/profiles/BBL/filament/fdm_filament_asa.json index 1828f96883..ac7a9294c1 100644 --- a/resources/profiles/BBL/filament/fdm_filament_asa.json +++ b/resources/profiles/BBL/filament/fdm_filament_asa.json @@ -1,79 +1,82 @@ { "type": "filament", "name": "fdm_filament_asa", + "inherits": "fdm_filament_common", "from": "system", "instantiation": "false", - "inherits": "fdm_filament_common", + "activate_air_filtration": [ + "1" + ], "cool_plate_temp": [ "0" ], + "cool_plate_temp_initial_layer": [ + "0" + ], "eng_plate_temp": [ "90" ], - "hot_plate_temp": [ - "90" - ], - "textured_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], "eng_plate_temp_initial_layer": [ "90" ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], "fan_cooling_layer_time": [ "35" ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ASA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], "fan_max_speed": [ "80" ], "fan_min_speed": [ "10" ], - "overhang_fan_threshold": [ - "25%" + "filament_cost": [ + "20" ], - "overhang_fan_speed": [ - "80" + "filament_density": [ + "1.04" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ASA" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" ], "nozzle_temperature": [ "260" ], - "nozzle_temperature_range_low": [ - "240" + "nozzle_temperature_initial_layer": [ + "260" ], "nozzle_temperature_range_high": [ "280" ], - "slow_down_min_speed": [ - "20" + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" ], "slow_down_layer_time": [ "3" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_common.json b/resources/profiles/BBL/filament/fdm_filament_common.json index 8ea752f4d6..6f1291c6ec 100644 --- a/resources/profiles/BBL/filament/fdm_filament_common.json +++ b/resources/profiles/BBL/filament/fdm_filament_common.json @@ -3,60 +3,42 @@ "name": "fdm_filament_common", "from": "system", "instantiation": "false", - "filament_is_support": [ + "activate_air_filtration": [ "0" ], - "required_nozzle_HRC": [ + "chamber_temperatures": [ + "0" + ], + "close_fan_the_first_x_layers": [ "3" ], + "complete_print_exhaust_fan_speed": [ + "70" + ], "cool_plate_temp": [ "60" ], - "eng_plate_temp": [ - "60" - ], - "hot_plate_temp": [ - "60" - ], - "textured_plate_temp": [ - "60" - ], "cool_plate_temp_initial_layer": [ "60" ], + "during_print_exhaust_fan_speed": [ + "70" + ], + "eng_plate_temp": [ + "60" + ], "eng_plate_temp_initial_layer": [ "60" ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "overhang_fan_threshold": [ - "95%" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "filament_end_gcode": [ - "; filament end gcode \nM106 P3 S0\n" - ], - "filament_flow_ratio": [ - "1" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], "fan_cooling_layer_time": [ "60" ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "35" + ], "filament_cost": [ "0" ], @@ -69,16 +51,22 @@ "filament_diameter": [ "1.75" ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], "filament_max_volumetric_speed": [ "0" ], "filament_minimal_purge_on_wipe_tower": [ "15" ], - "filament_retraction_minimum_travel": [ + "filament_retract_before_wipe": [ "nil" ], - "filament_retract_before_wipe": [ + "filament_retract_restart_extra": [ "nil" ], "filament_retract_when_changing_layer": [ @@ -87,13 +75,7 @@ "filament_retraction_length": [ "nil" ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "filament_retract_restart_extra": [ + "filament_retraction_minimum_travel": [ "nil" ], "filament_retraction_speed": [ @@ -117,32 +99,62 @@ "filament_wipe_distance": [ "nil" ], - "nozzle_temperature_initial_layer": [ - "200" + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" ], "full_fan_speed_layer": [ "0" ], - "fan_max_speed": [ - "100" + "hot_plate_temp": [ + "60" ], - "fan_min_speed": [ - "35" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_start_gcode": [ - "; Filament gcode\n" + "hot_plate_temp_initial_layer": [ + "60" ], "nozzle_temperature": [ "200" ], + "nozzle_temperature_initial_layer": [ + "200" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "95%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "3" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], "temperature_vitrification": [ "100" ], - "compatible_printers":[] + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [], + "filament_start_gcode": [ + "; Filament gcode\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \nM106 P3 S0\n" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_hips.json b/resources/profiles/BBL/filament/fdm_filament_hips.json index be50ef8fce..4d1b09d37a 100644 --- a/resources/profiles/BBL/filament/fdm_filament_hips.json +++ b/resources/profiles/BBL/filament/fdm_filament_hips.json @@ -1,85 +1,79 @@ { - "type": "filament", - "name": "fdm_filament_hips", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp": [ - "0" - ], - "eng_plate_temp": [ - "90" - ], - "hot_plate_temp": [ - "90" - ], - "textured_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "fan_cooling_layer_time": [ - "10" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_type": [ - "HIPS" - ], - "filament_density": [ - "1.06" - ], - "filament_cost": [ - "22.99" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "0" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "20" - ], - "slow_down_layer_time": [ - "6" - ], - "temperature_vitrification": [ - "100" - ], - "required_nozzle_HRC": [ - "3" - ], - "additional_cooling_fan_speed":[ - "0" - ] + "type": "filament", + "name": "fdm_filament_hips", + "inherits": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "eng_plate_temp": [ + "90" + ], + "hot_plate_temp": [ + "90" + ], + "textured_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "fan_cooling_layer_time": [ + "10" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_type": [ + "HIPS" + ], + "filament_density": [ + "1.06" + ], + "filament_cost": [ + "22.99" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "20" + ], + "slow_down_layer_time": [ + "6" + ], + "additional_cooling_fan_speed": [ + "0" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_pa.json b/resources/profiles/BBL/filament/fdm_filament_pa.json index 89d268af2e..1cd78ec77f 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pa.json +++ b/resources/profiles/BBL/filament/fdm_filament_pa.json @@ -1,79 +1,82 @@ { "type": "filament", "name": "fdm_filament_pa", + "inherits": "fdm_filament_common", "from": "system", "instantiation": "false", - "inherits": "fdm_filament_common", - "required_nozzle_HRC": [ - "40" + "activate_air_filtration": [ + "1" ], "cool_plate_temp": [ "0" ], + "cool_plate_temp_initial_layer": [ + "0" + ], "eng_plate_temp": [ "100" ], - "hot_plate_temp": [ - "100" - ], - "textured_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], "eng_plate_temp_initial_layer": [ "100" ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], "fan_cooling_layer_time": [ "4" ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_type": [ - "PA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], "fan_max_speed": [ "60" ], "fan_min_speed": [ "0" ], - "overhang_fan_speed": [ - "30" + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.04" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_type": [ + "PA" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" ], "nozzle_temperature": [ "290" ], - "temperature_vitrification": [ - "108" - ], - "nozzle_temperature_range_low": [ - "260" + "nozzle_temperature_initial_layer": [ + "290" ], "nozzle_temperature_range_high": [ "300" ], - "slow_down_min_speed": [ - "20" + "nozzle_temperature_range_low": [ + "260" + ], + "overhang_fan_speed": [ + "30" + ], + "required_nozzle_HRC": [ + "40" ], "slow_down_layer_time": [ "2" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "108" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_pc.json b/resources/profiles/BBL/filament/fdm_filament_pc.json index 477812e6d5..5729114297 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pc.json +++ b/resources/profiles/BBL/filament/fdm_filament_pc.json @@ -1,9 +1,9 @@ { "type": "filament", "name": "fdm_filament_pc", + "inherits": "fdm_filament_common", "from": "system", "instantiation": "false", - "inherits": "fdm_filament_common", "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pet.json b/resources/profiles/BBL/filament/fdm_filament_pet.json index e71333f631..4a5f6085ca 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pet.json +++ b/resources/profiles/BBL/filament/fdm_filament_pet.json @@ -1,64 +1,64 @@ { "type": "filament", "name": "fdm_filament_pet", + "inherits": "fdm_filament_common", "from": "system", "instantiation": "false", - "inherits": "fdm_filament_common", "eng_plate_temp": [ "0" ], - "hot_plate_temp": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], "eng_plate_temp_initial_layer": [ "0" ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], "fan_cooling_layer_time": [ "20" ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.27" + ], "filament_max_volumetric_speed": [ "25" ], "filament_type": [ "PETG" ], - "filament_density": [ - "1.27" + "hot_plate_temp": [ + "80" ], - "filament_cost": [ - "30" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_min_speed": [ - "20" + "hot_plate_temp_initial_layer": [ + "80" ], "nozzle_temperature": [ "255" ], - "temperature_vitrification": [ - "70" - ], - "nozzle_temperature_range_low": [ - "220" + "nozzle_temperature_initial_layer": [ + "255" ], "nozzle_temperature_range_high": [ "260" ], + "nozzle_temperature_range_low": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S255\n{endif};Prevent PLA from jamming" + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S255\n{endif};Prevent PLA from jamming\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_pla.json b/resources/profiles/BBL/filament/fdm_filament_pla.json index b90eebee88..8228827102 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pla.json +++ b/resources/profiles/BBL/filament/fdm_filament_pla.json @@ -1,46 +1,43 @@ { "type": "filament", "name": "fdm_filament_pla", + "inherits": "fdm_filament_common", "from": "system", "instantiation": "false", - "inherits": "fdm_filament_common", "fan_cooling_layer_time": [ "100" ], "filament_max_volumetric_speed": [ "12" ], - "filament_type": [ - "PLA" - ], "filament_density": [ "1.24" ], "filament_cost": [ "20" ], - "cool_plate_temp" : [ + "cool_plate_temp": [ "35" ], - "eng_plate_temp" : [ + "eng_plate_temp": [ "0" ], - "hot_plate_temp" : [ + "hot_plate_temp": [ "55" ], - "textured_plate_temp" : [ + "textured_plate_temp": [ "55" ], - "cool_plate_temp_initial_layer" : [ + "cool_plate_temp_initial_layer": [ "35" ], - "eng_plate_temp_initial_layer" : [ + "eng_plate_temp_initial_layer": [ "0" ], - "hot_plate_temp_initial_layer" : [ + "hot_plate_temp_initial_layer": [ "55" ], - "textured_plate_temp_initial_layer" : [ + "textured_plate_temp_initial_layer": [ "55" ], "nozzle_temperature_initial_layer": [ @@ -49,18 +46,9 @@ "reduce_fan_stop_start_freq": [ "1" ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], "fan_min_speed": [ "100" ], - "overhang_fan_speed": [ - "100" - ], "overhang_fan_threshold": [ "50%" ], @@ -89,6 +77,6 @@ "70" ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_ppa.json b/resources/profiles/BBL/filament/fdm_filament_ppa.json new file mode 100644 index 0000000000..23b082b05c --- /dev/null +++ b/resources/profiles/BBL/filament/fdm_filament_ppa.json @@ -0,0 +1,91 @@ +{ + "type": "filament", + "name": "fdm_filament_ppa", + "inherits": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "activate_air_filtration": [ + "1" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "100" + ], + "eng_plate_temp_initial_layer": [ + "100" + ], + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.17" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_type": [ + "PPA-CF" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "required_nozzle_HRC": [ + "40" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "210" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_pps.json b/resources/profiles/BBL/filament/fdm_filament_pps.json new file mode 100644 index 0000000000..a3f104b6f3 --- /dev/null +++ b/resources/profiles/BBL/filament/fdm_filament_pps.json @@ -0,0 +1,79 @@ +{ + "type": "filament", + "name": "fdm_filament_pps", + "inherits": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "chamber_temperatures": [ + "60" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "110" + ], + "eng_plate_temp_initial_layer": [ + "110" + ], + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "0" + ], + "filament_density": [ + "1.36" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "4" + ], + "filament_type": [ + "PPS" + ], + "hot_plate_temp": [ + "110" + ], + "hot_plate_temp_initial_layer": [ + "110" + ], + "nozzle_temperature": [ + "320" + ], + "nozzle_temperature_initial_layer": [ + "320" + ], + "nozzle_temperature_range_high": [ + "340" + ], + "nozzle_temperature_range_low": [ + "300" + ], + "overhang_fan_speed": [ + "30" + ], + "overhang_fan_threshold": [ + "0%" + ], + "slow_down_layer_time": [ + "2" + ], + "temperature_vitrification": [ + "125" + ], + "textured_plate_temp": [ + "110" + ], + "textured_plate_temp_initial_layer": [ + "110" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_pva.json b/resources/profiles/BBL/filament/fdm_filament_pva.json index 4253f36169..870a18368f 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pva.json +++ b/resources/profiles/BBL/filament/fdm_filament_pva.json @@ -1,91 +1,91 @@ { "type": "filament", "name": "fdm_filament_pva", + "inherits": "fdm_filament_common", "from": "system", "instantiation": "false", - "inherits": "fdm_filament_common", + "additional_cooling_fan_speed": [ + "70" + ], + "close_fan_the_first_x_layers": [ + "1" + ], "cool_plate_temp": [ "45" ], + "cool_plate_temp_initial_layer": [ + "45" + ], "eng_plate_temp": [ "0" ], - "hot_plate_temp": [ - "55" - ], - "textured_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], "eng_plate_temp_initial_layer": [ "0" ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], "fan_cooling_layer_time": [ "100" ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.24" + ], + "filament_is_support": [ + "1" + ], "filament_max_volumetric_speed": [ "15" ], "filament_soluble": [ "1" ], - "filament_is_support": [ - "1" - ], "filament_type": [ "PVA" ], - "filament_density": [ - "1.24" + "hot_plate_temp": [ + "55" ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" + "hot_plate_temp_initial_layer": [ + "55" ], "nozzle_temperature": [ "220" ], - "temperature_vitrification": [ - "55" - ], - "nozzle_temperature_range_low": [ - "190" + "nozzle_temperature_initial_layer": [ + "220" ], "nozzle_temperature_range_high": [ "240" ], - "slow_down_min_speed": [ - "50" + "nozzle_temperature_range_low": [ + "190" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" ], "slow_down_layer_time": [ "4" ], - "additional_cooling_fan_speed": [ - "70" + "slow_down_min_speed": [ + "50" + ], + "temperature_vitrification": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_tpu.json b/resources/profiles/BBL/filament/fdm_filament_tpu.json index 5c490e0af8..126c101399 100644 --- a/resources/profiles/BBL/filament/fdm_filament_tpu.json +++ b/resources/profiles/BBL/filament/fdm_filament_tpu.json @@ -1,79 +1,79 @@ { "type": "filament", "name": "fdm_filament_tpu", + "inherits": "fdm_filament_common", "from": "system", "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp": [ - "30" - ], - "eng_plate_temp": [ - "30" - ], - "hot_plate_temp": [ - "35" - ], - "textured_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "30" - ], - "eng_plate_temp_initial_layer": [ - "30" - ], - "hot_plate_temp_initial_layer": [ - "35" - ], - "textured_plate_temp_initial_layer": [ - "35" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_type": [ - "TPU" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "filament_retraction_length": [ - "0.4" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_min_speed": [ - "100" - ], "additional_cooling_fan_speed": [ "70" ], "close_fan_the_first_x_layers": [ "1" ], + "cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "30" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.24" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_retraction_length": [ + "0.4" + ], + "filament_type": [ + "TPU" + ], + "hot_plate_temp": [ + "35" + ], + "hot_plate_temp_initial_layer": [ + "35" + ], "nozzle_temperature": [ "240" ], - "temperature_vitrification": [ - "35" - ], - "nozzle_temperature_range_low": [ - "200" + "nozzle_temperature_initial_layer": [ + "240" ], "nozzle_temperature_range_high": [ "250" ], + "nozzle_temperature_range_low": [ + "200" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "temperature_vitrification": [ + "35" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}" + "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.2 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.2 nozzle.json new file mode 100644 index 0000000000..d8cea99515 --- /dev/null +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.2 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "name": "Bambu Lab A1 mini 0.2 nozzle", + "inherits": "Bambu Lab A1 mini 0.4 nozzle", + "from": "system", + "setting_id": "GM021", + "instantiation": "true", + "nozzle_diameter": [ + "0.2" + ], + "printer_model": "Bambu Lab A1 mini", + "printer_variant": "0.2", + "default_filament_profile": [ + "Bambu PLA Basic @BBL A1M 0.2 nozzle" + ], + "default_print_profile": "0.10mm Standard @BBL A1M 0.2 nozzle", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.04" + ], + "retraction_length": [ + "0.4" + ], + "upward_compatible_machine": [ + "Bambu Lab P1S 0.2 nozzle", + "Bambu Lab P1P 0.2 nozzle", + "Bambu Lab X1 0.2 nozzle", + "Bambu Lab X1 Carbon 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json new file mode 100644 index 0000000000..ea20be58cb --- /dev/null +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json @@ -0,0 +1,66 @@ +{ + "type": "machine", + "name": "Bambu Lab A1 mini 0.4 nozzle", + "inherits": "fdm_bbl_3dp_001_common", + "from": "system", + "setting_id": "GM020", + "instantiation": "true", + "nozzle_diameter": [ + "0.4" + ], + "printer_model": "Bambu Lab A1 mini", + "printer_variant": "0.4", + "auxiliary_fan": "1", + "bed_exclude_area": [], + "best_object_pos": "0.7x0.5", + "default_filament_profile": [ + "Bambu PLA Basic @BBL A1M" + ], + "default_print_profile": "0.20mm Standard @BBL A1M", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_max_radius": "73", + "extruder_clearance_radius": "73", + "machine_load_filament_time": "28", + "machine_max_acceleration_z": [ + "1500", + "1500" + ], + "machine_max_jerk_e": [ + "3", + "3" + ], + "machine_max_jerk_z": [ + "5", + "5" + ], + "machine_max_speed_z": [ + "30", + "30" + ], + "machine_unload_filament_time": "34", + "nozzle_type": "stainless_steel", + "nozzle_volume": "32", + "printable_area": [ + "0x0", + "180x0", + "180x180", + "0x180" + ], + "printable_height": "180", + "retract_lift_below":[ + "179" + ], + "printer_structure": "i3", + "scan_first_layer": "0", + "upward_compatible_machine": [ + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 Carbon 0.4 nozzle" + ], + "machine_start_gcode": ";===== machine: A1 mini =========================\n;===== date: 20230912 =====================\n\n;===== start to heat heatbead&hotend==========\nM1002 gcode_claim_action : 2\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG392 S0 ;turn off clog detect\n;=====start printer sound ===================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B0 L100 C37 D10 M100 E37 F10 N100\nM1006 A0 B0 L100 C41 D10 M100 E41 F10 N100\nM1006 A0 B0 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A43 B10 L100 C39 D10 M100 E46 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C39 D10 M100 E43 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C41 D10 M100 E41 F10 N100\nM1006 A0 B0 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B0 L100 C49 D10 M100 E49 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B10 L100 C39 D10 M100 E48 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C39 D10 M100 E44 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A43 B10 L100 C39 D10 M100 E46 F10 N100\nM1006 W\nM18\n;=====avoid end stop =================\nG91\nG380 S2 Z30 F1200\nG380 S2 Z-20 F1200\nG1 Z5 F1200\nG90\n\n;===== reset machine status =================\nM290 X39 Y39 Z8\nM204 S6000\n\nM630 S0 P0\nG91\nM17 Z0.3 ; lower the z-motor current\n\nG90\nM17 X0.7 Y0.9 Z0.5 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\n;M221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\n;====== cog noise reduction=================\nM982.2 S1 ; turn on cog noise reduction\n\n;===== prepare print temperature and material ==========\nM1002 gcode_claim_action : 1\nM400\nM18\nM109 S100\nM104 S140\nM400\nM17\nM400\nG28 X\n\nM221 X0 Y0 Z0 ;turn off soft endstop\n\nM975 S1 ; turn on\n\nG1 X0.0 F30000\nG1 X-13.5 F3000\n\nM620 M ;enable remap\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n G392 S1 ;turn on clog detect\n M1002 gcode_claim_action : 4\n M400\n M1002 set_filament_type:UNKNOWN\n M109 S[nozzle_temperature_initial_layer]\n M104 S250\n M400\n T[initial_no_support_extruder]\n G1 X-13.5 F3000\n M400\n M620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n M109 S250 ;set nozzle to common flush temp\n M106 P1 S0\n G92 E0\n G1 E50 F200\n M400\n M1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n M104 S{nozzle_temperature_range_high[initial_no_support_extruder]}\n G92 E0\n G1 E50 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n M400\n M106 P1 S178\n G92 E0\n G1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-40}\n G92 E0\n G1 E-0.5 F300\n\n G1 X0 F30000\n G1 X-13.5 F3000\n G1 X0 F30000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n G1 X0 F30000\n G1 X-13.5 F3000\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-40}\n G392 S0 ;turn off clog detect\nM621 S[initial_no_support_extruder]A\n\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== mech mode fast check============================\nM1002 gcode_claim_action : 3\nG0 X50 Y175 F20000 ; find a soft place to home\nM104 S0\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-80}\n\nG1 X90 Y-1 Z5 F30000\nM400 P200\nM970.3 Q1 A7 K0 O2\nM974 Q1 S2 P0\n\nG1 X90 Y0 Z5 F30000\nM400 P200\nM970 Q0 A5 B55 C85 H15 K0 M20 O2\n;M970.3 Q0 A7 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X-1 Y10\nG28 X ; re-home XY\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\n;M106 S255\nG29.2 S0 ; turn off ABL\nG0 X50 Y175 F20000 ; find a soft place to home\nG28 Z P0 T300; home z with low precision, permit 300deg temperature\n\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\n\nG0 X85 Y185 F10000 ;move to exposed steel surface and stop the nozzle\nG0 Z-1.01 F10000\nG91\n\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nG90\nG1 Z5 F30000\nG1 X32 Y185 F30000.1 ;Brush material\nG1 Z0.6 F30000.1\nG91\nG1 X-30 F30000\nG1 Y-2\nG1 X27\nG1 Y1.5\nG1 X-28\nG1 Y-2\nG1 X30\nG1 Y1.5\nG1 X-30\n\nG90\nM83\n\nG1 Z10\nG1 X85 Y185\nG1 Z-1.01\n\n\nM221 R; pop softend status\n\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== wait heatbed ====================\nM1002 gcode_claim_action : 2\nM104 S0\nM190 S[bed_temperature_initial_layer_single];set bed temp\nM109 S140\n\nG1 Z5 F3000\nG29.2 S1\nG1 X10 Y10 F20000\n\n;===== bed leveling ==================================\n;M1002 set_flag g29_before_print_flag=1\nM1002 judge_flag g29_before_print_flag\nM622 J1\n M1002 gcode_claim_action : 1\n G29 A\n M400\n M500 ; save cali data\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\n\nG1 X-13.5 Y0 Z10 F10000\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{nozzle_temperature[initial_extruder]}\nM400\n\nM412 S1 ; ===turn on filament runout detection===\nM400 P10\n\nG392 S1 ;turn on clog detect\n\nM620.3 W1; === turn on filament tangle detection===\nM400 S2\n\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n;M1002 set_flag extrude_cali_flag=1\nM1002 judge_flag extrude_cali_flag\nM622 J1\n M1002 gcode_claim_action : 8\n \n M400\n M900 K0.0 L1000.0 M1.0\n G90\n M83\n G0 X45 Y-4 F30000\n G0 Z0.2 F18000 ;Move to start position\n G0 X65 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\n G0 X70 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X75 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X80 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X85 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X90 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X95 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X100 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X120 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X125 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X130 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n M400\n \n G1 X-13.5 Y0 Z10 F10000\n M400\n \n G1 E10 F{outer_wall_volumetric_speed/2.4*60}\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 ; cali dynamic extrusion compensation\n M106 P1 S178\n M400 S7\n G1 X0 F18000\n G1 X-13.5 F3000\n G1 X0 F18000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n G1 X-13.5 F3000\n M400\n M106 P1 S0\n\n M1002 judge_last_extrude_cali_success\n M622 J0\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 ; cali dynamic extrusion compensation\n M106 P1 S178\n M400 S7\n G1 X0 F18000\n G1 X-13.5 F3000\n G1 X0 F18000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n M400\n M106 P1 S0\n M623\nM623 ; end of \"draw extrinsic para cali paint\"\n\n;===== extrude cali test ===============================\nG90\nM83\nG0 X50 Y-2.7 F30000\nG0 Z0.2 F18000 ;Move to start position\nG0 X60 E4 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X65 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X70 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X75 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X80 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X85 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X90 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X95 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X100 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X120 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X125 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X130 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nM400\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\n\nM400 ; wait all motion done before implement the emprical L parameters\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.02} ; for Textured PEI Plate\n{endif}\n\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n\nM211 X0 Y0 Z0 ;turn off soft endstop\n", + "machine_end_gcode": ";===== date: 20230912 =====================\n;turn off nozzle clog detect\nG392 S0\n\n{if timelapse_type == 2}\nM991 S0 P-1 ;end timelapse immediately\n{endif}\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X0 F12000 ; move to safe pos \n{if timelapse_type == 1}\nM991 S0 P-1 ;end timelapse at safe pos\n{endif}\n\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\n;G1 X27 F15000 ; wipe\n\n; pull back filament to AMS\nM620 S255\nG1 X181 F12000\nT255\nG1 X0 F18000\nG1 X-13.0 F3000\nG1 X0 F18000 ; wipe\nM621 S255\n\nM104 S0 ; turn off hotend\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 180}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z180 F600\n G1 Z180\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X-13 Y180 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M100 E42 F20 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C46 D10 M100 E46 F10 N100\nM1006 A44 B20 L100 C39 D20 M100 E48 F20 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C39 D10 M100 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C39 D10 M100 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E48 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B20 L100 C41 D20 M100 E49 F20 N100\nM1006 A0 B20 L100 C0 D20 M100 E0 F20 N100\nM1006 A0 B20 L100 C37 D20 M100 E37 F20 N100\nM1006 W\n;=====printer finish sound=========\nM400 S1\nM18\n", + "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change\n", + "time_lapse_gcode": "{if !spiral_mode && print_sequence != \"by object\"}\n;===================== date: 20230922 =====================\n; timelapse gcode\n; don't support timelapse gcode in spiral_mode and by object sequence for I3 structure printer\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\nG92 E0\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 Z{max_layer_z + 0.4}\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-13.0 F3000 ; move to safe pos\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 X0 F18000\nM623\n\n{if layer_num == 2}\n M400\n G90\n M83\n M204 S5000\n G0 Z2 F4000\n G0 X-6 Y170 F20000\n M400 P200\n G39 S1\n G0 Z2 F4000\n G0 X90 Y90 F30000\n{endif}\n\n{endif}\n", + "change_filament_gcode": ";===== machine: A1 mini =========================\n;===== date: 20230913 =======================\nG392 S0\nM620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n\nG1 X180 F18000\n;{if toolchange_count == 2}\n; get travel path for change filament\n;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\n;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\n;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n;{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\nG1 Y90 F9000\n\n{if next_extruder < 255}\nM400\n\nG92 E0\n{if flush_length_1 > 1}\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S[nozzle_temperature_range_high]\nM106 P1 S60\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\nM400\nM1002 set_filament_type:{filament_type[next_extruder]}\n{endif}\n\n{if flush_length_1 > 45 && flush_length_2 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_2 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 45 && flush_length_3 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_3 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 45 && flush_length_4 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_4 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n\n; FLUSH_START\nM400\nM106 P1 S60\nM109 S[new_filament_temp]\nG1 E5 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nM400\nG1 Z{max_layer_z + 3.0} F3000\nM106 P1 S0\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\nG392 S1\n" +} \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.6 nozzle.json new file mode 100644 index 0000000000..3ef6460dc4 --- /dev/null +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.6 nozzle.json @@ -0,0 +1,33 @@ +{ + "type": "machine", + "name": "Bambu Lab A1 mini 0.6 nozzle", + "inherits": "Bambu Lab A1 mini 0.4 nozzle", + "from": "system", + "setting_id": "GM022", + "instantiation": "true", + "nozzle_diameter": [ + "0.6" + ], + "printer_model": "Bambu Lab A1 mini", + "printer_variant": "0.6", + "default_print_profile": "0.30mm Standard @BBL A1M 0.6 nozzle", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.12" + ], + "nozzle_type": "hardened_steel", + "retraction_length": [ + "1.4" + ], + "retraction_minimum_travel": [ + "3" + ], + "upward_compatible_machine": [ + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.8 nozzle.json new file mode 100644 index 0000000000..82fcdb8140 --- /dev/null +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.8 nozzle.json @@ -0,0 +1,33 @@ +{ + "type": "machine", + "name": "Bambu Lab A1 mini 0.8 nozzle", + "inherits": "Bambu Lab A1 mini 0.4 nozzle", + "from": "system", + "setting_id": "GM023", + "instantiation": "true", + "nozzle_diameter": [ + "0.8" + ], + "printer_model": "Bambu Lab A1 mini", + "printer_variant": "0.8", + "default_print_profile": "0.40mm Standard @BBL A1M 0.8 nozzle", + "max_layer_height": [ + "0.56" + ], + "min_layer_height": [ + "0.16" + ], + "nozzle_type": "hardened_steel", + "retract_length_toolchange": [ + "3" + ], + "retraction_length": [ + "3" + ], + "upward_compatible_machine": [ + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab P1P 0.8 nozzle", + "Bambu Lab X1 0.8 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini.json new file mode 100644 index 0000000000..c32ab2c90e --- /dev/null +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Bambu Lab A1 mini", + "nozzle_diameter": "0.4;0.2;0.6;0.8", + "model_id": "N1", + "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", + "machine_tech": "FFF", + "family": "BBL-3DP", + "bed_model": "bbl-3dp-A1M.stl", + "bed_texture": "bbl-3dp-logo.svg", + "default_materials": "Generic PLA @BBL A1M;Generic PLA Silk @BBL A1M;Bambu PLA Matte @BBL A1M;Bambu PLA Basic @BBL A1M;Bambu ABS @BBL P1P;Bambu PC @BBL P1P;Bambu Support W @BBL A1M;Bambu TPU 95A @BBL P1P;PolyTerra PLA @BBL A1M;PolyLite PLA @BBL A1M;" +} \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P 0.2 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1P 0.2 nozzle.json index f759e9e049..31aa9e7c85 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "machine", - "setting_id": "GM010", "name": "Bambu Lab P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab P1P 0.4 nozzle", + "from": "system", + "setting_id": "GM010", + "instantiation": "true", "nozzle_diameter": [ "0.2" ], @@ -14,7 +14,6 @@ "Bambu PLA Basic @BBL X1C 0.2 nozzle" ], "default_print_profile": "0.10mm Standard @BBL P1P 0.2 nozzle", - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z-0.04 ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "max_layer_height": [ "0.14" ], @@ -29,5 +28,5 @@ "Bambu Lab X1 0.2 nozzle", "Bambu Lab X1 Carbon 0.2 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z-0.04 ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json index 3def72780f..9f9fed3a53 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "machine", - "setting_id": "GM013", "name": "Bambu Lab P1P 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_bbl_3dp_001_common", + "from": "system", + "setting_id": "GM013", + "instantiation": "true", "nozzle_diameter": [ "0.4" ], @@ -24,16 +24,18 @@ "extruder_offset": [ "0x2" ], - "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", "machine_load_filament_time": "29", - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "machine_unload_filament_time": "28", "nozzle_type": "stainless_steel", "scan_first_layer": "0", + "z_hop": [ + "0.4" + ], "upward_compatible_machine": [ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 Carbon 0.4 nozzle" ], - "version": "01.07.00.18" -} \ No newline at end of file + "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", + "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change" +} diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1P 0.6 nozzle.json index 3f5a1bb033..e2e35ce501 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "machine", - "setting_id": "GM011", "name": "Bambu Lab P1P 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab P1P 0.4 nozzle", + "from": "system", + "setting_id": "GM011", + "instantiation": "true", "nozzle_diameter": [ "0.6" ], @@ -14,13 +14,15 @@ "Bambu PLA Basic @BBL X1" ], "default_print_profile": "0.30mm Standard @BBL P1P 0.6 nozzle", - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "max_layer_height": [ "0.42" ], "min_layer_height": [ "0.12" ], + "z_hop": [ + "0.4" + ], "nozzle_type": "hardened_steel", "retraction_length": [ "1.4" @@ -33,5 +35,5 @@ "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1P 0.8 nozzle.json index 23fcb62e7f..04375fdf73 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "machine", - "setting_id": "GM012", "name": "Bambu Lab P1P 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab P1P 0.4 nozzle", + "from": "system", + "setting_id": "GM012", + "instantiation": "true", "nozzle_diameter": [ "0.8" ], @@ -14,7 +14,6 @@ "Bambu PLA Basic @BBL X1" ], "default_print_profile": "0.40mm Standard @BBL P1P 0.8 nozzle", - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y15 E1.500 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.500\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X18 E15\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "max_layer_height": [ "0.56" ], @@ -25,6 +24,9 @@ "retract_length_toolchange": [ "3" ], + "z_hop": [ + "0.4" + ], "retraction_length": [ "3" ], @@ -33,5 +35,5 @@ "Bambu Lab X1 0.8 nozzle", "Bambu Lab X1 Carbon 0.8 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y15 E1.500 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.500\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X18 E15\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P.json b/resources/profiles/BBL/machine/Bambu Lab P1P.json index c48372c5d4..ee2f9ec05a 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P.json @@ -1,13 +1,12 @@ { "type": "machine_model", "name": "Bambu Lab P1P", + "nozzle_diameter": "0.4;0.2;0.6;0.8", "model_id": "C11", "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", - "nozzle_diameter": "0.4;0.2;0.6;0.8", "machine_tech": "FFF", "family": "BBL-3DP", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", - "hotend_model": "bbl-3dp-hotend.stl", "default_materials": "Generic PLA @BBL P1P;Generic PLA Silk @BBL P1P;Bambu PLA Matte @BBL P1P;Bambu PLA Basic @BBL P1P;Bambu ABS @BBL P1P;Bambu PC @BBL P1P;Bambu Support W @BBL P1P;Bambu TPU 95A @BBL P1P;PolyTerra PLA @BBL P1P;PolyLite PLA @BBL P1P;" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P1S 0.2 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1S 0.2 nozzle.json index 1508e70150..2ef87a37ad 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1S 0.2 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1S 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "machine", - "setting_id": "GM015", "name": "Bambu Lab P1S 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab P1S 0.4 nozzle", + "from": "system", + "setting_id": "GM015", + "instantiation": "true", "nozzle_diameter": [ "0.2" ], @@ -14,7 +14,6 @@ "Bambu PLA Basic @BBL X1C 0.2 nozzle" ], "default_print_profile": "0.10mm Standard @BBL P1P 0.2 nozzle", - "machine_start_gcode": ";===== machine: P1S ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z-0.04 ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "max_layer_height": [ "0.14" ], @@ -29,5 +28,5 @@ "Bambu Lab X1 0.2 nozzle", "Bambu Lab X1 Carbon 0.2 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: P1S ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z-0.04 ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json index 340ff7507c..8fd2c82da3 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "machine", - "setting_id": "GM014", "name": "Bambu Lab P1S 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_bbl_3dp_001_common", + "from": "system", + "setting_id": "GM014", + "instantiation": "true", "nozzle_diameter": [ "0.4" ], @@ -16,20 +16,25 @@ "18x28", "0x28" ], + "default_filament_profile": [ + "Bambu PLA Basic @BBL X1C" + ], "default_print_profile": "0.20mm Standard @BBL X1C", "extruder_offset": [ "0x2" ], - "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", "machine_load_filament_time": "29", - "machine_start_gcode": ";===== machine: P1S ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "machine_unload_filament_time": "28", "nozzle_type": "stainless_steel", "scan_first_layer": "0", + "z_hop": [ + "0.4" + ], "upward_compatible_machine": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 Carbon 0.4 nozzle" ], - "version": "01.07.00.18" -} \ No newline at end of file + "machine_start_gcode": ";===== machine: P1S ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", + "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change" +} diff --git a/resources/profiles/BBL/machine/Bambu Lab P1S 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1S 0.6 nozzle.json index b8586b9a60..dbae519daa 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1S 0.6 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1S 0.6 nozzle.json @@ -1,17 +1,19 @@ { "type": "machine", - "setting_id": "GM016", "name": "Bambu Lab P1S 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab P1S 0.4 nozzle", + "from": "system", + "setting_id": "GM016", + "instantiation": "true", "nozzle_diameter": [ "0.6" ], "printer_model": "Bambu Lab P1S", "printer_variant": "0.6", + "z_hop": [ + "0.4" + ], "default_print_profile": "0.30mm Standard @BBL X1C 0.6 nozzle", - "machine_start_gcode": ";===== machine: P1S ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "max_layer_height": [ "0.42" ], @@ -30,5 +32,5 @@ "Bambu Lab X1 0.6 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: P1S ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P1S 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1S 0.8 nozzle.json index 6bf1b11184..8c48198d33 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1S 0.8 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1S 0.8 nozzle.json @@ -1,20 +1,22 @@ { "type": "machine", - "setting_id": "GM017", "name": "Bambu Lab P1S 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab P1S 0.4 nozzle", + "from": "system", + "setting_id": "GM017", + "instantiation": "true", "nozzle_diameter": [ "0.8" ], "printer_model": "Bambu Lab P1S", "printer_variant": "0.8", + "z_hop": [ + "0.4" + ], "default_filament_profile": [ "Bambu PLA Basic @BBL X1" ], "default_print_profile": "0.40mm Standard @BBL X1C 0.8 nozzle", - "machine_start_gcode": ";===== machine: P1S ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y15 E1.500 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.500\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X18 E15\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "max_layer_height": [ "0.56" ], @@ -33,5 +35,5 @@ "Bambu Lab X1 0.8 nozzle", "Bambu Lab X1 Carbon 0.8 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: P1S ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y15 E1.500 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.500\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X18 E15\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P1S.json b/resources/profiles/BBL/machine/Bambu Lab P1S.json index 340e1ec501..407df99c0c 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1S.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1S.json @@ -1,14 +1,12 @@ { - "type": "machine_model", - "name": "Bambu Lab P1S", - "model_id": "C12", - "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", - "nozzle_diameter": "0.4;0.2;0.6;0.8", - "machine_tech": "FFF", - "family": "BBL-3DP", - "bed_model": "bbl-3dp-X1.stl", - "bed_texture": "bbl-3dp-logo.svg", - "hotend_model": "bbl-3dp-hotend.stl", - "default_materials": "Generic PLA Silk;Generic PLA;Bambu PLA Matte @BBL X1;Bambu PLA Basic @BBL X1;Bambu ABS @BBL X1C;Bambu PC @BBL X1C;Bambu Support W @BBL X1;Bambu TPU 95A @BBL X1;PolyTerra PLA @BBL X1;PolyLite PLA @BBL X1;" -} - + "type": "machine_model", + "name": "Bambu Lab P1S", + "nozzle_diameter": "0.4;0.2;0.6;0.8", + "model_id": "C12", + "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", + "machine_tech": "FFF", + "family": "BBL-3DP", + "bed_model": "bbl-3dp-X1.stl", + "bed_texture": "bbl-3dp-logo.svg", + "default_materials": "Generic PLA Silk;Generic PLA;Bambu PLA Matte @BBL X1;Bambu PLA Basic @BBL X1;Bambu ABS @BBL X1C;Bambu PC @BBL X1C;Bambu Support W @BBL X1;Bambu TPU 95A @BBL X1;PolyTerra PLA @BBL X1;PolyLite PLA @BBL X1;" +} \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json index 85423dfc37..5c0352f9bf 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "machine", - "setting_id": "GM008", "name": "Bambu Lab X1 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab X1 0.4 nozzle", + "from": "system", + "setting_id": "GM008", + "instantiation": "true", "nozzle_diameter": [ "0.2" ], @@ -14,7 +14,6 @@ "Bambu PLA Basic @BBL X1C 0.2 nozzle" ], "default_print_profile": "0.10mm Standard @BBL X1C 0.2 nozzle", - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "max_layer_height": [ "0.14" ], @@ -25,9 +24,9 @@ "0.4" ], "upward_compatible_machine": [ - "Bambu Lab P1P 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle", + "Bambu Lab P1P 0.2 nozzle", "Bambu Lab X1 Carbon 0.2 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json index 3a74c2ecff..d5532dd6ba 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "machine", - "setting_id": "GM003", "name": "Bambu Lab X1 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_bbl_3dp_001_common", + "from": "system", + "setting_id": "GM003", + "instantiation": "true", "nozzle_diameter": [ "0.4" ], @@ -25,14 +25,16 @@ "0x2" ], "machine_load_filament_time": "29", - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "machine_unload_filament_time": "28", "nozzle_type": "stainless_steel", "scan_first_layer": "1", + "z_hop": [ + "0.4" + ], "upward_compatible_machine": [ - "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1P 0.4 nozzle", "Bambu Lab X1 Carbon 0.4 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json index 22a55fd4b6..b6e49250c0 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json @@ -1,17 +1,19 @@ { "type": "machine", - "setting_id": "GM006", "name": "Bambu Lab X1 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab X1 0.4 nozzle", + "from": "system", + "setting_id": "GM006", + "instantiation": "true", "nozzle_diameter": [ "0.6" ], "printer_model": "Bambu Lab X1", "printer_variant": "0.6", + "z_hop": [ + "0.4" + ], "default_print_profile": "0.30mm Standard @BBL X1 0.6 nozzle", - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X231 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.333\n G0 F1200.0 X226 Y15 Z0.2 E0.495\n G0 F1200.0 X226 Y8 Z0.2 E0.691\n G0 F1200.0 X216 Y8 Z0.2 E0.988\n G0 F1200.0 X216 Y1.5 Z0.2 E0.642\n\n G0 X48.0 E20.56 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.56 F1200.0\n G0 X35.0 Y6.0 E1.75 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E23.9 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "max_layer_height": [ "0.42" ], @@ -26,9 +28,9 @@ "3" ], "upward_compatible_machine": [ - "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1P 0.6 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X231 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.333\n G0 F1200.0 X226 Y15 Z0.2 E0.495\n G0 F1200.0 X226 Y8 Z0.2 E0.691\n G0 F1200.0 X216 Y8 Z0.2 E0.988\n G0 F1200.0 X216 Y1.5 Z0.2 E0.642\n\n G0 X48.0 E20.56 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.56 F1200.0\n G0 X35.0 Y6.0 E1.75 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E23.9 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json index 2b43e519e9..6a3b52e579 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json @@ -1,17 +1,19 @@ { "type": "machine", - "setting_id": "GM007", "name": "Bambu Lab X1 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab X1 0.4 nozzle", + "from": "system", + "setting_id": "GM007", + "instantiation": "true", "nozzle_diameter": [ "0.8" ], "printer_model": "Bambu Lab X1", "printer_variant": "0.8", + "z_hop": [ + "0.4" + ], "default_print_profile": "0.40mm Standard @BBL X1 0.8 nozzle", - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y11 E1.364 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.300\nG0 X231 E1.160 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.482\n G0 F1200.0 X226 Y15 Z0.2 E0.550\n G0 F1200.0 X226 Y8 Z0.2 E0.768\n G0 F1200.0 X216 Y8 Z0.2 E1.098\n G0 F1200.0 X216 Y1.5 Z0.2 E0.714\n\n G0 X48.0 E25.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.70 F1200.0\n G0 X35.0 Y6.0 E1.90 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X129 E14 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "max_layer_height": [ "0.56" ], @@ -26,9 +28,9 @@ "3" ], "upward_compatible_machine": [ - "Bambu Lab P1P 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab P1P 0.8 nozzle", "Bambu Lab X1 Carbon 0.8 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y11 E1.364 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.300\nG0 X231 E1.160 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.482\n G0 F1200.0 X226 Y15 Z0.2 E0.550\n G0 F1200.0 X226 Y8 Z0.2 E0.768\n G0 F1200.0 X216 Y8 Z0.2 E1.098\n G0 F1200.0 X216 Y1.5 Z0.2 E0.714\n\n G0 X48.0 E25.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.70 F1200.0\n G0 X35.0 Y6.0 E1.90 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X129 E14 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json index a3cfc08295..84b682ce57 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "machine", - "setting_id": "GM002", "name": "Bambu Lab X1 Carbon 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab X1 Carbon 0.4 nozzle", + "from": "system", + "setting_id": "GM002", + "instantiation": "true", "nozzle_diameter": [ "0.2" ], @@ -14,7 +14,6 @@ "Bambu PLA Basic @BBL X1C 0.2 nozzle" ], "default_print_profile": "0.10mm Standard @BBL X1C 0.2 nozzle", - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "max_layer_height": [ "0.14" ], @@ -26,9 +25,9 @@ "0.4" ], "upward_compatible_machine": [ - "Bambu Lab P1P 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle", + "Bambu Lab P1P 0.2 nozzle", "Bambu Lab X1 0.2 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json index 1fe32d5b42..8139efe731 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "machine", - "setting_id": "GM001", "name": "Bambu Lab X1 Carbon 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_bbl_3dp_001_common", + "from": "system", + "setting_id": "GM001", + "instantiation": "true", "nozzle_diameter": [ "0.4" ], @@ -16,18 +16,24 @@ "18x28", "0x28" ], + "default_filament_profile": [ + "Bambu PLA Basic @BBL X1C" + ], "default_print_profile": "0.20mm Standard @BBL X1C", "extruder_offset": [ "0x2" ], "machine_load_filament_time": "29", - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "machine_unload_filament_time": "28", "scan_first_layer": "1", + "z_hop": [ + "0.4" + ], + "printer_structure": "corexy", "upward_compatible_machine": [ - "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1P 0.4 nozzle", "Bambu Lab X1 0.4 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json index 2e417137cf..1aa8c94661 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json @@ -1,17 +1,19 @@ { "type": "machine", - "setting_id": "GM005", "name": "Bambu Lab X1 Carbon 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab X1 Carbon 0.4 nozzle", + "from": "system", + "setting_id": "GM005", + "instantiation": "true", "nozzle_diameter": [ "0.6" ], "printer_model": "Bambu Lab X1 Carbon", "printer_variant": "0.6", + "z_hop": [ + "0.4" + ], "default_print_profile": "0.30mm Standard @BBL X1C 0.6 nozzle", - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X231 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.333\n G0 F1200.0 X226 Y15 Z0.2 E0.495\n G0 F1200.0 X226 Y8 Z0.2 E0.691\n G0 F1200.0 X216 Y8 Z0.2 E0.988\n G0 F1200.0 X216 Y1.5 Z0.2 E0.642\n\n G0 X48.0 E20.56 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.56 F1200.0\n G0 X35.0 Y6.0 E1.75 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E23.9 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "max_layer_height": [ "0.42" ], @@ -25,9 +27,9 @@ "3" ], "upward_compatible_machine": [ - "Bambu Lab P1P 0.6 nozzle", "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1P 0.6 nozzle", "Bambu Lab X1 0.6 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X231 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.333\n G0 F1200.0 X226 Y15 Z0.2 E0.495\n G0 F1200.0 X226 Y8 Z0.2 E0.691\n G0 F1200.0 X216 Y8 Z0.2 E0.988\n G0 F1200.0 X216 Y1.5 Z0.2 E0.642\n\n G0 X48.0 E20.56 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.56 F1200.0\n G0 X35.0 Y6.0 E1.75 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E23.9 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json index b5ec0a3355..ac6d31e35c 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json @@ -1,20 +1,22 @@ { "type": "machine", - "setting_id": "GM004", "name": "Bambu Lab X1 Carbon 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "Bambu Lab X1 Carbon 0.4 nozzle", + "from": "system", + "setting_id": "GM004", + "instantiation": "true", "nozzle_diameter": [ "0.8" ], "printer_model": "Bambu Lab X1 Carbon", "printer_variant": "0.8", + "z_hop": [ + "0.4" + ], "default_filament_profile": [ "Bambu PLA Basic @BBL X1C 0.8 nozzle" ], "default_print_profile": "0.40mm Standard @BBL X1C 0.8 nozzle", - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y11 E1.364 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.300\nG0 X231 E1.160 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.482\n G0 F1200.0 X226 Y15 Z0.2 E0.550\n G0 F1200.0 X226 Y8 Z0.2 E0.768\n G0 F1200.0 X216 Y8 Z0.2 E1.098\n G0 F1200.0 X216 Y1.5 Z0.2 E0.714\n\n G0 X48.0 E25.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.70 F1200.0\n G0 X35.0 Y6.0 E1.90 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X129 E14 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "max_layer_height": [ "0.56" ], @@ -28,9 +30,9 @@ "3" ], "upward_compatible_machine": [ - "Bambu Lab P1P 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab P1P 0.8 nozzle", "Bambu Lab X1 0.8 nozzle" ], - "version": "01.07.00.18" + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y11 E1.364 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.300\nG0 X231 E1.160 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.482\n G0 F1200.0 X226 Y15 Z0.2 E0.550\n G0 F1200.0 X226 Y8 Z0.2 E0.768\n G0 F1200.0 X216 Y8 Z0.2 E1.098\n G0 F1200.0 X216 Y1.5 Z0.2 E0.714\n\n G0 X48.0 E25.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.70 F1200.0\n G0 X35.0 Y6.0 E1.90 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X129 E14 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json index d07b2f8e63..fea08f27e8 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json @@ -1,13 +1,12 @@ { "type": "machine_model", "name": "Bambu Lab X1 Carbon", + "nozzle_diameter": "0.4;0.2;0.6;0.8", "model_id": "BL-P001", "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1 Carbon.json", - "nozzle_diameter": "0.4;0.2;0.6;0.8", "machine_tech": "FFF", "family": "BBL-3DP", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", - "hotend_model": "bbl-3dp-hotend.stl", "default_materials": "Generic PLA Silk;Generic PLA;Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu ABS @BBL X1C;Bambu PC @BBL X1C;Bambu Support W @BBL X1C;Bambu TPU 95A @BBL X1C;PolyTerra PLA @BBL X1C;PolyLite PLA @BBL X1C;" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1.json b/resources/profiles/BBL/machine/Bambu Lab X1.json index bb36dcb722..22e29b15b2 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1.json @@ -1,13 +1,12 @@ { "type": "machine_model", "name": "Bambu Lab X1", + "nozzle_diameter": "0.4;0.2;0.6;0.8", "model_id": "BL-P002", "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", - "nozzle_diameter": "0.4;0.2;0.6;0.8", "machine_tech": "FFF", "family": "BBL-3DP", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", - "hotend_model": "bbl-3dp-hotend.stl", "default_materials": "Generic PLA Silk;Generic PLA;Bambu PLA Matte @BBL X1;Bambu PLA Basic @BBL X1;Bambu ABS @BBL X1C;Bambu PC @BBL X1C;Bambu Support W @BBL X1;Bambu TPU 95A @BBL X1;PolyTerra PLA @BBL X1;PolyLite PLA @BBL X1;" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/machine/fdm_bbl_3dp_001_common.json b/resources/profiles/BBL/machine/fdm_bbl_3dp_001_common.json index 4abdcc61e1..785be05e5b 100644 --- a/resources/profiles/BBL/machine/fdm_bbl_3dp_001_common.json +++ b/resources/profiles/BBL/machine/fdm_bbl_3dp_001_common.json @@ -1,8 +1,13 @@ { "type": "machine", "name": "fdm_bbl_3dp_001_common", + "inherits": "fdm_machine_common", "from": "system", "instantiation": "false", + "nozzle_diameter": [ + "0.4" + ], + "printer_variant": "0.4", "printable_area": [ "0x0", "256x0", @@ -27,11 +32,6 @@ "extruder_colour": [ "#018001" ], - "extruder_offset": [ - "0x0" - ], - "gcode_flavor": "marlin", - "inherits": "fdm_machine_common", "machine_max_acceleration_e": [ "5000", "5000" @@ -45,8 +45,8 @@ "5000" ], "machine_max_acceleration_travel": [ - "20000", - "20000" + "9000", + "9000" ], "machine_max_acceleration_x": [ "20000", @@ -100,33 +100,21 @@ "0", "0" ], - "max_layer_height": [ - "0.32" + "retract_lift_below":[ + "249" ], - "min_layer_height": [ - "0.08" - ], - "printable_height": "250", "extruder_clearance_radius": "57", "extruder_clearance_max_radius": "68", - "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "90", "nozzle_volume": "107", - "nozzle_diameter": [ - "0.4" - ], - "printer_settings_id": "", - "printer_technology": "FFF", - "printer_variant": "0.4", + "printer_structure": "corexy", + "best_object_pos":"0.5x0.5", "retraction_minimum_travel": [ "1" ], "retract_before_wipe": [ "0%" ], - "retract_when_changing_layer": [ - "1" - ], "retraction_length": [ "0.8" ], @@ -136,12 +124,6 @@ "z_hop": [ "0.4" ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], "retraction_speed": [ "30" ], @@ -149,18 +131,14 @@ "30" ], "z_hop_types": [ - "Auto Lift" + "Auto Lift" ], "nozzle_type": "hardened_steel", - "silent_mode": "0", "single_extruder_multi_material": "1", - "change_filament_gcode": "M620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nG1 X70 F21000\nG1 Y245\nG1 Y265 F3000\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 X120 F15000\n\nG1 X20 Y50 F21000\nG1 Y-3\n{if toolchange_count == 2}\n; get travel path for change filament\nM620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\nM620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\nM620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\n{if next_extruder < 255}\nM400\n\nG92 E0\n{if flush_length_1 > 1}\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM109 S[nozzle_temperature_range_high]\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 1}\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 1}\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_4 > 1}\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n; FLUSH_START\nM400\nM109 S[new_filament_temp]\nG1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\n; FLUSH_END\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM106 P1 S255\nM400 S3\nG1 X80 F15000\nG1 X60 F15000\nG1 X80 F15000\nG1 X60 F15000; shake to put down garbage\n\nG1 X70 F5000\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 Y265 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X165 F15000; wipe and shake\nG1 Y256 ; move Y to aside, prevent collision\nM400\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A", - "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C10 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", "machine_end_gcode": ";===== date: 20230428 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X128 Y250 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\n", + "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C10 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", + "change_filament_gcode": "M620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nG1 X70 F21000\nG1 Y245\nG1 Y265 F3000\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 X120 F15000\n\nG1 X20 Y50 F21000\nG1 Y-3\n{if toolchange_count == 2}\n; get travel path for change filament\nM620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\nM620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\nM620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\n{if next_extruder < 255}\nM400\n\nG92 E0\n{if flush_length_1 > 1}\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM109 S[nozzle_temperature_range_high]\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 1}\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 1}\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_4 > 1}\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n; FLUSH_START\nM400\nM109 S[new_filament_temp]\nG1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\n; FLUSH_END\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM106 P1 S255\nM400 S3\nG1 X80 F15000\nG1 X60 F15000\nG1 X80 F15000\nG1 X60 F15000; shake to put down garbage\n\nG1 X70 F5000\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 Y265 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X165 F15000; wipe and shake\nG1 Y256 ; move Y to aside, prevent collision\nM400\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A", "machine_pause_gcode": "M400 U1", - "wipe": [ - "1" - ], "purge_in_prime_tower": "0", "enable_filament_ramming": "0" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/machine/fdm_machine_common.json b/resources/profiles/BBL/machine/fdm_machine_common.json index 4fb2bb4a06..c161bc9a81 100644 --- a/resources/profiles/BBL/machine/fdm_machine_common.json +++ b/resources/profiles/BBL/machine/fdm_machine_common.json @@ -3,6 +3,11 @@ "name": "fdm_machine_common", "from": "system", "instantiation": "false", + "nozzle_diameter": [ + "0.4" + ], + "printer_variant": "0.4", + "support_chamber_temp_control": "0", "printer_technology": "FFF", "deretraction_speed": [ "40" @@ -73,11 +78,7 @@ "extruder_clearance_radius": "65", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", - "nozzle_diameter": [ - "0.4" - ], "printer_settings_id": "", - "printer_variant": "0.4", "retraction_minimum_travel": [ "2" ], @@ -106,13 +107,14 @@ "60" ], "single_extruder_multi_material": "0", - "change_filament_gcode": "", + "support_air_filtration": "0", "wipe": [ "1" ], - "default_filament_profile":[], + "default_filament_profile": [], "default_print_profile": "0.16mm Optimal @BBL X1C", "upward_compatible_machine": [], "machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up", - "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end" -} + "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end", + "change_filament_gcode": "" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.06mm Fine @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm Fine @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..fb6886c4bf --- /dev/null +++ b/resources/profiles/BBL/process/0.06mm Fine @BBL A1M 0.2 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.06mm Fine @BBL A1M 0.2 nozzle", + "inherits": "fdm_process_bbl_0.06_nozzle_0.2", + "from": "system", + "setting_id": "GP050", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json index 7ae6dfbb54..f2af60320d 100644 --- a/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP024", "name": "0.06mm Standard @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.06_nozzle_0.2", + "from": "system", + "setting_id": "GP024", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1M.json b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1M.json new file mode 100644 index 0000000000..e9698adc27 --- /dev/null +++ b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1M.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.08mm Extra Fine @BBL A1M", + "inherits": "fdm_process_bbl_0.08", + "from": "system", + "setting_id": "GP049", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json index 1ad3ee777b..bc9f93e282 100644 --- a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json +++ b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json @@ -1,12 +1,11 @@ { "type": "process", - "setting_id": "GP018", "name": "0.08mm Extra Fine @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.08", + "from": "system", + "setting_id": "GP018", + "instantiation": "true", "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json index 008fc25ec8..1742e8dc4e 100644 --- a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json +++ b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP001", "name": "0.08mm Extra Fine @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.08", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm Optimal @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm Optimal @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..85fcb88227 --- /dev/null +++ b/resources/profiles/BBL/process/0.08mm Optimal @BBL A1M 0.2 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.08mm Optimal @BBL A1M 0.2 nozzle", + "inherits": "fdm_process_bbl_0.08_nozzle_0.2", + "from": "system", + "setting_id": "GP051", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json index 3d1f61e17e..9c87571fef 100644 --- a/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP025", "name": "0.08mm Standard @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.08_nozzle_0.2", + "from": "system", + "setting_id": "GP025", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..53895d5507 --- /dev/null +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL A1M 0.2 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.10mm Standard @BBL A1M 0.2 nozzle", + "inherits": "0.10mm Standard @BBL P1P 0.2 nozzle", + "from": "system", + "setting_id": "GP039", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json index 4a07e92e50..0b50342c13 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json @@ -1,13 +1,12 @@ { "type": "process", - "setting_id": "GP014", "name": "0.10mm Standard @BBL P1P 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.10_nozzle_0.2", + "from": "system", + "setting_id": "GP014", + "instantiation": "true", "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json index 9799b3e0c3..d699cb76cf 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP007", "name": "0.10mm Standard @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.10_nozzle_0.2", + "from": "system", + "setting_id": "GP007", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.12mm Draft @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Draft @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..095aa87150 --- /dev/null +++ b/resources/profiles/BBL/process/0.12mm Draft @BBL A1M 0.2 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.12mm Draft @BBL A1M 0.2 nozzle", + "inherits": "fdm_process_bbl_0.12_nozzle_0.2", + "from": "system", + "setting_id": "GP052", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.12mm Fine @BBL A1M.json b/resources/profiles/BBL/process/0.12mm Fine @BBL A1M.json new file mode 100644 index 0000000000..13f587e1bf --- /dev/null +++ b/resources/profiles/BBL/process/0.12mm Fine @BBL A1M.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.12mm Fine @BBL A1M", + "inherits": "fdm_process_bbl_0.12", + "from": "system", + "setting_id": "GP044", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json b/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json index c4a4161e4f..03afc8bee0 100644 --- a/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json +++ b/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json @@ -1,12 +1,11 @@ { "type": "process", - "setting_id": "GP019", "name": "0.12mm Fine @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.12", + "from": "system", + "setting_id": "GP019", + "instantiation": "true", "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json b/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json index 33e27772d0..ecfd6a45ec 100644 --- a/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json +++ b/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP002", "name": "0.12mm Fine @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.12", + "from": "system", + "setting_id": "GP002", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json index feec90196a..63e4db5ee9 100644 --- a/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP026", "name": "0.12mm Standard @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.12_nozzle_0.2", + "from": "system", + "setting_id": "GP026", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..3462b6ad11 --- /dev/null +++ b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1M 0.2 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.14mm Extra Draft @BBL A1M 0.2 nozzle", + "inherits": "fdm_process_bbl_0.14_nozzle_0.2", + "from": "system", + "setting_id": "GP053", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json index 22507d0bf2..cc737b50b4 100644 --- a/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP027", "name": "0.14mm Standard @BBL X1C 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.14_nozzle_0.2", + "from": "system", + "setting_id": "GP027", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.16mm Optimal @BBL A1M.json b/resources/profiles/BBL/process/0.16mm Optimal @BBL A1M.json new file mode 100644 index 0000000000..7e7d9ca25b --- /dev/null +++ b/resources/profiles/BBL/process/0.16mm Optimal @BBL A1M.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.16mm Optimal @BBL A1M", + "inherits": "fdm_process_bbl_0.16", + "from": "system", + "setting_id": "GP045", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json b/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json index 0a852f3542..1e0462da79 100644 --- a/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json +++ b/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json @@ -1,12 +1,11 @@ { "type": "process", - "setting_id": "GP020", "name": "0.16mm Optimal @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.16", + "from": "system", + "setting_id": "GP020", + "instantiation": "true", "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json b/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json index 9eb280e8ef..6f98d9b8cb 100644 --- a/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json +++ b/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP003", "name": "0.16mm Optimal @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.16", + "from": "system", + "setting_id": "GP003", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.18mm Fine @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Fine @BBL A1M 0.6 nozzle.json new file mode 100644 index 0000000000..7bc6534c79 --- /dev/null +++ b/resources/profiles/BBL/process/0.18mm Fine @BBL A1M 0.6 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.18mm Fine @BBL A1M 0.6 nozzle", + "inherits": "fdm_process_bbl_0.18_nozzle_0.6", + "from": "system", + "setting_id": "GP062", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json index dc15da6ce7..c2ffcfa7df 100644 --- a/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP028", "name": "0.18mm Standard @BBL X1C 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.18_nozzle_0.6", + "from": "system", + "setting_id": "GP028", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab P1S 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.20mm Bambu Support W @BBL X1C.json b/resources/profiles/BBL/process/0.20mm Bambu Support W @BBL X1C.json index 2be87d8614..dbe5144430 100644 --- a/resources/profiles/BBL/process/0.20mm Bambu Support W @BBL X1C.json +++ b/resources/profiles/BBL/process/0.20mm Bambu Support W @BBL X1C.json @@ -16,6 +16,7 @@ "enable_prime_tower": "1", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", - "Bambu Lab X1 0.4 nozzle" + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle" ] } diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL A1M.json b/resources/profiles/BBL/process/0.20mm Standard @BBL A1M.json new file mode 100644 index 0000000000..c168acda49 --- /dev/null +++ b/resources/profiles/BBL/process/0.20mm Standard @BBL A1M.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.20mm Standard @BBL A1M", + "inherits": "0.20mm Standard @BBL P1P", + "from": "system", + "setting_id": "GP000", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json b/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json index 9ddd1a62fb..1b60746efc 100644 --- a/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json +++ b/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json @@ -1,13 +1,11 @@ { "type": "process", - "setting_id": "GP015", "name": "0.20mm Standard @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.20", - "elefant_foot_compensation": "0.15", + "from": "system", + "setting_id": "GP015", + "instantiation": "true", "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json b/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json index b66bc40f71..8ac7f03d8c 100644 --- a/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json +++ b/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP004", "name": "0.20mm Standard @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.20", + "from": "system", + "setting_id": "GP004", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.20mm Strength @BBL A1M.json b/resources/profiles/BBL/process/0.20mm Strength @BBL A1M.json new file mode 100644 index 0000000000..839948ef6f --- /dev/null +++ b/resources/profiles/BBL/process/0.20mm Strength @BBL A1M.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.20mm Strength @BBL A1M", + "inherits": "0.20mm Strength @BBL P1P", + "from": "system", + "setting_id": "GP046", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json b/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json index e720fd2945..c38f5f7118 100644 --- a/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json +++ b/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json @@ -1,15 +1,14 @@ { "type": "process", - "setting_id": "GP021", "name": "0.20mm Strength @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.20", + "from": "system", + "setting_id": "GP021", + "instantiation": "true", "outer_wall_speed": "60", - "wall_loops": "6", "sparse_infill_density": "25%", + "wall_loops": "6", "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json b/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json index c664f379c5..06af7e79e0 100644 --- a/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json +++ b/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "GP013", "name": "0.20mm Strength @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.20", + "from": "system", + "setting_id": "GP013", + "instantiation": "true", "outer_wall_speed": "60", "wall_loops": "6", "sparse_infill_density": "25%", @@ -12,6 +12,5 @@ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.24mm Draft @BBL A1M.json b/resources/profiles/BBL/process/0.24mm Draft @BBL A1M.json new file mode 100644 index 0000000000..1b8d37324f --- /dev/null +++ b/resources/profiles/BBL/process/0.24mm Draft @BBL A1M.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.24mm Draft @BBL A1M", + "inherits": "fdm_process_bbl_0.24", + "from": "system", + "setting_id": "GP047", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json b/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json index 72d4665769..87866d4f72 100644 --- a/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json +++ b/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json @@ -1,12 +1,11 @@ { "type": "process", - "setting_id": "GP022", "name": "0.24mm Draft @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.24", + "from": "system", + "setting_id": "GP022", + "instantiation": "true", "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json b/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json index 5a06e7d29a..204262d78f 100644 --- a/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json +++ b/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP005", "name": "0.24mm Draft @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.24", + "from": "system", + "setting_id": "GP005", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.24mm Fine @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Fine @BBL A1M 0.8 nozzle.json new file mode 100644 index 0000000000..8a542171d2 --- /dev/null +++ b/resources/profiles/BBL/process/0.24mm Fine @BBL A1M 0.8 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.24mm Fine @BBL A1M 0.8 nozzle", + "inherits": "fdm_process_bbl_0.24_nozzle_0.8", + "from": "system", + "setting_id": "GP057", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.24mm Optimal @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Optimal @BBL A1M 0.6 nozzle.json new file mode 100644 index 0000000000..e5eaf7207b --- /dev/null +++ b/resources/profiles/BBL/process/0.24mm Optimal @BBL A1M 0.6 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.24mm Optimal @BBL A1M 0.6 nozzle", + "inherits": "fdm_process_bbl_0.24_nozzle_0.6", + "from": "system", + "setting_id": "GP054", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json index d6b7d36046..c162ab88e8 100644 --- a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP029", "name": "0.24mm Standard @BBL X1C 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.24_nozzle_0.6", + "from": "system", + "setting_id": "GP029", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab P1S 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json index c5873b75cc..fa77ea78fd 100644 --- a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP032", "name": "0.24mm Standard @BBL X1C 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.24_nozzle_0.8", + "from": "system", + "setting_id": "GP032", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab X1 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1M.json b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1M.json new file mode 100644 index 0000000000..4c19dcd43f --- /dev/null +++ b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1M.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.28mm Extra Draft @BBL A1M", + "inherits": "fdm_process_bbl_0.28", + "from": "system", + "setting_id": "GP048", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json index 5952a90ce0..ca64d1e316 100644 --- a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json +++ b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json @@ -1,12 +1,11 @@ { "type": "process", - "setting_id": "GP023", "name": "0.28mm Extra Draft @BBL P1P", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.28", + "from": "system", + "setting_id": "GP023", + "instantiation": "true", "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json index 2311e5ef89..eb00aab2a6 100644 --- a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json +++ b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP006", "name": "0.28mm Extra Draft @BBL X1C", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.28", + "from": "system", + "setting_id": "GP006", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL A1M 0.6 nozzle.json new file mode 100644 index 0000000000..960ad6d6c2 --- /dev/null +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL A1M 0.6 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.30mm Standard @BBL A1M 0.6 nozzle", + "inherits": "0.30mm Standard @BBL P1P 0.6 nozzle", + "from": "system", + "setting_id": "GP038", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json index 98be0e0b42..37b7593e8d 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json @@ -1,13 +1,12 @@ { "type": "process", - "setting_id": "GP016", "name": "0.30mm Standard @BBL P1P 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.30_nozzle_0.6", + "from": "system", + "setting_id": "GP016", + "instantiation": "true", "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab P1P 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json index f28703713c..d6114dface 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json @@ -1,12 +1,11 @@ { "type": "process", - "setting_id": "GP011", "name": "0.30mm Standard @BBL X1 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.30_nozzle_0.6", + "from": "system", + "setting_id": "GP011", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json index f4f8b46a6d..3ce90daed1 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json @@ -1,13 +1,12 @@ { "type": "process", - "setting_id": "GP010", "name": "0.30mm Standard @BBL X1C 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.30_nozzle_0.6", + "from": "system", + "setting_id": "GP010", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab P1S 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.30mm Strength @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Strength @BBL A1M 0.6 nozzle.json new file mode 100644 index 0000000000..5eac111e7e --- /dev/null +++ b/resources/profiles/BBL/process/0.30mm Strength @BBL A1M 0.6 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.30mm Strength @BBL A1M 0.6 nozzle", + "inherits": "fdm_process_bbl_0.30_nozzle_0.6", + "from": "system", + "setting_id": "GP061", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json index a629c5fa12..e61d98d21c 100644 --- a/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json @@ -1,16 +1,15 @@ { "type": "process", - "setting_id": "GP036", "name": "0.30mm Strength @BBL X1C 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.30_nozzle_0.6", + "from": "system", + "setting_id": "GP036", + "instantiation": "true", "wall_loops": "4", "sparse_infill_density": "25%", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab P1S 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.32mm Optimal @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Optimal @BBL A1M 0.8 nozzle.json new file mode 100644 index 0000000000..f793ab2063 --- /dev/null +++ b/resources/profiles/BBL/process/0.32mm Optimal @BBL A1M 0.8 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.32mm Optimal @BBL A1M 0.8 nozzle", + "inherits": "fdm_process_bbl_0.32_nozzle_0.8", + "from": "system", + "setting_id": "GP058", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json index ae2077afc5..9bc34fc8cd 100644 --- a/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP033", "name": "0.32mm Standard @BBL X1C 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.32_nozzle_0.8", + "from": "system", + "setting_id": "GP033", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab X1 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.36mm Draft @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.36mm Draft @BBL A1M 0.6 nozzle.json new file mode 100644 index 0000000000..4a40cfb3d5 --- /dev/null +++ b/resources/profiles/BBL/process/0.36mm Draft @BBL A1M 0.6 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.36mm Draft @BBL A1M 0.6 nozzle", + "inherits": "fdm_process_bbl_0.36_nozzle_0.6", + "from": "system", + "setting_id": "GP055", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json index 448777e863..4cded0e547 100644 --- a/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP030", "name": "0.36mm Standard @BBL X1C 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.36_nozzle_0.6", + "from": "system", + "setting_id": "GP030", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab P1S 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL A1M 0.8 nozzle.json new file mode 100644 index 0000000000..9b23f80d09 --- /dev/null +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL A1M 0.8 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.40mm Standard @BBL A1M 0.8 nozzle", + "inherits": "0.40mm Standard @BBL P1P 0.8 nozzle", + "from": "system", + "setting_id": "GP037", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json index 26be8470b2..547915d19e 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json @@ -1,13 +1,12 @@ { "type": "process", - "setting_id": "GP017", "name": "0.40mm Standard @BBL P1P 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.40_nozzle_0.8", + "from": "system", + "setting_id": "GP017", + "instantiation": "true", "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab P1P 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json index af8fade4d5..e9aa8d1836 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json @@ -1,12 +1,11 @@ { "type": "process", - "setting_id": "GP012", "name": "0.40mm Standard @BBL X1 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.40_nozzle_0.8", + "from": "system", + "setting_id": "GP012", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json index 2638d4d807..ac53792b5f 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json @@ -1,13 +1,12 @@ { "type": "process", - "setting_id": "GP009", "name": "0.40mm Standard @BBL X1C 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.40_nozzle_0.8", + "from": "system", + "setting_id": "GP009", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1M 0.6 nozzle.json new file mode 100644 index 0000000000..b29e070b82 --- /dev/null +++ b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1M 0.6 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.42mm Extra Draft @BBL A1M 0.6 nozzle", + "inherits": "fdm_process_bbl_0.42_nozzle_0.6", + "from": "system", + "setting_id": "GP056", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json index 0d0cfb73f4..f46d7d641a 100644 --- a/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP031", "name": "0.42mm Standard @BBL X1C 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.42_nozzle_0.6", + "from": "system", + "setting_id": "GP031", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle", "Bambu Lab P1S 0.6 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.48mm Draft @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/process/0.48mm Draft @BBL A1M 0.8 nozzle.json new file mode 100644 index 0000000000..29d78d74d5 --- /dev/null +++ b/resources/profiles/BBL/process/0.48mm Draft @BBL A1M 0.8 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.48mm Draft @BBL A1M 0.8 nozzle", + "inherits": "fdm_process_bbl_0.48_nozzle_0.8", + "from": "system", + "setting_id": "GP059", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json index bb77dbe00f..a0cf1b8369 100644 --- a/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP034", "name": "0.48mm Standard @BBL X1C 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.48_nozzle_0.8", + "from": "system", + "setting_id": "GP034", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab X1 0.8 nozzle", - "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + "Bambu Lab P1S 0.6 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1M 0.8 nozzle.json new file mode 100644 index 0000000000..43895dd832 --- /dev/null +++ b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1M 0.8 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.56mm Extra Draft @BBL A1M 0.8 nozzle", + "inherits": "fdm_process_bbl_0.56_nozzle_0.8", + "from": "system", + "setting_id": "GP060", + "instantiation": "true", + "default_acceleration": "6000", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json index 314fd2c807..45b1ef9d3c 100644 --- a/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json @@ -1,14 +1,13 @@ { "type": "process", - "setting_id": "GP035", "name": "0.56mm Standard @BBL X1C 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_bbl_0.56_nozzle_0.8", + "from": "system", + "setting_id": "GP035", + "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab X1 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle" - ], - "version": "01.07.00.18" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.06_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_bbl_0.06_nozzle_0.2.json index 35257823ae..c01ea54987 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.06_nozzle_0.2.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.06_nozzle_0.2.json @@ -1,25 +1,25 @@ { - "type": "process", - "name": "fdm_process_bbl_0.06_nozzle_0.2", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.06", - "initial_layer_print_height": "0.1", - "wall_loops": "4", - "bottom_shell_layers": "5", - "top_shell_layers": "7", - "bridge_flow": "1", - "line_width": "0.22", - "outer_wall_line_width": "0.22", - "initial_layer_line_width": "0.25", - "sparse_infill_line_width": "0.22", - "inner_wall_line_width": "0.22", - "internal_solid_infill_line_width": "0.22", - "support_line_width": "0.22", - "top_surface_line_width": "0.22", - "initial_layer_speed": "40", - "initial_layer_infill_speed": "70", - "sparse_infill_speed": "100", - "top_surface_speed": "150" -} + "type": "process", + "name": "fdm_process_bbl_0.06_nozzle_0.2", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.06", + "initial_layer_print_height": "0.1", + "wall_loops": "4", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "bridge_flow": "1", + "line_width": "0.22", + "outer_wall_line_width": "0.22", + "initial_layer_line_width": "0.25", + "sparse_infill_line_width": "0.22", + "inner_wall_line_width": "0.22", + "internal_solid_infill_line_width": "0.22", + "support_line_width": "0.22", + "top_surface_line_width": "0.22", + "initial_layer_speed": "40", + "initial_layer_infill_speed": "70", + "sparse_infill_speed": "100", + "top_surface_speed": "150" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.08.json b/resources/profiles/BBL/process/fdm_process_bbl_0.08.json index 0348c33427..836980d3fd 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.08.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.08.json @@ -1,9 +1,9 @@ { "type": "process", "name": "fdm_process_bbl_0.08", + "inherits": "fdm_process_bbl_common", "from": "system", "instantiation": "false", - "inherits": "fdm_process_bbl_common", "layer_height": "0.08", "elefant_foot_compensation": "0.15", "bottom_shell_layers": "7", @@ -16,11 +16,9 @@ "inner_wall_speed": "350", "sparse_infill_speed": "450", "internal_solid_infill_speed": "350", - "top_surface_speed": "200", "gap_infill_speed": "350", "overhang_1_4_speed": "60", "overhang_2_4_speed": "30", "overhang_3_4_speed": "10", - "overhang_4_4_speed": "10", "support_threshold_angle": "15" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.08_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_bbl_0.08_nozzle_0.2.json index 90fae21397..43a8b60f07 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.08_nozzle_0.2.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.08_nozzle_0.2.json @@ -1,25 +1,25 @@ { - "type": "process", - "name": "fdm_process_bbl_0.08_nozzle_0.2", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.08", - "initial_layer_print_height": "0.1", - "wall_loops": "4", - "bottom_shell_layers": "5", - "top_shell_layers": "7", - "bridge_flow": "1", - "line_width": "0.22", - "outer_wall_line_width": "0.22", - "initial_layer_line_width": "0.25", - "sparse_infill_line_width": "0.22", - "inner_wall_line_width": "0.22", - "internal_solid_infill_line_width": "0.22", - "support_line_width": "0.22", - "top_surface_line_width": "0.22", - "initial_layer_speed": "40", - "initial_layer_infill_speed": "70", - "sparse_infill_speed": "100", - "top_surface_speed": "150" -} + "type": "process", + "name": "fdm_process_bbl_0.08_nozzle_0.2", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.08", + "initial_layer_print_height": "0.1", + "wall_loops": "4", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "bridge_flow": "1", + "line_width": "0.22", + "outer_wall_line_width": "0.22", + "initial_layer_line_width": "0.25", + "sparse_infill_line_width": "0.22", + "inner_wall_line_width": "0.22", + "internal_solid_infill_line_width": "0.22", + "support_line_width": "0.22", + "top_surface_line_width": "0.22", + "initial_layer_speed": "40", + "initial_layer_infill_speed": "70", + "sparse_infill_speed": "100", + "top_surface_speed": "150" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json index a53df8b5a9..cc7d773953 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json @@ -1,9 +1,9 @@ { "type": "process", "name": "fdm_process_bbl_0.10_nozzle_0.2", + "inherits": "fdm_process_bbl_common", "from": "system", "instantiation": "false", - "inherits": "fdm_process_bbl_common", "layer_height": "0.1", "initial_layer_print_height": "0.1", "wall_loops": "4", @@ -22,4 +22,4 @@ "initial_layer_infill_speed": "70", "sparse_infill_speed": "100", "top_surface_speed": "150" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.12.json b/resources/profiles/BBL/process/fdm_process_bbl_0.12.json index dcbb2f9a4b..e76673b434 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.12.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.12.json @@ -1,9 +1,9 @@ { "type": "process", "name": "fdm_process_bbl_0.12", + "inherits": "fdm_process_bbl_common", "from": "system", "instantiation": "false", - "inherits": "fdm_process_bbl_common", "layer_height": "0.12", "bottom_shell_layers": "5", "elefant_foot_compensation": "0.15", @@ -16,11 +16,9 @@ "inner_wall_speed": "350", "sparse_infill_speed": "430", "internal_solid_infill_speed": "350", - "top_surface_speed": "200", "gap_infill_speed": "350", "overhang_1_4_speed": "60", "overhang_2_4_speed": "30", "overhang_3_4_speed": "10", - "overhang_4_4_speed": "10", "support_threshold_angle": "20" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.12_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_bbl_0.12_nozzle_0.2.json index 8a76d4c7cb..040df9f8a9 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.12_nozzle_0.2.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.12_nozzle_0.2.json @@ -1,25 +1,25 @@ { - "type": "process", - "name": "fdm_process_bbl_0.12_nozzle_0.2", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.12", - "initial_layer_print_height": "0.1", - "wall_loops": "4", - "bottom_shell_layers": "5", - "top_shell_layers": "7", - "bridge_flow": "1", - "line_width": "0.22", - "outer_wall_line_width": "0.22", - "initial_layer_line_width": "0.25", - "sparse_infill_line_width": "0.22", - "inner_wall_line_width": "0.22", - "internal_solid_infill_line_width": "0.22", - "support_line_width": "0.22", - "top_surface_line_width": "0.22", - "initial_layer_speed": "40", - "initial_layer_infill_speed": "70", - "sparse_infill_speed": "100", - "top_surface_speed": "150" -} + "type": "process", + "name": "fdm_process_bbl_0.12_nozzle_0.2", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.12", + "initial_layer_print_height": "0.1", + "wall_loops": "4", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "bridge_flow": "1", + "line_width": "0.22", + "outer_wall_line_width": "0.22", + "initial_layer_line_width": "0.25", + "sparse_infill_line_width": "0.22", + "inner_wall_line_width": "0.22", + "internal_solid_infill_line_width": "0.22", + "support_line_width": "0.22", + "top_surface_line_width": "0.22", + "initial_layer_speed": "40", + "initial_layer_infill_speed": "70", + "sparse_infill_speed": "100", + "top_surface_speed": "150" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.14_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_bbl_0.14_nozzle_0.2.json index 81bd28b30c..be12c21e1c 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.14_nozzle_0.2.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.14_nozzle_0.2.json @@ -1,25 +1,25 @@ { - "type": "process", - "name": "fdm_process_bbl_0.14_nozzle_0.2", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.14", - "initial_layer_print_height": "0.1", - "wall_loops": "4", - "bottom_shell_layers": "5", - "top_shell_layers": "7", - "bridge_flow": "1", - "line_width": "0.22", - "outer_wall_line_width": "0.22", - "initial_layer_line_width": "0.25", - "sparse_infill_line_width": "0.22", - "inner_wall_line_width": "0.22", - "internal_solid_infill_line_width": "0.22", - "support_line_width": "0.22", - "top_surface_line_width": "0.22", - "initial_layer_speed": "40", - "initial_layer_infill_speed": "70", - "sparse_infill_speed": "100", - "top_surface_speed": "150" -} + "type": "process", + "name": "fdm_process_bbl_0.14_nozzle_0.2", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.14", + "initial_layer_print_height": "0.1", + "wall_loops": "4", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "bridge_flow": "1", + "line_width": "0.22", + "outer_wall_line_width": "0.22", + "initial_layer_line_width": "0.25", + "sparse_infill_line_width": "0.22", + "inner_wall_line_width": "0.22", + "internal_solid_infill_line_width": "0.22", + "support_line_width": "0.22", + "top_surface_line_width": "0.22", + "initial_layer_speed": "40", + "initial_layer_infill_speed": "70", + "sparse_infill_speed": "100", + "top_surface_speed": "150" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.16.json b/resources/profiles/BBL/process/fdm_process_bbl_0.16.json index 14186f7170..3c435f4225 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.16.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.16.json @@ -1,9 +1,9 @@ { "type": "process", "name": "fdm_process_bbl_0.16", + "inherits": "fdm_process_bbl_common", "from": "system", "instantiation": "false", - "inherits": "fdm_process_bbl_common", "layer_height": "0.16", "elefant_foot_compensation": "0.15", "bottom_shell_layers": "4", @@ -16,11 +16,9 @@ "inner_wall_speed": "300", "sparse_infill_speed": "330", "internal_solid_infill_speed": "300", - "top_surface_speed": "200", "gap_infill_speed": "300", "overhang_1_4_speed": "60", "overhang_2_4_speed": "30", "overhang_3_4_speed": "10", - "overhang_4_4_speed": "10", "support_threshold_angle": "25" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.18_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_bbl_0.18_nozzle_0.6.json index 1a9120fdb9..3baf1fd45d 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.18_nozzle_0.6.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.18_nozzle_0.6.json @@ -1,34 +1,24 @@ { - "type": "process", - "name": "fdm_process_bbl_0.18_nozzle_0.6", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.18", - "initial_layer_print_height": "0.3", - "wall_loops": "2", - "bottom_shell_layers": "3", - "top_shell_layers": "3", - "bridge_flow": "1", - "line_width": "0.62", - "outer_wall_line_width": "0.62", - "initial_layer_line_width": "0.62", - "sparse_infill_line_width": "0.62", - "inner_wall_line_width": "0.62", - "internal_solid_infill_line_width": "0.62", - "support_line_width": "0.62", - "top_surface_line_width": "0.62", - "initial_layer_speed": "35", - "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "bridge_speed": "30", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10" -} + "type": "process", + "name": "fdm_process_bbl_0.18_nozzle_0.6", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.18", + "initial_layer_print_height": "0.3", + "bridge_flow": "1", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "sparse_infill_speed": "100", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_3_4_speed": "15" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.20.json b/resources/profiles/BBL/process/fdm_process_bbl_0.20.json index 12fe82dd12..d48f4a29a1 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.20.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.20.json @@ -1,13 +1,10 @@ { "type": "process", "name": "fdm_process_bbl_0.20", + "inherits": "fdm_process_bbl_common", "from": "system", "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.2", "elefant_foot_compensation": "0.15", - "bottom_shell_layers": "3", - "top_shell_layers": "3", "top_shell_thickness": "0.6", "bridge_flow": "1", "initial_layer_speed": "50", @@ -16,6 +13,5 @@ "inner_wall_speed": "300", "sparse_infill_speed": "270", "internal_solid_infill_speed": "250", - "top_surface_speed": "200", "gap_infill_speed": "250" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.24.json b/resources/profiles/BBL/process/fdm_process_bbl_0.24.json index 3b83ea159c..02e7595c7b 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.24.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.24.json @@ -1,14 +1,12 @@ { "type": "process", "name": "fdm_process_bbl_0.24", + "inherits": "fdm_process_bbl_common", "from": "system", "instantiation": "false", - "inherits": "fdm_process_bbl_common", "layer_height": "0.24", "elefant_foot_compensation": "0.15", "top_surface_line_width": "0.45", - "bottom_shell_layers": "3", - "top_shell_layers": "3", "top_shell_thickness": "0.6", "bridge_flow": "1", "initial_layer_speed": "50", @@ -17,7 +15,6 @@ "inner_wall_speed": "230", "sparse_infill_speed": "230", "internal_solid_infill_speed": "230", - "top_surface_speed": "200", "gap_infill_speed": "230", "support_threshold_angle": "35" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.6.json index aec643962c..514e31759a 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.6.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.6.json @@ -1,34 +1,24 @@ { - "type": "process", - "name": "fdm_process_bbl_0.24_nozzle_0.6", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.24", - "initial_layer_print_height": "0.3", - "wall_loops": "2", - "bottom_shell_layers": "3", - "top_shell_layers": "3", - "bridge_flow": "1", - "line_width": "0.62", - "outer_wall_line_width": "0.62", - "initial_layer_line_width": "0.62", - "sparse_infill_line_width": "0.62", - "inner_wall_line_width": "0.62", - "internal_solid_infill_line_width": "0.62", - "support_line_width": "0.62", - "top_surface_line_width": "0.62", - "initial_layer_speed": "35", - "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "bridge_speed": "30", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10" -} + "type": "process", + "name": "fdm_process_bbl_0.24_nozzle_0.6", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.24", + "initial_layer_print_height": "0.3", + "bridge_flow": "1", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "sparse_infill_speed": "100", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_3_4_speed": "15" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.8.json index 9c1cbf2028..5fedaf53d6 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.8.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.8.json @@ -1,35 +1,26 @@ { - "type": "process", - "name": "fdm_process_bbl_0.24_nozzle_0.8", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.24", - "initial_layer_print_height": "0.4", - "wall_loops": "2", - "bottom_shell_layers": "3", - "top_shell_layers": "3", - "bridge_flow": "1", - "line_width": "0.82", - "outer_wall_line_width": "0.82", - "initial_layer_line_width": "0.82", - "sparse_infill_line_width": "0.82", - "inner_wall_line_width": "0.82", - "internal_solid_infill_line_width": "0.82", - "support_line_width": "0.82", - "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", - "initial_layer_speed": "35", - "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "bridge_speed": "30", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "25", - "overhang_4_4_speed": "5" -} + "type": "process", + "name": "fdm_process_bbl_0.24_nozzle_0.8", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.24", + "initial_layer_print_height": "0.4", + "bridge_flow": "1", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "top_surface_pattern": "monotonic", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "sparse_infill_speed": "100", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "5" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.28.json b/resources/profiles/BBL/process/fdm_process_bbl_0.28.json index 08f80a2ef0..1c70a95b9b 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.28.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.28.json @@ -1,14 +1,12 @@ { "type": "process", "name": "fdm_process_bbl_0.28", + "inherits": "fdm_process_bbl_common", "from": "system", "instantiation": "false", - "inherits": "fdm_process_bbl_common", "layer_height": "0.28", "elefant_foot_compensation": "0.15", "top_surface_line_width": "0.45", - "bottom_shell_layers": "3", - "top_shell_layers": "3", "top_shell_thickness": "0.6", "bridge_flow": "1", "initial_layer_speed": "50", @@ -17,7 +15,6 @@ "inner_wall_speed": "200", "sparse_infill_speed": "200", "internal_solid_infill_speed": "200", - "top_surface_speed": "200", "gap_infill_speed": "200", "support_threshold_angle": "40" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json index ed6ce69744..26b39f3736 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json @@ -1,14 +1,11 @@ { "type": "process", "name": "fdm_process_bbl_0.30_nozzle_0.6", + "inherits": "fdm_process_bbl_common", "from": "system", "instantiation": "false", - "inherits": "fdm_process_bbl_common", "layer_height": "0.3", "initial_layer_print_height": "0.3", - "wall_loops": "2", - "bottom_shell_layers": "3", - "top_shell_layers": "3", "bridge_flow": "1", "line_width": "0.62", "outer_wall_line_width": "0.62", @@ -20,15 +17,8 @@ "top_surface_line_width": "0.62", "initial_layer_speed": "35", "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", "top_surface_speed": "150", - "gap_infill_speed": "50", "bridge_speed": "30", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10" -} + "overhang_3_4_speed": "15" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.32_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_bbl_0.32_nozzle_0.8.json index d64d4b6f24..12320f79f8 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.32_nozzle_0.8.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.32_nozzle_0.8.json @@ -1,35 +1,26 @@ { - "type": "process", - "name": "fdm_process_bbl_0.32_nozzle_0.8", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.32", - "initial_layer_print_height": "0.3", - "wall_loops": "2", - "bottom_shell_layers": "3", - "top_shell_layers": "3", - "bridge_flow": "1", - "line_width": "0.82", - "outer_wall_line_width": "0.82", - "initial_layer_line_width": "0.82", - "sparse_infill_line_width": "0.82", - "inner_wall_line_width": "0.82", - "internal_solid_infill_line_width": "0.82", - "support_line_width": "0.82", - "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", - "initial_layer_speed": "35", - "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "bridge_speed": "30", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "25", - "overhang_4_4_speed": "5" -} + "type": "process", + "name": "fdm_process_bbl_0.32_nozzle_0.8", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.32", + "initial_layer_print_height": "0.3", + "bridge_flow": "1", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "top_surface_pattern": "monotonic", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "sparse_infill_speed": "100", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "5" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.36_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_bbl_0.36_nozzle_0.6.json index a8a8a1387a..f94531fbe3 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.36_nozzle_0.6.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.36_nozzle_0.6.json @@ -1,34 +1,24 @@ { - "type": "process", - "name": "fdm_process_bbl_0.36_nozzle_0.6", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.36", - "initial_layer_print_height": "0.3", - "wall_loops": "2", - "bottom_shell_layers": "3", - "top_shell_layers": "3", - "bridge_flow": "1", - "line_width": "0.62", - "outer_wall_line_width": "0.62", - "initial_layer_line_width": "0.62", - "sparse_infill_line_width": "0.62", - "inner_wall_line_width": "0.62", - "internal_solid_infill_line_width": "0.62", - "support_line_width": "0.62", - "top_surface_line_width": "0.62", - "initial_layer_speed": "35", - "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "bridge_speed": "30", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10" -} + "type": "process", + "name": "fdm_process_bbl_0.36_nozzle_0.6", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.36", + "initial_layer_print_height": "0.3", + "bridge_flow": "1", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "sparse_infill_speed": "100", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_3_4_speed": "15" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json index 503a81b4df..3e0d8b147e 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json @@ -1,14 +1,11 @@ { "type": "process", "name": "fdm_process_bbl_0.40_nozzle_0.8", + "inherits": "fdm_process_bbl_common", "from": "system", "instantiation": "false", - "inherits": "fdm_process_bbl_common", "layer_height": "0.4", "initial_layer_print_height": "0.4", - "wall_loops": "2", - "bottom_shell_layers": "3", - "top_shell_layers": "3", "bridge_flow": "1", "line_width": "0.82", "outer_wall_line_width": "0.82", @@ -21,15 +18,9 @@ "top_surface_pattern": "monotonic", "initial_layer_speed": "35", "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", "top_surface_speed": "150", - "gap_infill_speed": "50", "bridge_speed": "30", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", "overhang_3_4_speed": "25", "overhang_4_4_speed": "5" -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.42_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_bbl_0.42_nozzle_0.6.json index 7d9309c1b1..07120eef78 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.42_nozzle_0.6.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.42_nozzle_0.6.json @@ -1,34 +1,24 @@ { - "type": "process", - "name": "fdm_process_bbl_0.42_nozzle_0.6", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.42", - "initial_layer_print_height": "0.3", - "wall_loops": "2", - "bottom_shell_layers": "3", - "top_shell_layers": "3", - "bridge_flow": "1", - "line_width": "0.62", - "outer_wall_line_width": "0.62", - "initial_layer_line_width": "0.62", - "sparse_infill_line_width": "0.62", - "inner_wall_line_width": "0.62", - "internal_solid_infill_line_width": "0.62", - "support_line_width": "0.62", - "top_surface_line_width": "0.62", - "initial_layer_speed": "35", - "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "bridge_speed": "30", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10" -} + "type": "process", + "name": "fdm_process_bbl_0.42_nozzle_0.6", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.42", + "initial_layer_print_height": "0.3", + "bridge_flow": "1", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "sparse_infill_speed": "100", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_3_4_speed": "15" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.48_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_bbl_0.48_nozzle_0.8.json index 87c7d6b04c..3a77fbf006 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.48_nozzle_0.8.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.48_nozzle_0.8.json @@ -1,35 +1,26 @@ { - "type": "process", - "name": "fdm_process_bbl_0.48_nozzle_0.8", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.48", - "initial_layer_print_height": "0.4", - "wall_loops": "2", - "bottom_shell_layers": "3", - "top_shell_layers": "3", - "bridge_flow": "1", - "line_width": "0.82", - "outer_wall_line_width": "0.82", - "initial_layer_line_width": "0.82", - "sparse_infill_line_width": "0.82", - "inner_wall_line_width": "0.82", - "internal_solid_infill_line_width": "0.82", - "support_line_width": "0.82", - "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", - "initial_layer_speed": "35", - "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "bridge_speed": "30", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "25", - "overhang_4_4_speed": "5" -} + "type": "process", + "name": "fdm_process_bbl_0.48_nozzle_0.8", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.48", + "initial_layer_print_height": "0.4", + "bridge_flow": "1", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "top_surface_pattern": "monotonic", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "sparse_infill_speed": "100", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "5" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.56_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_bbl_0.56_nozzle_0.8.json index 311925326a..3970ac5ac7 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.56_nozzle_0.8.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.56_nozzle_0.8.json @@ -1,35 +1,26 @@ { - "type": "process", - "name": "fdm_process_bbl_0.56_nozzle_0.8", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_bbl_common", - "layer_height": "0.56", - "initial_layer_print_height": "0.4", - "wall_loops": "2", - "bottom_shell_layers": "3", - "top_shell_layers": "3", - "bridge_flow": "1", - "line_width": "0.82", - "outer_wall_line_width": "0.82", - "initial_layer_line_width": "0.82", - "sparse_infill_line_width": "0.82", - "inner_wall_line_width": "0.82", - "internal_solid_infill_line_width": "0.82", - "support_line_width": "0.82", - "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", - "initial_layer_speed": "35", - "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "bridge_speed": "30", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "25", - "overhang_4_4_speed": "5" -} + "type": "process", + "name": "fdm_process_bbl_0.56_nozzle_0.8", + "inherits": "fdm_process_bbl_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.56", + "initial_layer_print_height": "0.4", + "bridge_flow": "1", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "top_surface_pattern": "monotonic", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "sparse_infill_speed": "100", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "5" +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_common.json b/resources/profiles/BBL/process/fdm_process_bbl_common.json index 5cfd7e111c..223e2e9eb7 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_common.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_common.json @@ -1,47 +1,28 @@ { "type": "process", "name": "fdm_process_bbl_common", + "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "inherits": "fdm_process_common", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", - "bridge_flow": "0.95", "bridge_speed": "50", - "brim_width": "5", "brim_object_gap": "0.1", - "compatible_printers": [], "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "10000", - "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", "enable_arc_fitting": "1", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "120", "outer_wall_acceleration": "5000", - "inner_wall_acceleration": "5000", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.2", "initial_layer_speed": "30", "gap_infill_speed": "50", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "15%", "sparse_infill_speed": "250", - "interface_shells": "0", "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", @@ -55,38 +36,22 @@ "overhang_3_4_speed": "30", "overhang_4_4_speed": "10", "only_one_wall_top": "1", - "inner_wall_line_width": "0.45", "inner_wall_speed": "150", - "wall_loops": "2", - "print_settings_id": "", - "raft_layers": "0", "seam_position": "aligned", - "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", - "standby_temperature_delta": "-5", - "enable_support": "0", "resolution": "0.012", "support_type": "normal(auto)", "support_style": "default", - "support_on_build_plate_only": "0", "support_top_z_distance": "0.2", "support_bottom_z_distance": "0.2", - "support_filament": "0", - "support_line_width": "0.42", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", "support_interface_bottom_layers": "2", "support_interface_spacing": "0.5", - "support_expansion": "0", - "support_interface_speed": "80", - "support_base_pattern": "default", + "support_expansion": "0", "support_base_pattern_spacing": "2.5", "support_speed": "150", "support_threshold_angle": "30", @@ -94,9 +59,7 @@ "tree_support_branch_diameter": "2", "tree_support_branch_angle": "45", "tree_support_wall_count": "1", - "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.42", "top_surface_acceleration": "2000", "top_surface_speed": "200", "top_shell_layers": "3", @@ -105,9 +68,6 @@ "enable_prime_tower": "1", "wipe_tower_no_sparse_layers": "0", "prime_tower_width": "35", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "wall_generator": "arachne", - "gcode_label_objects": "0", - "flush_multiplier": "1.0" -} + "wall_generator": "classic", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_common.json b/resources/profiles/BBL/process/fdm_process_common.json index 0177d23c6f..921718b995 100644 --- a/resources/profiles/BBL/process/fdm_process_common.json +++ b/resources/profiles/BBL/process/fdm_process_common.json @@ -8,7 +8,6 @@ "bridge_flow": "0.95", "bridge_speed": "25", "brim_width": "5", - "compatible_printers": [], "print_sequence": "by layer", "default_acceleration": "10000", "bridge_no_support": "0", @@ -67,5 +66,6 @@ "enable_prime_tower": "0", "prime_tower_width": "60", "xy_hole_compensation": "0", - "xy_contour_compensation": "0" -} + "xy_contour_compensation": "0", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/Creality/machine/Creality Ender-3 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 0.4 nozzle.json index f3e4e6b8e4..9e625999cc 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 0.4 nozzle.json @@ -7,6 +7,7 @@ "inherits": "fdm_creality_common", "printer_model": "Creality Ender-3", "default_print_profile": "0.20mm Standard @Creality Ender3", + "thumbnails": [""], "nozzle_diameter": [ "0.4" ], @@ -16,7 +17,9 @@ "220x220", "0x220" ], - "printable_height": "270", + "printable_height": "250", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "25", "nozzle_type": "undefine", "auxiliary_fan": "0", "machine_max_acceleration_extruding": [ diff --git a/resources/profiles/Prusa.json b/resources/profiles/Prusa.json index 4804beff57..cd01b944e5 100644 --- a/resources/profiles/Prusa.json +++ b/resources/profiles/Prusa.json @@ -26,13 +26,45 @@ "name": "process_common_mk4", "sub_path": "process/process_common_mk4.json" }, + { + "name": "process_common_mk3", + "sub_path": "process/process_common_mk3.json" + }, + { + "name": "0.05mm UltraDetail @MK3S", + "sub_path": "process/0.05mm UltraDetail @MK3S.json" + }, + { + "name": "0.07mm UltraDetail @MK3S", + "sub_path": "process/0.07mm UltraDetail @MK3S.json" + }, + { + "name": "0.10mm Detail @MK3S", + "sub_path": "process/0.10mm Detail @MK3S.json" + }, + { + "name": "0.15mm Quality @MK3S", + "sub_path": "process/0.15mm Quality @MK3S.json" + }, + { + "name": "0.15mm Speed @MK3S", + "sub_path": "process/0.15mm Speed @MK3S.json" + }, + { + "name": "0.20mm Quality @MK3S", + "sub_path": "process/0.20mm Quality @MK3S.json" + }, { "name": "0.20mm Standard @MK3S", "sub_path": "process/0.20mm Standard @MK3S.json" }, { - "name": "0.20mm Standard @MINI", - "sub_path": "process/0.20mm Standard @MINI.json" + "name": "0.20mm Speed @MK3S", + "sub_path": "process/0.20mm Speed @MK3S.json" + }, + { + "name": "0.30mm Draft @MK3S", + "sub_path": "process/0.30mm Draft @MK3S.json" }, { "name": "0.08mm Standard @MK4", diff --git a/resources/profiles/Prusa/machine/Prusa MK3S 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK3S 0.4 nozzle.json index 7461bee0b1..9f05eb7c8e 100644 --- a/resources/profiles/Prusa/machine/Prusa MK3S 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK3S 0.4 nozzle.json @@ -9,7 +9,7 @@ "default_filament_profile": [ "Prusa Generic PLA" ], - "default_print_profile": "0.20mm Standard @MK3S", + "default_print_profile": "0.20mm Speed @MK3S", "nozzle_diameter": [ "0.4" ], @@ -42,7 +42,7 @@ "printable_height": "210", "machine_pause_gcode": "M601", "machine_start_gcode": "M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.13.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}", - "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y200 F3600 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM84 ; disable motors\n; max_layer_z = [max_layer_z]", + "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y200 F3600 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3S|QUALITY @MK3S|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM84 ; disable motors\n; max_layer_z = [max_layer_z]", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n", diff --git a/resources/profiles/Prusa/process/0.05mm UltraDetail @MK3S.json b/resources/profiles/Prusa/process/0.05mm UltraDetail @MK3S.json new file mode 100644 index 0000000000..ab3a95683f --- /dev/null +++ b/resources/profiles/Prusa/process/0.05mm UltraDetail @MK3S.json @@ -0,0 +1,40 @@ +{ + "type": "process", + "print_settings_id": "0.05mm UltraDetail @MK3S", + "name": "0.05mm UltraDetail @MK3S", + "from": "system", + "instantiation": "true", + "inherits": "process_common_mk3", + "bottom_shell_layers": "10", + "bridge_acceleration": "300", + "bridge_flow": "0.6", + "bridge_speed": "25", + "gap_infill_speed": "20", + "inner_wall_acceleration": "300", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "30", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "30", + "layer_height": "0.05", + "line_width": "0.45", + "outer_wall_line_width": "0.45", + "outer_wall_speed": "20", + "raft_contact_distance": "0.1", + "small_perimeter_speed": "20", + "sparse_infill_acceleration": "800", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "30", + "support_base_pattern_spacing": "1.5", + "support_bottom_z_distance": "0.1", + "support_interface_speed": "24", + "support_line_width": "0.33", + "support_object_xy_distance": "0.27", + "support_speed": "30", + "support_top_z_distance": "0.1", + "thick_bridges": "1", + "top_shell_layers": "14", + "top_surface_line_width": "0.4", + "top_surface_speed": "20", + "wall_loops": "3" +} diff --git a/resources/profiles/Prusa/process/0.07mm UltraDetail @MK3S.json b/resources/profiles/Prusa/process/0.07mm UltraDetail @MK3S.json new file mode 100644 index 0000000000..2b99480459 --- /dev/null +++ b/resources/profiles/Prusa/process/0.07mm UltraDetail @MK3S.json @@ -0,0 +1,40 @@ +{ + "type": "process", + "print_settings_id": "0.07mm UltraDetail @MK3S", + "name": "0.07mm UltraDetail @MK3S", + "from": "system", + "instantiation": "true", + "inherits": "process_common_mk3", + "bottom_shell_layers": "8", + "bridge_acceleration": "300", + "bridge_flow": "0.6", + "bridge_speed": "25", + "gap_infill_speed": "20", + "inner_wall_acceleration": "300", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "30", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "40", + "layer_height": "0.07", + "line_width": "0.45", + "outer_wall_line_width": "0.45", + "outer_wall_speed": "20", + "raft_contact_distance": "0.1", + "small_perimeter_speed": "20", + "sparse_infill_acceleration": "800", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "40", + "support_base_pattern_spacing": "1.5", + "support_bottom_z_distance": "0.1", + "support_interface_speed": "32", + "support_line_width": "0.33", + "support_object_xy_distance": "0.27", + "support_speed": "40", + "support_top_z_distance": "0.1", + "thick_bridges": "1", + "top_shell_layers": "10", + "top_surface_line_width": "0.4", + "top_surface_speed": "30", + "wall_loops": "3" +} diff --git a/resources/profiles/Prusa/process/0.10mm Detail @MK3S.json b/resources/profiles/Prusa/process/0.10mm Detail @MK3S.json new file mode 100644 index 0000000000..b6b4251e7c --- /dev/null +++ b/resources/profiles/Prusa/process/0.10mm Detail @MK3S.json @@ -0,0 +1,40 @@ +{ + "type": "process", + "print_settings_id": "0.10mm Detail @MK3S", + "name": "0.10mm Detail @MK3S", + "from": "system", + "instantiation": "true", + "inherits": "process_common_mk3", + "bottom_shell_layers": "7", + "bridge_acceleration": "800", + "bridge_flow": "1", + "bridge_speed": "20", + "gap_infill_speed": "40", + "inner_wall_acceleration": "600", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "45", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "80", + "layer_height": "0.1", + "line_width": "0.45", + "outer_wall_line_width": "0.45", + "outer_wall_speed": "25", + "raft_contact_distance": "0.15", + "small_perimeter_speed": "25", + "sparse_infill_acceleration": "1000", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "80", + "support_base_pattern_spacing": "2", + "support_bottom_z_distance": "0.17", + "support_interface_speed": "40", + "support_line_width": "0.35", + "support_object_xy_distance": "0.27", + "support_speed": "50", + "support_top_z_distance": "0.17", + "thick_bridges": "0", + "top_shell_layers": "8", + "top_surface_line_width": "0.4", + "top_surface_speed": "40", + "wall_loops": "3" +} diff --git a/resources/profiles/Prusa/process/0.15mm Quality @MK3S.json b/resources/profiles/Prusa/process/0.15mm Quality @MK3S.json new file mode 100644 index 0000000000..b62d8bd5b5 --- /dev/null +++ b/resources/profiles/Prusa/process/0.15mm Quality @MK3S.json @@ -0,0 +1,40 @@ +{ + "type": "process", + "print_settings_id": "0.15mm Quality @MK3S", + "name": "0.15mm Quality @MK3S", + "from": "system", + "instantiation": "true", + "inherits": "process_common_mk3", + "bottom_shell_layers": "5", + "bridge_acceleration": "1000", + "bridge_flow": "1", + "bridge_speed": "25", + "gap_infill_speed": "40", + "inner_wall_acceleration": "800", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "45", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "80", + "layer_height": "0.15", + "line_width": "0.45", + "outer_wall_line_width": "0.45", + "outer_wall_speed": "25", + "raft_contact_distance": "0.2", + "small_perimeter_speed": "25", + "sparse_infill_acceleration": "1000", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "80", + "support_base_pattern_spacing": "2", + "support_bottom_z_distance": "0.2", + "support_interface_speed": "40", + "support_line_width": "0.35", + "support_object_xy_distance": "0.27", + "support_speed": "50", + "support_top_z_distance": "0.2", + "thick_bridges": "0", + "top_shell_layers": "6", + "top_surface_line_width": "0.4", + "top_surface_speed": "40", + "wall_loops": "2" +} diff --git a/resources/profiles/Prusa/process/0.15mm Speed @MK3S.json b/resources/profiles/Prusa/process/0.15mm Speed @MK3S.json new file mode 100644 index 0000000000..e56d6dfb8d --- /dev/null +++ b/resources/profiles/Prusa/process/0.15mm Speed @MK3S.json @@ -0,0 +1,40 @@ +{ + "type": "process", + "print_settings_id": "0.15mm Speed @MK3S", + "name": "0.15mm Speed @MK3S", + "from": "system", + "instantiation": "true", + "inherits": "process_common_mk3", + "bottom_shell_layers": "5", + "bridge_acceleration": "1000", + "bridge_flow": "1", + "bridge_speed": "25", + "gap_infill_speed": "40", + "inner_wall_acceleration": "800", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "60", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "200", + "layer_height": "0.15", + "line_width": "0.45", + "outer_wall_line_width": "0.45", + "outer_wall_speed": "35", + "raft_contact_distance": "0.2", + "small_perimeter_speed": "25", + "sparse_infill_acceleration": "1000", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "200", + "support_base_pattern_spacing": "2", + "support_bottom_z_distance": "0.2", + "support_interface_speed": "40", + "support_line_width": "0.35", + "support_object_xy_distance": "0.27", + "support_speed": "50", + "support_top_z_distance": "0.2", + "thick_bridges": "0", + "top_shell_layers": "6", + "top_surface_line_width": "0.4", + "top_surface_speed": "50", + "wall_loops": "2" +} diff --git a/resources/profiles/Prusa/process/0.20mm Quality @MK3S.json b/resources/profiles/Prusa/process/0.20mm Quality @MK3S.json new file mode 100644 index 0000000000..ce53887663 --- /dev/null +++ b/resources/profiles/Prusa/process/0.20mm Quality @MK3S.json @@ -0,0 +1,41 @@ +{ + "type": "process", + "print_settings_id": "0.20mm Quality @MK3S", + "name": "0.20mm Quality @MK3S", + "from": "system", + "instantiation": "true", + "inherits": "process_common_mk3", + "bottom_shell_layers": "4", + "bridge_acceleration": "1000", + "bridge_flow": "0.95", + "bridge_speed": "25", + "gap_infill_speed": "40", + + "inner_wall_acceleration": "800", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "45", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "80", + "layer_height": "0.2", + "line_width": "0.45", + "outer_wall_line_width": "0.45", + "outer_wall_speed": "25", + "raft_contact_distance": "0.2", + "small_perimeter_speed": "25", + "sparse_infill_acceleration": "1000", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "80", + "support_base_pattern_spacing": "2", + "support_bottom_z_distance": "0.2", + "support_interface_speed": "40", + "support_line_width": "0.35", + "support_object_xy_distance": "0.27", + "support_speed": "50", + "support_top_z_distance": "0.2", + "thick_bridges": "0", + "top_shell_layers": "5", + "top_surface_line_width": "0.4", + "top_surface_speed": "40", + "wall_loops": "2" +} diff --git a/resources/profiles/Prusa/process/0.20mm Speed @MK3S.json b/resources/profiles/Prusa/process/0.20mm Speed @MK3S.json new file mode 100644 index 0000000000..e832d59f37 --- /dev/null +++ b/resources/profiles/Prusa/process/0.20mm Speed @MK3S.json @@ -0,0 +1,41 @@ +{ + "type": "process", + "print_settings_id": "0.20mm Speed @MK3S", + "name": "0.20mm Speed @MK3S", + "from": "system", + "renamed_from":"0.20mm Standard @MK3S", + "instantiation": "true", + "inherits": "process_common_mk3", + "bottom_shell_layers": "4", + "bridge_acceleration": "1000", + "bridge_flow": "0.95", + "bridge_speed": "25", + "gap_infill_speed": "40", + "inner_wall_acceleration": "800", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "60", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "200", + "layer_height": "0.2", + "line_width": "0.45", + "outer_wall_line_width": "0.45", + "outer_wall_speed": "35", + "raft_contact_distance": "0.2", + "small_perimeter_speed": "25", + "sparse_infill_acceleration": "1000", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "200", + "support_base_pattern_spacing": "2", + "support_bottom_z_distance": "0.2", + "support_interface_speed": "40", + "support_line_width": "0.35", + "support_object_xy_distance": "0.27", + "support_speed": "50", + "support_top_z_distance": "0.2", + "thick_bridges": "0", + "top_shell_layers": "5", + "top_surface_line_width": "0.4", + "top_surface_speed": "50", + "wall_loops": "2" +} diff --git a/resources/profiles/Prusa/process/0.30mm Draft @MK3S.json b/resources/profiles/Prusa/process/0.30mm Draft @MK3S.json new file mode 100644 index 0000000000..50fff5aee5 --- /dev/null +++ b/resources/profiles/Prusa/process/0.30mm Draft @MK3S.json @@ -0,0 +1,40 @@ +{ + "type": "process", + "print_settings_id": "0.30mm Draft @MK3S", + "name": "0.30mm Draft @MK3S", + "from": "system", + "instantiation": "true", + "inherits": "process_common_mk3", + "bottom_shell_layers": "3", + "bridge_acceleration": "1000", + "bridge_flow": "0.95", + "bridge_speed": "25", + "gap_infill_speed": "40", + "inner_wall_acceleration": "800", + "inner_wall_line_width": "0.5", + "inner_wall_speed": "50", + "internal_solid_infill_line_width": "0.5", + "internal_solid_infill_speed": "80", + "layer_height": "0.3", + "line_width": "0.5", + "outer_wall_line_width": "0.6", + "outer_wall_speed": "35", + "raft_contact_distance": "0.2", + "small_perimeter_speed": "30", + "sparse_infill_acceleration": "1000", + "sparse_infill_line_width": "0.5", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "85", + "support_base_pattern_spacing": "2", + "support_bottom_z_distance": "0.2", + "support_interface_speed": "36", + "support_line_width": "0.38", + "support_object_xy_distance": "0.36", + "support_speed": "45", + "support_top_z_distance": "0.2", + "thick_bridges": "0", + "top_shell_layers": "4", + "top_surface_line_width": "0.45", + "top_surface_speed": "40", + "wall_loops": "2" +} diff --git a/resources/profiles/Prusa/process/process_common_mk3.json b/resources/profiles/Prusa/process/process_common_mk3.json new file mode 100644 index 0000000000..2bed89d15b --- /dev/null +++ b/resources/profiles/Prusa/process/process_common_mk3.json @@ -0,0 +1,106 @@ +{ + "type": "process", + "name": "process_common_mk3", + "from": "system", + "instantiation": "false", + "bottom_shell_thickness": "0.5", + "bottom_surface_pattern": "monotonic", + "bridge_angle": "0", + "bridge_no_support": "0", + "brim_object_gap": "0.1", + "brim_type": "outer_only", + "brim_width": "0", + "compatible_printers": "", + "compatible_printers_condition": "printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.4", + "default_acceleration": "1000", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "draft_shield": "0", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "extra_perimeters_on_overhangs": "0", + "filename_format": "{input_filename_base}_{layer_height}mm_{printing_filament_types}_{printer_model}_{print_time}.gcode", + "fuzzy_skin": "none", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_thickness": "0.3", + "gcode_comments": "0", + "gcode_label_objects": "1", + "infill_anchor": "2.5", + "infill_anchor_max": "12", + "infill_combination": "1", + "infill_direction": "45", + "infill_wall_overlap": "10%", + "initial_layer_acceleration": "800", + "initial_layer_line_width": "0.42", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "20", + "interface_shells": "0", + "internal_solid_infill_acceleration": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "top", + "is_custom_defined": "1", + "max_travel_detour_distance": "0", + "min_bead_width": "85%", + "min_feature_size": "25%", + "minimum_sparse_infill_area": "0", + "notes": [""], + "ooze_prevention": "0", + "outer_wall_acceleration": "0", + "post_process": [""], + "prime_tower_brim_width": "2", + "prime_tower_width": "60", + "print_sequence": "by layer", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "3", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "0", + "resolution": "0", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "3", + "skirt_loops": "1", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "sparse_infill_density": "15%", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "rectilinear", + "support_interface_bottom_layers": "0", + "support_interface_loop_pattern": "0", + "support_interface_pattern": "rectilinear", + "support_interface_spacing": "0.2", + "support_interface_top_layers": "2", + "support_on_build_plate_only": "0", + "support_style": "grid", + "support_threshold_angle": "50", + "support_type": "normal(auto)", + "top_shell_thickness": "0.7", + "top_surface_acceleration": "0", + "top_surface_pattern": "monotonicline", + "travel_acceleration": "0", + "travel_speed": "180", + "travel_speed_z": "12", + "tree_support_angle_slow": "30", + "tree_support_branch_angle": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "3", + "tree_support_branch_diameter_double_wall": "3", + "tree_support_tip_diameter": "0.6", + "tree_support_top_rate": "30%", + "version": "1.6.0.0", + "wall_distribution_count": "1", + "wall_generator": "arachne", + "wall_infill_order": "infill/outer wall/inner wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_tower_no_sparse_layers": "0", + "xy_contour_compensation": "0" +} diff --git a/resources/web/orca/missing_connection.html b/resources/web/orca/missing_connection.html index a66ea45613..64f14dfea5 100644 --- a/resources/web/orca/missing_connection.html +++ b/resources/web/orca/missing_connection.html @@ -14,8 +14,8 @@
-

Printer Connection

-

Please set up your printer connection to view the device.

+

Printer Connection

+

Please set up your printer connection to view the device.

Printer connection setup demonstration
diff --git a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp index ae0fcb36ec..d4036c1096 100644 --- a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp +++ b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp @@ -37,8 +37,9 @@ struct NfpPConfig { BOTTOM_RIGHT, TOP_LEFT, TOP_RIGHT, - DONT_ALIGN //!> Warning: parts may end up outside the bin with the + DONT_ALIGN, //!> Warning: parts may end up outside the bin with the //! default object function. + USER_DEFINED }; /// Which angles to try out for better results. @@ -50,6 +51,8 @@ struct NfpPConfig { /// Where to start putting objects in the bin. Alignment starting_point; + TPoint best_object_pos; + /** * @brief A function object representing the fitting function in the * placement optimization process. (Optional) @@ -1093,6 +1096,11 @@ private: cb = bbin.maxCorner(); break; } + case Config::Alignment::USER_DEFINED: { + ci = bb.center(); + cb = config_.best_object_pos; + break; + } default: ; // DONT_ALIGN } @@ -1115,11 +1123,9 @@ private: return; { // find a best position inside NFP of fixed items (excluded regions), so the center of pile is cloest to bed center RawShape objs_convex_hull = sl::convexHull(objs); - for (const Item &item : config_.m_excluded_regions) { excludes.push_back(item.transformedShape()); } for (const Item &item : items_) { if (item.isFixed()) { - if (!(item.is_wipe_tower && !need_wipe_tower)) - excludes.push_back(item.transformedShape()); + excludes.push_back(item.transformedShape()); } } diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index 9b4f493efb..3ea4955fe8 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -80,20 +80,196 @@ using ItemGroup = std::vector>; const double BIG_ITEM_TRESHOLD = 0.02; #define VITRIFY_TEMP_DIFF_THRSH 15 // bed temp can be higher than vitrify temp, but not higher than this thresh +void update_arrange_params(ArrangeParams& params, const DynamicPrintConfig& print_cfg, const ArrangePolygons& selected) +{ + double skirt_distance = get_real_skirt_dist(print_cfg); + // Note: skirt_distance is now defined between outermost brim and skirt, not the object and skirt. + // So we can't do max but do adding instead. + params.brim_skirt_distance = skirt_distance; + params.bed_shrink_x = params.brim_skirt_distance; + params.bed_shrink_y = params.brim_skirt_distance; + // for sequential print, we need to inflate the bed because cleareance_radius is so large + if (params.is_seq_print) { + float shift_dist = params.cleareance_radius / 2 - 5; + params.bed_shrink_x -= shift_dist; + params.bed_shrink_y -= shift_dist; + } +} + +void update_selected_items_inflation(ArrangePolygons& selected, const DynamicPrintConfig* print_cfg, ArrangeParams& params) { + // do not inflate brim_width. Objects are allowed to have overlapped brim. + Points bedpts = get_shrink_bedpts(print_cfg, params); + BoundingBox bedbb = Polygon(bedpts).bounding_box(); + // set obj distance for auto seq_print + if (params.min_obj_distance == 0 && params.is_seq_print) + params.min_obj_distance = scaled(params.cleareance_radius + 0.001); + double brim_max = 0; + bool plate_has_tree_support = false; + std::for_each(selected.begin(), selected.end(), [&](ArrangePolygon& ap) { + brim_max = std::max(brim_max, ap.brim_width); + if (ap.has_tree_support) plate_has_tree_support = true; }); + std::for_each(selected.begin(), selected.end(), [&](ArrangePolygon& ap) { + // 1. if user input a distance, use it + // 2. if there is an object with tree support, all objects use the max tree branch radius (brim_max=branch diameter) + // 3. otherwise, use each object's own brim width + ap.inflation = params.min_obj_distance != 0 ? params.min_obj_distance / 2 : + plate_has_tree_support ? scaled(brim_max / 2) : scaled(ap.brim_width); + BoundingBox apbb = ap.poly.contour.bounding_box(); + auto diffx = bedbb.size().x() - apbb.size().x() - 5; + auto diffy = bedbb.size().y() - apbb.size().y() - 5; + if (diffx > 0 && diffy > 0) { + auto min_diff = std::min(diffx, diffy); + ap.inflation = std::min(min_diff / 2, ap.inflation); + } + }); +} + +void update_unselected_items_inflation(ArrangePolygons& unselected, const DynamicPrintConfig* print_cfg, const ArrangeParams& params) +{ + if (params.is_seq_print) { + float shift_dist = params.cleareance_radius / 2 - 5; + // dont forget to move the excluded region + for (auto& region : unselected) { + if (region.is_virt_object) region.poly.translate(-scaled(shift_dist), -scaled(shift_dist)); + } + } + // For occulusion regions, inflation should be larger to prevent genrating brim on them. + // However, extrusion cali regions are exceptional, since we can allow brim overlaps them. + // 屏蔽区域只需要膨胀brim宽度,防止brim长过去;挤出标定区域不需要膨胀,brim可以长过去。 + // 以前我们认为还需要膨胀clearance_radius/2,这其实是不需要的,因为这些区域并不会真的摆放物体, + // 其他物体的膨胀轮廓是可以跟它们重叠的。 + double scaled_exclusion_gap = scale_(1); + std::for_each(unselected.begin(), unselected.end(), + [&](auto& ap) { ap.inflation = !ap.is_virt_object ? (params.min_obj_distance == 0 ? scaled(ap.brim_width) : params.min_obj_distance / 2) + : (ap.is_extrusion_cali_object ? 0 : scaled_exclusion_gap); }); +} + +void update_selected_items_axis_align(ArrangePolygons& selected, const DynamicPrintConfig* print_cfg, const ArrangeParams& params) +{ + // now only need to consider "Align to x axis" + if (!params.align_to_y_axis) + return; + + for (ArrangePolygon& ap : selected) { + bool validResult = false; + double angle = 0.0; + { + const auto& pts = ap.transformed_poly().contour; + int lpt = pts.size(); + double a00 = 0, a10 = 0, a01 = 0, a20 = 0, a11 = 0, a02 = 0, a30 = 0, a21 = 0, a12 = 0, a03 = 0; + double xi, yi, xi2, yi2, xi_1, yi_1, xi_12, yi_12, dxy, xii_1, yii_1; + xi_1 = pts.back().x(); + yi_1 = pts.back().y(); + + xi_12 = xi_1 * xi_1; + yi_12 = yi_1 * yi_1; + + for (int i = 0; i < lpt; i++) { + xi = pts[i].x(); + yi = pts[i].y(); + + xi2 = xi * xi; + yi2 = yi * yi; + dxy = xi_1 * yi - xi * yi_1; + xii_1 = xi_1 + xi; + yii_1 = yi_1 + yi; + + a00 += dxy; + a10 += dxy * xii_1; + a01 += dxy * yii_1; + a20 += dxy * (xi_1 * xii_1 + xi2); + a11 += dxy * (xi_1 * (yii_1 + yi_1) + xi * (yii_1 + yi)); + a02 += dxy * (yi_1 * yii_1 + yi2); + a30 += dxy * xii_1 * (xi_12 + xi2); + a03 += dxy * yii_1 * (yi_12 + yi2); + a21 += dxy * (xi_12 * (3 * yi_1 + yi) + 2 * xi * xi_1 * yii_1 + xi2 * (yi_1 + 3 * yi)); + a12 += dxy * (yi_12 * (3 * xi_1 + xi) + 2 * yi * yi_1 * xii_1 + yi2 * (xi_1 + 3 * xi)); + xi_1 = xi; + yi_1 = yi; + xi_12 = xi2; + yi_12 = yi2; + } + + if (std::abs(a00) > EPSILON) { + double db1_2, db1_6, db1_12, db1_24, db1_20, db1_60; + double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03; + if (a00 > 0) { + db1_2 = 0.5; + db1_6 = 0.16666666666666666666666666666667; + db1_12 = 0.083333333333333333333333333333333; + db1_24 = 0.041666666666666666666666666666667; + db1_20 = 0.05; + db1_60 = 0.016666666666666666666666666666667; + } + else { + db1_2 = -0.5; + db1_6 = -0.16666666666666666666666666666667; + db1_12 = -0.083333333333333333333333333333333; + db1_24 = -0.041666666666666666666666666666667; + db1_20 = -0.05; + db1_60 = -0.016666666666666666666666666666667; + } + m00 = a00 * db1_2; + m10 = a10 * db1_6; + m01 = a01 * db1_6; + m20 = a20 * db1_12; + m11 = a11 * db1_24; + m02 = a02 * db1_12; + m30 = a30 * db1_20; + m21 = a21 * db1_60; + m12 = a12 * db1_60; + m03 = a03 * db1_20; + + double cx = m10 / m00; + double cy = m01 / m00; + + double a = m20 / m00 - cx * cx; + double b = m11 / m00 - cx * cy; + double c = m02 / m00 - cy * cy; + + //if a and c are close, there is no dominant axis, then do not rotate + if (std::abs(a) < 1.5*std::abs(c) && std::abs(c) < 1.5*std::abs(a)) { + validResult = false; + } + else { + angle = std::atan2(2 * b, (a - c)) / 2; + validResult = true; + } + } + } + if (validResult) { ap.rotation += (PI / 2 - angle); } + } +} + +//it will bed accurate after call update_params +Points get_shrink_bedpts(const DynamicPrintConfig* print_cfg, const ArrangeParams& params) +{ + Points bedpts = get_bed_shape(*print_cfg); + // shrink bed by moving to center by dist + auto shrinkFun = [](Points& bedpts, double dist, int direction) { +#define SGN(x) ((x) >= 0 ? 1 : -1) + Point center = Polygon(bedpts).bounding_box().center(); + for (auto& pt : bedpts) pt[direction] += dist * SGN(center[direction] - pt[direction]); + }; + shrinkFun(bedpts, scaled(params.bed_shrink_x), 0); + shrinkFun(bedpts, scaled(params.bed_shrink_y), 1); + return bedpts; +} + // Fill in the placer algorithm configuration with values carefully chosen for // Slic3r. template void fill_config(PConf& pcfg, const ArrangeParams ¶ms) { - - if (params.is_seq_print) { - // Start placing the items from the center of the print bed - pcfg.starting_point = PConf::Alignment::BOTTOM_LEFT; - } - else { - // Start placing the items from the center of the print bed - pcfg.starting_point = PConf::Alignment::TOP_RIGHT; - } - + + if (params.is_seq_print) { + // Start placing the items from the center of the print bed + pcfg.starting_point = PConf::Alignment::BOTTOM_LEFT; + } + else { + // Start placing the items from the center of the print bed + pcfg.starting_point = PConf::Alignment::TOP_RIGHT; + } + if (params.do_final_align) { // Align the arranged pile into the center of the bin pcfg.alignment = PConf::Alignment::CENTER; @@ -495,6 +671,14 @@ public: m_norm = std::sqrt(m_bin_area); fill_config(m_pconf, params); this->params = params; + + // if best object center is not bed center, specify starting point here + if (std::abs(this->params.align_center.x() - 0.5) > 0.001 || std::abs(this->params.align_center.y() - 0.5) > 0.001) { + auto binbb = sl::boundingBox(m_bin); + m_pconf.best_object_pos = binbb.minCorner() + Point{ binbb.width() * this->params.align_center.x(), binbb.height() * this->params.align_center.y() }; + m_pconf.alignment = PConfig::Alignment::USER_DEFINED; + } + for (auto& region : m_pconf.m_excluded_regions) { Box bb = region.boundingBox(); m_excluded_and_extruCali_regions.emplace_back(bb); @@ -551,6 +735,7 @@ public: for (Item itm : items) { if (itm.is_wipe_tower) { starting_point = itm.boundingBox().center(); + BOOST_LOG_TRIVIAL(debug) << "arrange we have wipe tower, change starting point to: " << starting_point; break; } } @@ -575,15 +760,13 @@ public: if (on_packed) on_packed(ap); BOOST_LOG_TRIVIAL(debug) << "arrange " + last_packed.name + " succeed!" - << ", plate id=" << ap.bed_idx; + << ", plate id=" << ap.bed_idx << ", pos=" << last_packed.translation(); } }); - if (progressind) { - m_pck.unfitIndicator([this, progressind](std::string name) { - BOOST_LOG_TRIVIAL(debug) << "arrange not fit: " + name; + m_pck.unfitIndicator([this](std::string name) { + BOOST_LOG_TRIVIAL(debug) << "arrange progress: " + name; }); - } if (stopcond) m_pck.stopCondition(stopcond); diff --git a/src/libslic3r/Arrange.hpp b/src/libslic3r/Arrange.hpp index a9b7cc4842..352ca846e6 100644 --- a/src/libslic3r/Arrange.hpp +++ b/src/libslic3r/Arrange.hpp @@ -2,7 +2,7 @@ #define ARRANGE_HPP #include "ExPolygon.hpp" - +#include "PrintConfig.hpp" namespace Slic3r { class BoundingBox; @@ -53,7 +53,8 @@ struct ArrangePolygon { int locked_plate{ -1 }; bool is_virt_object{ false }; bool is_extrusion_cali_object{ false }; - bool is_wipe_tower{false}; + bool is_wipe_tower{ false }; + bool has_tree_support{false}; //BBS: add row/col for sudoku-style layout int row{0}; int col{0}; @@ -120,6 +121,7 @@ struct ArrangeParams { bool allow_multi_materials_on_same_plate = true; bool avoid_extrusion_cali_region = true; bool is_seq_print = false; + bool align_to_y_axis = false; float bed_shrink_x = 0; float bed_shrink_y = 0; float brim_skirt_distance = 0; @@ -127,6 +129,7 @@ struct ArrangeParams { float clearance_height_to_lid = 0; float cleareance_radius = 0; float printable_height = 256.0; + Vec2d align_center{ 0.5,0.5 }; ArrangePolygons excluded_regions; // regions cant't be used ArrangePolygons nonprefered_regions; // regions can be used but not prefered @@ -144,8 +147,39 @@ struct ArrangeParams { ArrangeParams() = default; explicit ArrangeParams(coord_t md) : min_obj_distance(md) {} + // to json format + std::string to_json() const{ + std::string ret = "{"; + ret += "\"min_obj_distance\":" + std::to_string(min_obj_distance) + ","; + ret += "\"accuracy\":" + std::to_string(accuracy) + ","; + ret += "\"parallel\":" + std::to_string(parallel) + ","; + ret += "\"allow_rotations\":" + std::to_string(allow_rotations) + ","; + ret += "\"do_final_align\":" + std::to_string(do_final_align) + ","; + ret += "\"allow_multi_materials_on_same_plate\":" + std::to_string(allow_multi_materials_on_same_plate) + ","; + ret += "\"avoid_extrusion_cali_region\":" + std::to_string(avoid_extrusion_cali_region) + ","; + ret += "\"is_seq_print\":" + std::to_string(is_seq_print) + ","; + ret += "\"bed_shrink_x\":" + std::to_string(bed_shrink_x) + ","; + ret += "\"bed_shrink_y\":" + std::to_string(bed_shrink_y) + ","; + ret += "\"brim_skirt_distance\":" + std::to_string(brim_skirt_distance) + ","; + ret += "\"clearance_height_to_rod\":" + std::to_string(clearance_height_to_rod) + ","; + ret += "\"clearance_height_to_lid\":" + std::to_string(clearance_height_to_lid) + ","; + ret += "\"cleareance_radius\":" + std::to_string(cleareance_radius) + ","; + ret += "\"printable_height\":" + std::to_string(printable_height) + ","; + return ret; + } + }; +void update_arrange_params(ArrangeParams& params, const DynamicPrintConfig& print_cfg, const ArrangePolygons& selected); + +void update_selected_items_inflation(ArrangePolygons& selected, const DynamicPrintConfig* print_cfg, ArrangeParams& params); + +void update_unselected_items_inflation(ArrangePolygons& unselected, const DynamicPrintConfig* print_cfg, const ArrangeParams& params); + +void update_selected_items_axis_align(ArrangePolygons& selected, const DynamicPrintConfig* print_cfg, const ArrangeParams& params); + +Points get_shrink_bedpts(const DynamicPrintConfig* print_cfg, const ArrangeParams& params); + /** * \brief Arranges the input polygons. * diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 64c1f18008..3365a3e6be 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -416,6 +416,8 @@ set(lisbslic3r_sources if (APPLE) list(APPEND lisbslic3r_sources MacUtils.mm + Format/ModelIO.hpp + Format/ModelIO.mm ) endif () @@ -532,6 +534,12 @@ if(NOT WIN32) endif() endif() +if (APPLE) + find_library(FOUNDATION Foundation REQUIRED) + find_library(MODELIO ModelIO REQUIRED) + target_link_libraries(libslic3r ${FOUNDATION} ${MODELIO}) +endif () + if (TARGET OpenVDB::openvdb) target_link_libraries(libslic3r OpenVDB::openvdb) endif() diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index 8522d59657..439eb9779c 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -786,6 +786,7 @@ int ConfigBase::load_from_json(const std::string &file, ConfigSubstitutionContex try { boost::nowide::ifstream ifs(file); ifs >> j; + ifs.close(); const ConfigDef* config_def = this->def(); if (config_def == nullptr) { diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index fe9c0782dc..52c35e9236 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -534,23 +534,26 @@ public: } return false; } - size_t i = 0; + size_t cnt = std::min(this->size(), rhs_vec->size()); - bool modified = false; - for (; i < cnt; ++ i) - if (! rhs_vec->is_nil(i) && this->values[i] != rhs_vec->values[i]) { - this->values[i] = rhs_vec->values[i]; - modified = true; - } - for (; i < rhs_vec->size(); ++ i) - if (! rhs_vec->is_nil(i)) { - if (this->values.empty()) - this->values.resize(i + 1); - else - this->values.resize(i + 1, this->values.front()); - this->values[i] = rhs_vec->values[i]; - modified = true; - } + if (cnt < 1) + return false; + + if (this->values.empty()) + this->values.resize(rhs_vec->size()); + else + this->values.resize(rhs_vec->size(), this->values.front()); + + bool modified = false; + auto default_value = this->values[0]; + for (size_t i = 0; i < rhs_vec->size(); ++i) { + if (!rhs_vec->is_nil(i)) { + this->values[i] = rhs_vec->values[i]; + modified = true; + } else { + this->values[i] = default_value; + } + } return modified; } diff --git a/src/libslic3r/CustomGCode.hpp b/src/libslic3r/CustomGCode.hpp index 5b21bb45ea..7d8c7d9982 100644 --- a/src/libslic3r/CustomGCode.hpp +++ b/src/libslic3r/CustomGCode.hpp @@ -3,6 +3,7 @@ #include #include +#include namespace Slic3r { @@ -43,6 +44,24 @@ struct Item std::string extra; // this field is used for the extra data like : // - G-code text for the Type::Custom // - message text for the Type::PausePrint + void from_json(const nlohmann::json& j) { + std::string type_str; + j.at("type").get_to(type_str); + std::map str2type = { {"ColorChange", ColorChange }, + {"PausePrint",PausePrint}, + {"ToolChange",ToolChange}, + {"Template",Template}, + {"Custom",Custom}, + {"Unknown",Unknown} }; + type = Unknown; + if (str2type.find(type_str) != str2type.end()) + type = str2type[type_str]; + j.at("print_z").get_to(print_z); + j.at("color").get_to(color); + j.at("extruder").get_to(extruder); + if(j.contains("extra")) + j.at("extra").get_to(extra); + } }; enum Mode @@ -71,6 +90,24 @@ struct Info (rhs.gcodes == this->gcodes ); } bool operator!=(const Info& rhs) const { return !(*this == rhs); } + + void from_json(const nlohmann::json& j) { + std::string mode_str; + if (j.contains("mode")) + j.at("mode").get_to(mode_str); + if (mode_str == "SingleExtruder") mode = SingleExtruder; + else if (mode_str == "MultiAsSingle") mode = MultiAsSingle; + else if (mode_str == "MultiExtruder") mode = MultiExtruder; + else mode = Undef; + + auto j_gcodes = j.at("gcodes"); + gcodes.reserve(j_gcodes.size()); + for (auto& jj : j_gcodes) { + Item item; + item.from_json(jj); + gcodes.push_back(item); + } + } }; // If loaded configuration has a "colorprint_heights" option (if it was imported from older Slicer), diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index f05ef935a7..dd768e1867 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -587,7 +587,7 @@ Polylines Layer::generate_sparse_infill_polylines_for_anchoring(FillAdaptive::Oc f->layer_id = this->id() - this->object()->get_layer(0)->id(); // We need to subtract raft layers. f->z = this->print_z; f->angle = surface_fill.params.angle; - // f->adapt_fill_octree = (surface_fill.params.pattern == ipSupportCubic) ? support_fill_octree : adaptive_fill_octree; + f->adapt_fill_octree = (surface_fill.params.pattern == ipSupportCubic) ? support_fill_octree : adaptive_fill_octree; // TODO: f->print_config = &this->object()->print()->config(); // TODO: f->print_object_config = &this->object()->config(); @@ -732,7 +732,7 @@ void Layer::make_ironing() ironing_params.line_spacing = config.ironing_spacing; ironing_params.height = default_layer_height * 0.01 * config.ironing_flow; ironing_params.speed = config.ironing_speed; - ironing_params.angle = config.infill_direction * M_PI / 180.; + ironing_params.angle = (config.ironing_angle >= 0 ? config.ironing_angle : config.infill_direction) * M_PI / 180.; ironing_params.pattern = config.ironing_pattern; ironing_params.layerm = layerm; by_extruder.emplace_back(ironing_params); @@ -786,7 +786,7 @@ void Layer::make_ironing() // Check whether there is any non-solid hole in the regions. bool internal_infill_solid = region_config.sparse_infill_density.value > 95.; for (const Surface &surface : ironing_params.layerm->fill_surfaces.surfaces) - if ((! internal_infill_solid && surface.surface_type == stInternal) || surface.surface_type == stInternalBridge || surface.surface_type == stInternalVoid) { + if ((!internal_infill_solid && surface.surface_type == stInternal) || surface.surface_type == stInternalBridge || surface.surface_type == stInternalVoid) { // Some fill region is not quite solid. Don't iron over the whole surface. iron_completely = false; break; @@ -798,7 +798,7 @@ void Layer::make_ironing() polygons_append(polys, surface.expolygon); } else { for (const Surface &surface : ironing_params.layerm->slices.surfaces) - if (surface.surface_type == stTop || (iron_everything && surface.surface_type == stBottom)) + if ((surface.surface_type == stTop && region_config.top_shell_layers > 0) || (iron_everything && surface.surface_type == stBottom && region_config.bottom_shell_layers > 0)) // stBottomBridge is not being ironed on purpose, as it would likely destroy the bridges. polygons_append(polys, surface.expolygon); } diff --git a/src/libslic3r/Format/ModelIO.hpp b/src/libslic3r/Format/ModelIO.hpp new file mode 100644 index 0000000000..a0751f2d96 --- /dev/null +++ b/src/libslic3r/Format/ModelIO.hpp @@ -0,0 +1,19 @@ +#include + +namespace Slic3r { + /** + * Uses ModelIO to convert supported model types to a temporary STL + * that can then be consumed by the existing STL loader + * @param input_file The File to load + * @return Path to the temporary file, or an empty string if conversion failed + */ + std::string make_temp_stl_with_modelio(const std::string &input_file); + + /** + * Convenience function to delete the file. + * No return value since success isn't required + * @param temp_file File path to delete + */ + void delete_temp_file(const std::string &temp_file); +} + diff --git a/src/libslic3r/Format/ModelIO.mm b/src/libslic3r/Format/ModelIO.mm new file mode 100644 index 0000000000..7d1d4e726b --- /dev/null +++ b/src/libslic3r/Format/ModelIO.mm @@ -0,0 +1,27 @@ +#include "ModelIO.hpp" +#import + +namespace Slic3r { + + std::string make_temp_stl_with_modelio(const std::string &input_file) + { + NSURL *input_url = [NSURL fileURLWithPath:[NSString stringWithUTF8String:input_file.c_str()]]; + MDLAsset *asset = [[MDLAsset alloc] initWithURL:input_url]; + + NSString *tmp_file_name = [[[NSUUID UUID] UUIDString] stringByAppendingPathExtension:@"stl"]; + NSURL *tmp_file_url = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:tmp_file_name]]; + + if ([asset exportAssetToURL:tmp_file_url]) { + std::string output_file = std::string([[tmp_file_url path] UTF8String]); + return output_file; + } + + return std::string(); + } + void delete_temp_file(const std::string &temp_file) + { + NSString *file_path = [NSString stringWithUTF8String:temp_file.c_str()]; + [[NSFileManager defaultManager] removeItemAtPath:file_path error:NULL]; + } + +} // namespace Slic3r \ No newline at end of file diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index c2f24d782b..8709e7793f 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -116,6 +116,7 @@ const std::string BBL_DESIGNER_USER_ID_TAG = "DesignerUserId"; const std::string BBL_DESIGNER_COVER_FILE_TAG = "DesignerCover"; const std::string BBL_DESCRIPTION_TAG = "Description"; const std::string BBL_COPYRIGHT_TAG = "CopyRight"; +const std::string BBL_COPYRIGHT_NORMATIVE_TAG = "Copyright"; const std::string BBL_LICENSE_TAG = "License"; const std::string BBL_REGION_TAG = "Region"; const std::string BBL_MODIFICATION_TAG = "ModificationDate"; @@ -226,11 +227,14 @@ static constexpr const char* HIT_NORMAL_ATTR = "hit_normal"; // BBS: encrypt static constexpr const char* RELATIONSHIP_TAG = "Relationship"; static constexpr const char* PID_ATTR = "pid"; -static constexpr const char* PUUID_ATTR = "p:uuid"; +static constexpr const char* PUUID_ATTR = "p:UUID"; +static constexpr const char* PUUID_LOWER_ATTR = "p:uuid"; static constexpr const char* PPATH_ATTR = "p:path"; static constexpr const char *OBJECT_UUID_SUFFIX = "-61cb-4c03-9d28-80fed5dfa1dc"; static constexpr const char *OBJECT_UUID_SUFFIX2 = "-71cb-4c03-9d28-80fed5dfa1dc"; -static constexpr const char* BUILD_UUID = "d8eb061-b1ec-4553-aec9-835e5b724bb4"; +static constexpr const char *SUB_OBJECT_UUID_SUFFIX = "-81cb-4c03-9d28-80fed5dfa1dc"; +static constexpr const char *COMPONENT_UUID_SUFFIX = "-b206-40ff-9872-83e8017abed1"; +static constexpr const char* BUILD_UUID = "2c7c17d8-22b5-4d84-8835-1976022ea369"; static constexpr const char* BUILD_UUID_SUFFIX = "-b1ec-4553-aec9-835e5b724bb4"; static constexpr const char* TARGET_ATTR = "Target"; static constexpr const char* RELS_TYPE_ATTR = "Type"; @@ -281,6 +285,8 @@ static constexpr const char* PLATER_NAME_ATTR = "plater_name"; static constexpr const char* PLATE_IDX_ATTR = "index"; static constexpr const char* SLICE_PREDICTION_ATTR = "prediction"; static constexpr const char* SLICE_WEIGHT_ATTR = "weight"; +static constexpr const char* TIMELAPSE_TYPE_ATTR = "timelapse_type"; +static constexpr const char* TIMELAPSE_ERROR_CODE_ATTR = "timelapse_error_code"; static constexpr const char* OUTSIDE_ATTR = "outside"; static constexpr const char* SUPPORT_USED_ATTR = "support_used"; static constexpr const char* LABEL_OBJECT_ENABLED_ATTR = "label_object_enabled"; @@ -1679,7 +1685,12 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) std::string name(stat.m_filename); std::replace(name.begin(), name.end(), '\\', '/'); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format("extract %1%th file %2%, total=%3%\n")%(i+1)%name%num_entries; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format("extract %1%th file %2%, total=%3%")%(i+1)%name%num_entries; + + if (name.find("/../") != std::string::npos) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", find file path including /../, not valid, skip it\n"); + continue; + } if (boost::algorithm::iequals(name, BBS_LAYER_HEIGHTS_PROFILE_FILE)) { // extract slic3r layer heights profile file @@ -1763,6 +1774,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) //BBS parsing pattern config files _extract_file_from_archive(archive, stat); } + else { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format(", %1% skipped, already parsed or a directory or not supported\n")%name; + } } } @@ -2175,7 +2189,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } } char error_buf[1024]; - ::sprintf(error_buf, "File %s not found from archive", path.c_str()); + ::snprintf(error_buf, 1024, "File %s not found from archive", path.c_str()); add_error(error_buf); return false; } @@ -2234,7 +2248,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (!XML_ParseBuffer(m_xml_parser, (int)stat.m_uncomp_size, 1)) { char error_buf[1024]; - ::sprintf(error_buf, "Error (%s) while parsing xml file at line %d", XML_ErrorString(XML_GetErrorCode(m_xml_parser)), (int)XML_GetCurrentLineNumber(m_xml_parser)); + ::snprintf(error_buf, 1024, "Error (%s) while parsing xml file at line %d", XML_ErrorString(XML_GetErrorCode(m_xml_parser)), (int)XML_GetCurrentLineNumber(m_xml_parser)); add_error(error_buf); return false; } @@ -2280,7 +2294,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) CallbackData* data = (CallbackData*)pOpaque; if (!XML_Parse(data->parser, (const char*)pBuf, (int)n, (file_ofs + n == data->stat.m_uncomp_size) ? 1 : 0) || data->importer.parse_error()) { char error_buf[1024]; - ::sprintf(error_buf, "Error (%s) while parsing '%s' at line %d", data->importer.parse_error_message(), data->stat.m_filename, (int)XML_GetCurrentLineNumber(data->parser)); + ::snprintf(error_buf, 1024, "Error (%s) while parsing '%s' at line %d", data->importer.parse_error_message(), data->stat.m_filename, (int)XML_GetCurrentLineNumber(data->parser)); throw Slic3r::FileIOError(error_buf); } return n; @@ -2501,6 +2515,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) void _BBS_3MF_Importer::_extract_auxiliary_file_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, Model& model) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", stat.m_uncomp_size is %1%")%stat.m_uncomp_size; if (stat.m_uncomp_size > 0) { std::string dest_file; if (stat.m_is_utf8) { @@ -2518,6 +2533,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) dest_file = dest_file.substr(found + AUXILIARY_STR_LEN); else return; + if (dest_file.find('/') != std::string::npos) { boost::filesystem::path src_path = boost::filesystem::path(dest_file); boost::filesystem::path parent_path = src_path.parent_path(); @@ -3175,6 +3191,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) m_curr_object->name = bbs_get_attribute_value_string(attributes, num_attributes, NAME_ATTR); m_curr_object->uuid = bbs_get_attribute_value_string(attributes, num_attributes, PUUID_ATTR); + if (m_curr_object->uuid.empty()) { + m_curr_object->uuid = bbs_get_attribute_value_string(attributes, num_attributes, PUUID_LOWER_ATTR); + } m_curr_object->pid = bbs_get_attribute_value_int(attributes, num_attributes, PID_ATTR); } @@ -3563,7 +3582,10 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found license = " << m_curr_characters; model_info.license = xml_unescape(m_curr_characters); } else if (m_curr_metadata_name == BBL_COPYRIGHT_TAG) { - BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found copyright = " << m_curr_characters; + BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found CopyRight = " << m_curr_characters; + model_info.copyright = xml_unescape(m_curr_characters); + } else if (m_curr_metadata_name == BBL_COPYRIGHT_NORMATIVE_TAG) { + BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found Copyright = " << m_curr_characters; model_info.copyright = xml_unescape(m_curr_characters); } else if (m_curr_metadata_name == BBL_REGION_TAG) { BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found region = " << m_curr_characters; @@ -4027,7 +4049,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) { if (!m_curr_plater) { - add_error("don't find plater created before"); + add_error("_handle_end_config_plater: don't find plate created before"); return false; } m_plater_data.emplace(m_curr_plater->plate_index, m_curr_plater); @@ -4039,7 +4061,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) { if (!m_curr_plater) { - add_error("don't find plater created before"); + add_error("_handle_start_config_plater_instance: don't find plate created before"); return false; } @@ -4051,7 +4073,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) { if (!m_curr_plater) { - add_error("don't find plater created before"); + add_error("_handle_end_config_plater_instance: don't find plate created before"); return false; } if ((m_curr_instance.object_id == -1) || (m_curr_instance.instance_id == -1)) @@ -4430,6 +4452,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) volume->supported_facets.shrink_to_fit(); volume->seam_facets.shrink_to_fit(); volume->mmu_segmentation_facets.shrink_to_fit(); + volume->mmu_segmentation_facets.touch(); } volume->set_type(volume_data->part_type); @@ -4709,6 +4732,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) current_object->name = bbs_get_attribute_value_string(attributes, num_attributes, NAME_ATTR); current_object->uuid = bbs_get_attribute_value_string(attributes, num_attributes, PUUID_ATTR); + if (current_object->uuid.empty()) { + current_object->uuid = bbs_get_attribute_value_string(attributes, num_attributes, PUUID_LOWER_ATTR); + } current_object->pid = bbs_get_attribute_value_int(attributes, num_attributes, PID_ATTR); } @@ -5096,7 +5122,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) CallbackData* data = (CallbackData*)pOpaque; if (!XML_Parse(data->parser, (const char*)pBuf, (int)n, (file_ofs + n == data->stat.m_uncomp_size) ? 1 : 0) || data->importer.object_parse_error()) { char error_buf[1024]; - ::sprintf(error_buf, "Error (%s) while parsing '%s' at line %d", data->importer.object_parse_error_message(), data->stat.m_filename, (int)XML_GetCurrentLineNumber(data->parser)); + ::snprintf(error_buf, 1024, "Error (%s) while parsing '%s' at line %d", data->importer.object_parse_error_message(), data->stat.m_filename, (int)XML_GetCurrentLineNumber(data->parser)); throw Slic3r::FileIOError(error_buf); } return n; @@ -5219,7 +5245,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool _add_content_types_file_to_archive(mz_zip_archive& archive); - bool _add_thumbnail_file_to_archive(mz_zip_archive& archive, const ThumbnailData& thumbnail_data, const char* local_path, int index); + bool _add_thumbnail_file_to_archive(mz_zip_archive& archive, const ThumbnailData& thumbnail_data, const char* local_path, int index, bool generate_small_thumbnail = false); bool _add_calibration_file_to_archive(mz_zip_archive& archive, const ThumbnailData& thumbnail_data, int index); bool _add_bbox_file_to_archive(mz_zip_archive& archive, const PlateBBoxData& id_bboxes, int index); bool _add_relationships_file_to_archive(mz_zip_archive & archive, @@ -5245,7 +5271,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool _add_project_embedded_presets_to_archive(mz_zip_archive& archive, Model& model, std::vector project_presets); bool _add_model_config_file_to_archive(mz_zip_archive& archive, const Model& model, PlateDataPtrs& plate_data_list, const ObjectToObjectDataMap &objects_data, int export_plate_idx = -1, bool save_gcode = true, bool use_loaded_id = false); bool _add_cut_information_file_to_archive(mz_zip_archive &archive, Model &model); - bool _add_slice_info_config_file_to_archive(mz_zip_archive &archive, const Model &model, PlateDataPtrs &plate_data_list, const ObjectToObjectDataMap &objects_data); + bool _add_slice_info_config_file_to_archive(mz_zip_archive &archive, const Model &model, PlateDataPtrs &plate_data_list, const ObjectToObjectDataMap &objects_data, const DynamicPrintConfig& config); bool _add_gcode_file_to_archive(mz_zip_archive& archive, const Model& model, PlateDataPtrs& plate_data_list, Export3mfProgressFn proFn = nullptr); bool _add_custom_gcode_per_print_z_file_to_archive(mz_zip_archive& archive, Model& model, const DynamicPrintConfig* config); bool _add_auxiliary_dir_to_archive(mz_zip_archive &archive, const std::string &aux_dir, PackingTemporaryData &data); @@ -5464,9 +5490,10 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) { if (thumbnail_data[index]->is_valid()) { - if (!_add_thumbnail_file_to_archive(archive, *thumbnail_data[index], "Metadata/plate", index)) { + if (!_add_thumbnail_file_to_archive(archive, *thumbnail_data[index], "Metadata/plate", index, true)) { return false; } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" <<__LINE__ << boost::format(",add thumbnail %1%'s data into 3mf")%(index+1); thumbnail_status[index] = true; } @@ -5746,7 +5773,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // Adds sliced info of plate file ("Metadata/slice_info.config") // This file contains all sliced info of all plates - if (!_add_slice_info_config_file_to_archive(archive, model, plate_data_list, objects_data)) { + if (!_add_slice_info_config_file_to_archive(archive, model, plate_data_list, objects_data, *config)) { BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ":" << __LINE__ << boost::format(", _add_slice_info_config_file_to_archive failed\n"); return false; } @@ -5843,7 +5870,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) return true; } - bool _BBS_3MF_Exporter::_add_thumbnail_file_to_archive(mz_zip_archive& archive, const ThumbnailData& thumbnail_data, const char* local_path, int index) + bool _BBS_3MF_Exporter::_add_thumbnail_file_to_archive(mz_zip_archive& archive, const ThumbnailData& thumbnail_data, const char* local_path, int index, bool generate_small_thumbnail) { bool res = false; @@ -5860,6 +5887,49 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ":" << __LINE__ << boost::format(", Unable to add thumbnail file to archive\n"); } + if (generate_small_thumbnail && thumbnail_data.is_valid()) { + //generate small size of thumbnail + std::vector small_pixels; + small_pixels.resize(PLATE_THUMBNAIL_SMALL_WIDTH * PLATE_THUMBNAIL_SMALL_HEIGHT * 4); + /* step width and step height */ + int sw = thumbnail_data.width / PLATE_THUMBNAIL_SMALL_WIDTH; + int sh = thumbnail_data.height / PLATE_THUMBNAIL_SMALL_HEIGHT; + for (int i = 0; i < thumbnail_data.height; i += sh) { + for (int j = 0; j < thumbnail_data.width; j += sw) { + int r = 0, g = 0, b = 0, a = 0; + for (int m = 0; m < sh; m++) { + for (int n = 0; n < sw; n++) { + r += (int)thumbnail_data.pixels[4 * ((i + m) * thumbnail_data.width + j + n) + 0]; + g += (int)thumbnail_data.pixels[4 * ((i + m) * thumbnail_data.width + j + n) + 1]; + b += (int)thumbnail_data.pixels[4 * ((i + m) * thumbnail_data.width + j + n) + 2]; + a += (int)thumbnail_data.pixels[4 * ((i + m) * thumbnail_data.width + j + n) + 3]; + } + } + r = std::clamp(0, r / sw / sh, 255); + g = std::clamp(0, g / sw / sh, 255); + b = std::clamp(0, b / sw / sh, 255); + a = std::clamp(0, a / sw / sh, 255); + small_pixels[4 * (i / sw * PLATE_THUMBNAIL_SMALL_WIDTH + j / sh) + 0] = (unsigned char)r; + small_pixels[4 * (i / sw * PLATE_THUMBNAIL_SMALL_WIDTH + j / sh) + 1] = (unsigned char)g; + small_pixels[4 * (i / sw * PLATE_THUMBNAIL_SMALL_WIDTH + j / sh) + 2] = (unsigned char)b; + small_pixels[4 * (i / sw * PLATE_THUMBNAIL_SMALL_WIDTH + j / sh) + 3] = (unsigned char)a; + //memcpy((void*)&small_pixels[4*(i / sw * PLATE_THUMBNAIL_SMALL_WIDTH + j / sh)], thumbnail_data.pixels.data() + 4*(i * thumbnail_data.width + j), 4); + } + } + size_t small_png_size = 0; + void* small_png_data = tdefl_write_image_to_png_file_in_memory_ex((const void*)small_pixels.data(), PLATE_THUMBNAIL_SMALL_WIDTH, PLATE_THUMBNAIL_SMALL_HEIGHT, 4, &small_png_size, MZ_DEFAULT_COMPRESSION, 1); + if (png_data != nullptr) { + std::string thumbnail_name = (boost::format("%1%_%2%_small.png") % local_path % (index + 1)).str(); + res = mz_zip_writer_add_mem(&archive, thumbnail_name.c_str(), (const void*)small_png_data, small_png_size, MZ_NO_COMPRESSION); + mz_free(small_png_data); + } + + if (!res) { + add_error("Unable to add small thumbnail file to archive"); + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ":" << __LINE__ << boost::format(", Unable to add small thumbnail file to archive\n"); + } + } + return res; } @@ -5909,27 +5979,46 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (from.empty()) { stream << " \n"; - if (data._3mf_thumbnail.empty()) { - if (export_plate_idx < 0) { - stream << " \n"; + if (export_plate_idx < 0) { + //use cover image if have + if (data._3mf_thumbnail.empty()) { + stream << " \n"; } else { - std::string thumbnail_file_str = (boost::format("Metadata/plate_%1%.png") % (export_plate_idx + 1)).str(); - stream << " \n"; + stream << " \n"; } - } else { - stream << " \n"; - } - if (!data._3mf_printer_thumbnail_middle.empty()) { - stream << " \n"; + if (data._3mf_printer_thumbnail_middle.empty()) { + stream << " \n"; + } else { + stream << " \n"; + } + + if (data._3mf_printer_thumbnail_small.empty()) { + stream << "\n"; + } else { + stream << " \n"; + } + } + else { + //always use plate thumbnails + std::string thumbnail_file_str = (boost::format("Metadata/plate_%1%.png") % (export_plate_idx + 1)).str(); + stream << " \n"; + + thumbnail_file_str = (boost::format("Metadata/plate_%1%.png") % (export_plate_idx + 1)).str(); + stream << " \n"; + + thumbnail_file_str = (boost::format("Metadata/plate_%1%_small.png") % (export_plate_idx + 1)).str(); + stream << " \n"; } - if (!data._3mf_printer_thumbnail_small.empty()) - stream << " \n"; } else if (targets.empty()) { return false; @@ -6059,7 +6148,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) metadata_item_map[BBL_DESIGNER_USER_ID_TAG] = user_id; metadata_item_map[BBL_DESIGNER_COVER_FILE_TAG] = xml_escape(design_cover); metadata_item_map[BBL_DESCRIPTION_TAG] = xml_escape(description); - metadata_item_map[BBL_COPYRIGHT_TAG] = xml_escape(copyright); + metadata_item_map[BBL_COPYRIGHT_NORMATIVE_TAG] = xml_escape(copyright); metadata_item_map[BBL_LICENSE_TAG] = xml_escape(license); /* save model info */ @@ -6313,9 +6402,10 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } //add the transform of the volume if (ppath->empty()) - stream << " <" << COMPONENT_TAG << " objectid=\"" << volume_id; // << "\"/>\n"; + stream << " <" << COMPONENT_TAG << " objectid=\"" << volume_id; else stream << " <" << COMPONENT_TAG << " p:path=\"" << xml_escape(*ppath) << "\" objectid=\"" << volume_id; // << "\"/>\n"; + stream << "\" " << PUUID_ATTR << "=\"" << hex_wrap{(boost::uint32_t) object_data.backup_id} << COMPONENT_UUID_SUFFIX; const Transform3d &transf = volume->get_matrix(); stream << "\" " << TRANSFORM_ATTR << "=\""; for (unsigned c = 0; c < 4; ++c) { @@ -6437,17 +6527,17 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) output_buffer += OBJECT_TAG; output_buffer += " id=\""; output_buffer += std::to_string(volume_id); - /*if (m_production_ext) { + if (m_production_ext) { std::stringstream stream; reset_stream(stream); - stream << "\" " << PUUID_ATTR << "=\"" << hex_wrap{(boost::uint32_t)backup_id} << OBJECT_UUID_SUFFIX; + stream << "\" " << PUUID_ATTR << "=\"" << hex_wrap{(boost::uint32_t) object_data.backup_id} << SUB_OBJECT_UUID_SUFFIX; //output_buffer += "\" "; //output_buffer += PUUID_ATTR; //output_buffer += "=\""; //output_buffer += std::to_string(hex_wrap{(boost::uint32_t)backup_id}); //output_buffer += OBJECT_UUID_SUFFIX; output_buffer += stream.str(); - }*/ + } output_buffer += "\" type=\""; output_buffer += type; output_buffer += "\">\n"; @@ -6580,6 +6670,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) { // This happens for empty projects if (build_items.size() == 0) { + stream << " <" << BUILD_TAG << "/>\n"; return true; } @@ -6621,12 +6712,12 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) ++count; const std::vector& layer_height_profile = object->layer_height_profile.get(); if (layer_height_profile.size() >= 4 && layer_height_profile.size() % 2 == 0) { - sprintf(buffer, "object_id=%d|", count); + snprintf(buffer, 1024, "object_id=%d|", count); out += buffer; // Store the layer height profile as a single semicolon separated list. for (size_t i = 0; i < layer_height_profile.size(); ++i) { - sprintf(buffer, (i == 0) ? "%f" : ";%f", layer_height_profile[i]); + snprintf(buffer, 1024, (i == 0) ? "%f" : ";%f", layer_height_profile[i]); out += buffer; } @@ -6797,7 +6888,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) { assert(is_decimal_separator_point()); char buffer[1024]; - sprintf(buffer, "; %s\n\n", header_slic3r_generated().c_str()); + snprintf(buffer, 1024, "; %s\n\n", header_slic3r_generated().c_str()); std::string out = buffer; for (const std::string &key : config.keys()) @@ -6828,7 +6919,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool _BBS_3MF_Exporter::_add_project_embedded_presets_to_archive(mz_zip_archive& archive, Model& model, std::vector project_presets) { char buffer[1024]; - sprintf(buffer, "; %s\n\n", header_slic3r_generated().c_str()); + snprintf(buffer, 1024, "; %s\n\n", header_slic3r_generated().c_str()); std::string out = buffer; int print_count = 0, filament_count = 0, printer_count = 0; const std::string& temp_path = model.get_backup_path(); @@ -7235,7 +7326,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) return true; } - bool _BBS_3MF_Exporter::_add_slice_info_config_file_to_archive(mz_zip_archive& archive, const Model& model, PlateDataPtrs& plate_data_list, const ObjectToObjectDataMap &objects_data) + bool _BBS_3MF_Exporter::_add_slice_info_config_file_to_archive(mz_zip_archive& archive, const Model& model, PlateDataPtrs& plate_data_list, const ObjectToObjectDataMap &objects_data, const DynamicPrintConfig& config) { std::stringstream stream; // Store mesh transformation in full precision, as the volumes are stored transformed and they need to be transformed back @@ -7260,6 +7351,16 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) stream << " <" << PLATE_TAG << ">\n"; //plate index stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << PLATE_IDX_ATTR << "\" " << VALUE_ATTR << "=\"" << plate_data->plate_index + 1 << "\"/>\n"; + + int timelapse_type = int(config.opt_enum("timelapse_type")); + for (auto it = plate_data->warnings.begin(); it != plate_data->warnings.end(); it++) { + if (it->msg == NOT_GENERATE_TIMELAPSE) { + timelapse_type = -1; + break; + } + } + stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << TIMELAPSE_TYPE_ATTR << "\" " << VALUE_ATTR << "=\"" << timelapse_type << "\"/>\n"; + //stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << TIMELAPSE_ERROR_CODE_ATTR << "\" " << VALUE_ATTR << "=\"" << plate_data->timelapse_warning_code << "\"/>\n"; stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << SLICE_PREDICTION_ATTR << "\" " << VALUE_ATTR << "=\"" << plate_data->get_gcode_prediction_str() << "\"/>\n"; stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << SLICE_WEIGHT_ATTR << "\" " << VALUE_ATTR << "=\"" << plate_data->get_gcode_weight_str() << "\"/>\n"; stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << OUTSIDE_ATTR << "\" " << VALUE_ATTR << "=\"" << std::boolalpha<< plate_data->toolpath_outside << "\"/>\n"; diff --git a/src/libslic3r/Format/bbs_3mf.hpp b/src/libslic3r/Format/bbs_3mf.hpp index 8b8a53a714..ed7e440c9a 100644 --- a/src/libslic3r/Format/bbs_3mf.hpp +++ b/src/libslic3r/Format/bbs_3mf.hpp @@ -14,6 +14,10 @@ class Preset; struct FilamentInfo; struct ThumbnailData; + +#define PLATE_THUMBNAIL_SMALL_WIDTH 128 +#define PLATE_THUMBNAIL_SMALL_HEIGHT 128 + #define GCODE_FILE_FORMAT "Metadata/plate_%1%.gcode" #define THUMBNAIL_FILE_FORMAT "Metadata/plate_%1%.png" #define TOP_FILE_FORMAT "Metadata/top_%1%.png" @@ -84,6 +88,7 @@ struct PlateData bool is_sliced_valid = false; bool toolpath_outside {false}; bool is_label_object_enabled {false}; + int timelapse_warning_code = 0; // 1<<0 sprial vase, 1<<1 by object std::vector warnings; diff --git a/src/libslic3r/Format/svg.cpp b/src/libslic3r/Format/svg.cpp index edca80e770..4a96274b99 100644 --- a/src/libslic3r/Format/svg.cpp +++ b/src/libslic3r/Format/svg.cpp @@ -190,6 +190,10 @@ bool get_svg_profile(const char *path, std::vector &element_infos, profile_line_points.push_back({pt1, pt2}); } } + + if (profile_line_points.empty()) + continue; + // keep the start and end points of profile connected if (shape->fill.gradient != nullptr) profile_line_points.back().second = profile_line_points[0].first; @@ -269,6 +273,9 @@ bool get_svg_profile(const char *path, std::vector &element_infos, wires.emplace_back(wire); } + if (wires.empty()) + continue; + gp_Vec dir(0, 0, 10); BRepBuilderAPI_MakeFace face_make(wires[index]); for (int i = 0; i < wires.size(); ++i) { diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 95dec2c8fa..10663452ea 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -980,6 +980,33 @@ static std::vector get_path_of_change_filament(const Print& print) return gcode; } + bool WipeTowerIntegration::is_empty_wipe_tower_gcode(GCode &gcodegen, int extruder_id, bool finish_layer) + { + assert(m_layer_idx >= 0); + if (m_layer_idx >= (int) m_tool_changes.size()) + return true; + + bool ignore_sparse = false; + if (gcodegen.config().wipe_tower_no_sparse_layers.value) { + ignore_sparse = (m_tool_changes[m_layer_idx].size() == 1 && m_tool_changes[m_layer_idx].front().initial_tool == m_tool_changes[m_layer_idx].front().new_tool); + } + + if (m_enable_timelapse_print && m_is_first_print) { + return false; + } + + if (gcodegen.writer().need_toolchange(extruder_id) || finish_layer) { + if (!(size_t(m_tool_change_idx) < m_tool_changes[m_layer_idx].size())) + throw Slic3r::RuntimeError("Wipe tower generation failed, possibly due to empty first layer."); + + if (!ignore_sparse) { + return false; + } + } + + return true; + } + // Print is finished. Now it remains to unload the filament safely with ramming over the wipe tower. std::string WipeTowerIntegration::finalize(GCode &gcodegen) { @@ -1367,6 +1394,7 @@ namespace DoExport { if (ret.size() < MAX_TAGS_COUNT) check(_(L("Machine end G-code")), config.machine_end_gcode.value); if (ret.size() < MAX_TAGS_COUNT) check(_(L("Before layer change G-code")), config.before_layer_change_gcode.value); if (ret.size() < MAX_TAGS_COUNT) check(_(L("Layer change G-code")), config.layer_change_gcode.value); + if (ret.size() < MAX_TAGS_COUNT) check(_(L("Time lapse G-code")), config.time_lapse_gcode.value); if (ret.size() < MAX_TAGS_COUNT) check(_(L("Change filament G-code")), config.change_filament_gcode.value); //BBS //if (ret.size() < MAX_TAGS_COUNT) check(_(L("Printing by object G-code")), config.printing_by_object_gcode.value); @@ -1489,6 +1517,16 @@ void GCode::do_export(Print* print, const char* path, GCodeProcessorResult* resu BOOST_LOG_TRIVIAL(debug) << "Start processing gcode, " << log_memory_info(); // Post-process the G-code to update time stamps. + + m_timelapse_warning_code = 0; + if (m_config.printer_structure.value == PrinterStructure::psI3 && m_spiral_vase) { + m_timelapse_warning_code += 1; + } + if (m_config.printer_structure.value == PrinterStructure::psI3 && print->config().print_sequence == PrintSequence::ByObject) { + m_timelapse_warning_code += (1 << 1); + } + m_processor.result().timelapse_warning_code = m_timelapse_warning_code; + m_processor.result().support_traditional_timelapse = m_support_traditional_timelapse; m_processor.finalize(true); // DoExport::update_print_estimated_times_stats(m_processor, print->m_print_statistics); DoExport::update_print_estimated_stats(m_processor, m_writer.extruders(), print->m_print_statistics, print->config()); @@ -1651,16 +1689,13 @@ namespace DoExport { output((boost::format("; thumbnail begin %dx%d %d\n") % data.width % data.height % encoded.size()).str().c_str()); unsigned int row_count = 0; - while (encoded.size() > max_row_length) - { - output((boost::format("; %s\n") % encoded.substr(0, max_row_length)).str().c_str()); - encoded = encoded.substr(max_row_length); + //BBS: optimize performance ,reduce too much memeory operation + size_t current_index = 0; + while(current_index 0) - output((boost::format("; %s\n") % encoded).str().c_str()); - output("; thumbnail end\n"); output("; THUMBNAIL_BLOCK_END\n\n"); @@ -1948,7 +1983,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato [&print]() { print.throw_if_canceled(); }); } } - + // Write some terse information on the slicing parameters. const PrintObject *first_object = print.objects().front(); @@ -2198,7 +2233,14 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato this->placeholder_parser().set("plate_name", new ConfigOptionString(print.get_plate_name())); this->placeholder_parser().set("first_layer_height", new ConfigOptionFloat(m_config.initial_layer_print_height.value)); - //BBS: calculate the volumetric speed of outer wall. Ignore pre-object setting and multi-filament, and just use the default setting + //add during_print_exhaust_fan_speed + std::vector during_print_exhaust_fan_speed_num; + during_print_exhaust_fan_speed_num.reserve(m_config.during_print_exhaust_fan_speed.size()); + for (const auto& item : m_config.during_print_exhaust_fan_speed.values) + during_print_exhaust_fan_speed_num.emplace_back((int)(item / 100.0 * 255)); + this->placeholder_parser().set("during_print_exhaust_fan_speed_num",new ConfigOptionInts(during_print_exhaust_fan_speed_num)); + + // calculate the volumetric speed of outer wall. Ignore pre-object setting and multi-filament, and just use the default setting { float filament_max_volumetric_speed = m_config.option("filament_max_volumetric_speed")->get_at(initial_non_support_extruder_id); @@ -2248,8 +2290,12 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato file.writeln(this->placeholder_parser_process("filament_start_gcode", print.config().filament_start_gcode.values[initial_extruder_id], initial_extruder_id, &config)); } */ - if (is_bbl_printers) + if (is_bbl_printers) { this->_print_first_layer_extruder_temperatures(file, print, machine_start_gcode, initial_extruder_id, true); + if (m_config.support_air_filtration.getBool() && m_config.activate_air_filtration.get_at(initial_extruder_id)) { + file.write(m_writer.set_exhaust_fan(m_config.during_print_exhaust_fan_speed.get_at(initial_extruder_id), true)); + } + } print.throw_if_canceled(); // Set other general things. @@ -2512,6 +2558,10 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato file.write(m_writer.update_progress(m_layer_count, m_layer_count, true)); // 100% file.write(m_writer.postamble()); + if (print.config().support_chamber_temp_control.value || print.config().chamber_temperature.values[0] > 0) + file.write(m_writer.set_chamber_temperature(0, false)); //close chamber_temperature + + // adds tags for time estimators file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Last_Line_M73_Placeholder).c_str()); file.write_format("; EXECUTABLE_BLOCK_END\n\n"); @@ -2561,6 +2611,19 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato } file.write("\n"); + bool activate_air_filtration = false; + for (const auto& extruder : m_writer.extruders()) + activate_air_filtration |= m_config.activate_air_filtration.get_at(extruder.id()); + activate_air_filtration &= m_config.support_air_filtration.getBool(); + + if (activate_air_filtration) { + int complete_print_exhaust_fan_speed = 0; + for (const auto& extruder : m_writer.extruders()) + if (m_config.activate_air_filtration.get_at(extruder.id())) + complete_print_exhaust_fan_speed = std::max(complete_print_exhaust_fan_speed, m_config.complete_print_exhaust_fan_speed.get_at(extruder.id())); + file.write(m_writer.set_exhaust_fan(complete_print_exhaust_fan_speed, true)); + } + print.throw_if_canceled(); } @@ -2901,6 +2964,7 @@ int GCode::get_bed_temperature(const int extruder_id, const bool is_first_layer, return bed_temp_opt->get_at(extruder_id); } + // Write 1st layer bed temperatures into the G-code. // Only do that if the start G-code does not already contain any M-code controlling an extruder temperature. // M140 - Set Extruder Temperature @@ -3336,10 +3400,45 @@ LayerResult GCode::process_layer( + "\n"; } + PrinterStructure printer_structure = m_config.printer_structure.value; + bool need_insert_timelapse_gcode_for_traditional = false; + if (printer_structure == PrinterStructure::psI3 && + !m_spiral_vase && + (!m_wipe_tower || !m_wipe_tower->enable_timelapse_print()) && + print.config().print_sequence == PrintSequence::ByLayer) { + need_insert_timelapse_gcode_for_traditional = true; + } + bool has_insert_timelapse_gcode = false; + bool has_wipe_tower = (layer_tools.has_wipe_tower && m_wipe_tower); + + auto insert_timelapse_gcode = [this, print_z, &print]() -> std::string { + std::string gcode_res; + if (!print.config().time_lapse_gcode.value.empty()) { + DynamicConfig config; + config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index)); + config.set_key_value("layer_z", new ConfigOptionFloat(print_z)); + config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z)); + gcode_res = this->placeholder_parser_process("timelapse_gcode", print.config().time_lapse_gcode.value, m_writer.extruder()->id(), &config) + "\n"; + } + return gcode_res; + }; + // BBS: don't use lazy_raise when enable spiral vase gcode += this->change_layer(print_z); // this will increase m_layer_index m_layer = &layer; m_object_layer_over_raft = false; + if (printer_structure == PrinterStructure::psI3 && !need_insert_timelapse_gcode_for_traditional && !m_spiral_vase && print.config().print_sequence == PrintSequence::ByLayer) { + std::string timepals_gcode = insert_timelapse_gcode(); + gcode += timepals_gcode; + m_writer.set_current_position_clear(false); + //BBS: check whether custom gcode changes the z position. Update if changed + double temp_z_after_timepals_gcode; + if (GCodeProcessor::get_last_z_from_gcode(timepals_gcode, temp_z_after_timepals_gcode)) { + Vec3d pos = m_writer.get_position(); + pos(2) = temp_z_after_timepals_gcode; + m_writer.set_position(pos); + } + } if (! print.config().layer_change_gcode.value.empty()) { DynamicConfig config; config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index)); @@ -3649,9 +3748,29 @@ LayerResult GCode::process_layer( // Extrude the skirt, brim, support, perimeters, infill ordered by the extruders. for (unsigned int extruder_id : layer_tools.extruders) { - gcode += (layer_tools.has_wipe_tower && m_wipe_tower) ? - m_wipe_tower->tool_change(*this, extruder_id, extruder_id == layer_tools.extruders.back()) : - this->set_extruder(extruder_id, print_z); + if (has_wipe_tower) { + if (!m_wipe_tower->is_empty_wipe_tower_gcode(*this, extruder_id, extruder_id == layer_tools.extruders.back())) { + if (need_insert_timelapse_gcode_for_traditional && !has_insert_timelapse_gcode) { + gcode += this->retract(false, false, LiftType::NormalLift); + m_writer.add_object_change_labels(gcode); + + std::string timepals_gcode = insert_timelapse_gcode(); + gcode += timepals_gcode; + m_writer.set_current_position_clear(false); + //BBS: check whether custom gcode changes the z position. Update if changed + double temp_z_after_timepals_gcode; + if (GCodeProcessor::get_last_z_from_gcode(timepals_gcode, temp_z_after_timepals_gcode)) { + Vec3d pos = m_writer.get_position(); + pos(2) = temp_z_after_timepals_gcode; + m_writer.set_position(pos); + } + has_insert_timelapse_gcode = true; + } + gcode += m_wipe_tower->tool_change(*this, extruder_id, extruder_id == layer_tools.extruders.back()); + } + } else { + gcode += this->set_extruder(extruder_id, print_z); + } // let analyzer tag generator aware of a role type change if (layer_tools.has_wipe_tower && m_wipe_tower) @@ -3845,11 +3964,11 @@ LayerResult GCode::process_layer( //BBS: for first layer, we always print wall firstly to get better bed adhesive force //This behaviour is same with cura if (is_infill_first && !first_layer) { - gcode += this->extrude_infill(print, by_region_specific, false); + gcode += this->extrude_infill(print, by_region_specific, false); gcode += this->extrude_perimeters(print, by_region_specific); } else { gcode += this->extrude_perimeters(print, by_region_specific); - gcode += this->extrude_infill(print,by_region_specific, false); + gcode += this->extrude_infill(print,by_region_specific, false); } // ironing gcode += this->extrude_infill(print,by_region_specific, true); @@ -3900,6 +4019,25 @@ LayerResult GCode::process_layer( BOOST_LOG_TRIVIAL(trace) << "Exported layer " << layer.id() << " print_z " << print_z << log_memory_info(); + if (!has_wipe_tower && need_insert_timelapse_gcode_for_traditional && !has_insert_timelapse_gcode) { + if (m_support_traditional_timelapse) + m_support_traditional_timelapse = false; + + gcode += this->retract(false, false, LiftType::NormalLift); + m_writer.add_object_change_labels(gcode); + + std::string timepals_gcode = insert_timelapse_gcode(); + gcode += timepals_gcode; + m_writer.set_current_position_clear(false); + //BBS: check whether custom gcode changes the z position. Update if changed + double temp_z_after_timepals_gcode; + if (GCodeProcessor::get_last_z_from_gcode(timepals_gcode, temp_z_after_timepals_gcode)) { + Vec3d pos = m_writer.get_position(); + pos(2) = temp_z_after_timepals_gcode; + m_writer.set_position(pos); + } + } + result.gcode = std::move(gcode); result.cooling_buffer_flush = object_layer || raft_layer || last_layer; return result; diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index a276ebd7bd..08c806a581 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -91,6 +91,7 @@ public: std::string prime(GCode &gcodegen); void next_layer() { ++ m_layer_idx; m_tool_change_idx = 0; } std::string tool_change(GCode &gcodegen, int extruder_id, bool finish_layer); + bool is_empty_wipe_tower_gcode(GCode &gcodegen, int extruder_id, bool finish_layer); std::string finalize(GCode &gcodegen); std::vector used_filament_length() const; @@ -529,6 +530,9 @@ private: // Index of a last object copy extruded. std::pair m_last_obj_copy; + int m_timelapse_warning_code = 0; + bool m_support_traditional_timelapse = true; + bool m_silent_time_estimator_enabled; // Processor diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 7a27587ea8..e776a5fbb1 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -59,7 +59,8 @@ const std::vector GCodeProcessor::Reserved_Tags = { "_GP_FIRST_LINE_M73_PLACEHOLDER", "_GP_LAST_LINE_M73_PLACEHOLDER", "_GP_ESTIMATED_PRINTING_TIME_PLACEHOLDER", - "_GP_TOTAL_LAYER_NUMBER_PLACEHOLDER" + "_GP_TOTAL_LAYER_NUMBER_PLACEHOLDER", + "_DURING_PRINT_EXHAUST_FAN" }; const std::vector GCodeProcessor::Reserved_Tags_compatible = { @@ -383,6 +384,8 @@ void GCodeProcessor::TimeProcessor::reset() machine_limits = MachineEnvelopeConfig(); filament_load_times = 0.0f; filament_unload_times = 0.0f; + + for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { machines[i].reset(); } @@ -427,6 +430,14 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename, st return std::string(line_M73); }; + auto format_line_exhaust_fan_control = [](const std::string& mask,int fan_index,int percent) { + char line_fan[64] = { 0 }; + sprintf(line_fan,mask.c_str(), + std::to_string(fan_index).c_str(), + std::to_string(int((percent/100.0)*255)).c_str()); + return std::string(line_fan); + }; + auto format_time_float = [](float time) { return Slic3r::float_to_string_decimal_point(time, 2); }; @@ -542,7 +553,7 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename, st // add lines M73 to exported gcode auto process_line_move = [ // Lambdas, mostly for string formatting, all with an empty capture block. - time_in_minutes, format_time_float, format_line_M73_main, format_line_M73_stop_int, format_line_M73_stop_float, time_in_last_minute, + time_in_minutes, format_time_float, format_line_M73_main, format_line_M73_stop_int, format_line_M73_stop_float, time_in_last_minute,format_line_exhaust_fan_control, &self = std::as_const(*this), // Caches, to be modified &g1_times_cache_it, &last_exported_main, &last_exported_stop, @@ -561,6 +572,7 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename, st if (it != machine.g1_times_cache.end() && it->id == g1_lines_counter) { std::pair to_export_main = { int(100.0f * it->elapsed_time / machine.time), time_in_minutes(machine.time - it->elapsed_time) }; + if (last_exported_main[i] != to_export_main) { export_line += format_line_M73_main(machine.line_m73_main_mask.c_str(), to_export_main.first, to_export_main.second); @@ -802,6 +814,7 @@ void GCodeProcessorResult::reset() { toolpath_outside = false; //BBS: add label_object_enabled label_object_enabled = false; + timelapse_warning_code = 0; printable_height = 0.0f; settings_ids.reset(); extruders_count = 0; @@ -829,6 +842,7 @@ void GCodeProcessorResult::reset() { toolpath_outside = false; //BBS: add label_object_enabled label_object_enabled = false; + timelapse_warning_code = 0; printable_height = 0.0f; settings_ids.reset(); extruders_count = 0; @@ -998,6 +1012,8 @@ void GCodeProcessor::apply_config(const PrintConfig& config) const ConfigOptionBool* spiral_vase = config.option("spiral_mode"); if (spiral_vase != nullptr) m_spiral_vase_active = spiral_vase->value; + + } void GCodeProcessor::apply_config(const DynamicPrintConfig& config) @@ -1498,9 +1514,9 @@ void GCodeProcessor::finalize(bool post_process) m_height_compare.output(); m_width_compare.output(); #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - - if (post_process) + if (post_process){ m_time_processor.post_process(m_result.filename, m_result.moves, m_result.lines_ends, m_layer_id); + } #if ENABLE_GCODE_VIEWER_STATISTICS m_result.time = std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - m_start_time).count(); #endif // ENABLE_GCODE_VIEWER_STATISTICS @@ -1817,6 +1833,7 @@ void GCodeProcessor::process_gcode_line(const GCodeReader::GCodeLine& line, bool case '9': switch (cmd[3]) { case '0': { process_M190(line); break; } // Wait bed temperature + case '1': { process_M191(line); break; } // Wait chamber temperature default: break; } default: @@ -1935,7 +1952,7 @@ template // Legacy conversion, which is costly due to having to make a copy of the string before conversion. try { assert(sv.size() < 1024); - assert(sv.data() != nullptr); + assert(sv.data() != nullptr); std::string str { sv }; size_t read = 0; if constexpr (std::is_same_v) @@ -3751,6 +3768,15 @@ void GCodeProcessor::process_M190(const GCodeReader::GCodeLine& line) m_highest_bed_temp = m_highest_bed_temp < (int)new_temp ? (int)new_temp : m_highest_bed_temp; } +void GCodeProcessor::process_M191(const GCodeReader::GCodeLine& line) +{ + float chamber_temp = 0; + const float wait_chamber_temp_time = 720.0; + // BBS: when chamber_temp>40,caculate time required for heating + if (line.has_value('S', chamber_temp) && chamber_temp > 40) + simulate_st_synchronize(wait_chamber_temp_time); +} + void GCodeProcessor::process_M201(const GCodeReader::GCodeLine& line) { @@ -4355,6 +4381,29 @@ void GCodeProcessor::update_slice_warnings() m_result.warnings.push_back(warning); } + // bbs:HRC checker + warning.params.clear(); + warning.level = 1; + if (!m_result.support_traditional_timelapse) { + warning.msg = NOT_SUPPORT_TRADITIONAL_TIMELAPSE; + warning.error_code = "1000C003"; + m_result.warnings.push_back(warning); + } + + if (m_result.timelapse_warning_code != 0) { + if (m_result.timelapse_warning_code & 1) { + warning.msg = NOT_GENERATE_TIMELAPSE; + warning.error_code = "1001C001"; + m_result.warnings.push_back(warning); + } + + if ((m_result.timelapse_warning_code >> 1) & 1) { + warning.msg = NOT_GENERATE_TIMELAPSE; + warning.error_code = "1001C002"; + m_result.warnings.push_back(warning); + } + } + m_result.warnings.shrink_to_fit(); } diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index f78ddd3506..84240714ac 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -20,6 +20,8 @@ namespace Slic3r { // slice warnings enum strings #define NOZZLE_HRC_CHECKER "the_actual_nozzle_hrc_smaller_than_the_required_nozzle_hrc" #define BED_TEMP_TOO_HIGH_THAN_FILAMENT "bed_temperature_too_high_than_filament" +#define NOT_SUPPORT_TRADITIONAL_TIMELAPSE "not_support_traditional_timelapse" +#define NOT_GENERATE_TIMELAPSE "not_generate_timelapse" enum class EMoveType : unsigned char { @@ -179,6 +181,8 @@ namespace Slic3r { bool toolpath_outside; //BBS: add object_label_enabled bool label_object_enabled; + int timelapse_warning_code {0}; + bool support_traditional_timelapse{true}; float printable_height; SettingsIds settings_ids; size_t extruders_count; @@ -212,6 +216,7 @@ namespace Slic3r { bed_exclude_area = other.bed_exclude_area; toolpath_outside = other.toolpath_outside; label_object_enabled = other.label_object_enabled; + timelapse_warning_code = other.timelapse_warning_code; printable_height = other.printable_height; settings_ids = other.settings_ids; extruders_count = other.extruders_count; @@ -255,7 +260,8 @@ namespace Slic3r { First_Line_M73_Placeholder, Last_Line_M73_Placeholder, Estimated_Printing_Time_Placeholder, - Total_Layer_Number_Placeholder + Total_Layer_Number_Placeholder, + During_Print_Exhaust_Fan }; static const std::string& reserved_tag(ETags tag) { return s_IsBBLPrinter ? Reserved_Tags[static_cast(tag)] : Reserved_Tags_compatible[static_cast(tag)]; } @@ -357,6 +363,7 @@ namespace Slic3r { float time() const; }; + private: struct TimeMachine { @@ -452,6 +459,7 @@ namespace Slic3r { // Additional load / unload times for a filament exchange sequence. float filament_load_times; float filament_unload_times; + std::array(PrintEstimatedStatistics::ETimeMode::Count)> machines; void reset(); @@ -617,7 +625,6 @@ namespace Slic3r { private: GCodeReader m_parser; - EUnits m_units; EPositioningType m_global_positioning_type; EPositioningType m_e_local_positioning_type; @@ -711,6 +718,7 @@ namespace Slic3r { void reset(); const GCodeProcessorResult& get_result() const { return m_result; } + GCodeProcessorResult& result() { return m_result; } GCodeProcessorResult&& extract_result() { return std::move(m_result); } // Load a G-code into a stand-alone G-code viewer. @@ -829,6 +837,9 @@ namespace Slic3r { //BBS: wait bed temperature void process_M190(const GCodeReader::GCodeLine& line); + //BBS: wait chamber temperature + void process_M191(const GCodeReader::GCodeLine& line); + // Set max printing acceleration void process_M201(const GCodeReader::GCodeLine& line); diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index f282db6065..e3e619f9ed 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -157,6 +157,25 @@ std::string GCodeWriter::set_bed_temperature(int temperature, bool wait) return gcode.str(); } +std::string GCodeWriter::set_chamber_temperature(int temperature, bool wait) +{ + std::string code, comment; + std::ostringstream gcode; + + if (wait) + { + gcode<<"M106 P2 S255 \n"; + gcode<<"M191 S"<get_assemble_transformation().get_matrix(); const Transform3d &instance_inverse_matrix = instance_transformation_copy.get_matrix().inverse(); Transform3d new_instance_inverse_matrix = instance_inverse_matrix * obj_instance->get_transformation().get_matrix(true).inverse(); + if (place_on_cut) { // reset the rotation of cut plane + new_instance_inverse_matrix = new_instance_inverse_matrix * Transformation(cut_matrix).get_matrix(true, false, true, true).inverse(); + } Transform3d new_assemble_transform = assemble_matrix * new_instance_inverse_matrix; obj_instance->set_assemble_from_transform(new_assemble_transform); } @@ -2097,7 +2117,7 @@ ModelObjectPtrs ModelObject::cut(size_t instance, std::array plane_poi // Displacement (in instance coordinates) to be applied to place the upper parts Vec3d local_displace = Vec3d::Zero(); Vec3d local_dowels_displace = Vec3d::Zero(); - + for (ModelVolume *volume : volumes) { const auto volume_matrix = volume->get_matrix(); @@ -2122,7 +2142,7 @@ ModelObjectPtrs ModelObject::cut(size_t instance, std::array plane_poi } ModelObjectPtrs res; - + if (attributes.has(ModelObjectCutAttribute::CutToParts) && !upper->volumes.empty()) { reset_instance_transformation(upper, instance, cut_matrix); res.push_back(upper); @@ -2356,7 +2376,7 @@ void ModelObject::split(ModelObjectPtrs* new_objects) { Vec3d shift = model_instance->get_transformation().get_matrix(true) * new_vol->get_offset(); model_instance->set_offset(model_instance->get_offset() + shift); - + //BBS: add assemble_view related logic Geometry::Transformation instance_transformation_copy = model_instance->get_transformation(); instance_transformation_copy.set_offset(-new_vol->get_offset()); @@ -2365,6 +2385,7 @@ void ModelObject::split(ModelObjectPtrs* new_objects) Transform3d new_instance_inverse_matrix = instance_inverse_matrix * model_instance->get_transformation().get_matrix(true).inverse(); Transform3d new_assemble_transform = assemble_matrix * new_instance_inverse_matrix; model_instance->set_assemble_from_transform(new_assemble_transform); + model_instance->set_offset_to_assembly(new_vol->get_offset()); } new_vol->set_offset(Vec3d::Zero()); @@ -3234,6 +3255,91 @@ void ModelInstance::transform_polygon(Polygon* polygon) const } //BBS +// BBS set print speed table and find maximum speed +void Model::setPrintSpeedTable(const DynamicPrintConfig& config, const PrintConfig& print_config) { + //Slic3r::DynamicPrintConfig config = wxGetApp().preset_bundle->full_config(); + printSpeedMap.maxSpeed = 0; + if (config.has("inner_wall_speed")) { + printSpeedMap.perimeterSpeed = config.opt_float("inner_wall_speed"); + if (printSpeedMap.perimeterSpeed > printSpeedMap.maxSpeed) + printSpeedMap.maxSpeed = printSpeedMap.perimeterSpeed; + } + if (config.has("outer_wall_speed")) { + printSpeedMap.externalPerimeterSpeed = config.opt_float("outer_wall_speed"); + printSpeedMap.maxSpeed = std::max(printSpeedMap.maxSpeed, printSpeedMap.externalPerimeterSpeed); + } + if (config.has("sparse_infill_speed")) { + printSpeedMap.infillSpeed = config.opt_float("sparse_infill_speed"); + if (printSpeedMap.infillSpeed > printSpeedMap.maxSpeed) + printSpeedMap.maxSpeed = printSpeedMap.infillSpeed; + } + if (config.has("internal_solid_infill_speed")) { + printSpeedMap.solidInfillSpeed = config.opt_float("internal_solid_infill_speed"); + if (printSpeedMap.solidInfillSpeed > printSpeedMap.maxSpeed) + printSpeedMap.maxSpeed = printSpeedMap.solidInfillSpeed; + } + if (config.has("top_surface_speed")) { + printSpeedMap.topSolidInfillSpeed = config.opt_float("top_surface_speed"); + if (printSpeedMap.topSolidInfillSpeed > printSpeedMap.maxSpeed) + printSpeedMap.maxSpeed = printSpeedMap.topSolidInfillSpeed; + } + if (config.has("support_speed")) { + printSpeedMap.supportSpeed = config.opt_float("support_speed"); + + if (printSpeedMap.supportSpeed > printSpeedMap.maxSpeed) + printSpeedMap.maxSpeed = printSpeedMap.supportSpeed; + } + + + //auto& print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); + //auto print_config = print.config(); + //printSpeedMap.bed_poly.points = get_bed_shape(*(wxGetApp().plater()->config())); + printSpeedMap.bed_poly.points = get_bed_shape(config); + Pointfs excluse_area_points = print_config.bed_exclude_area.values; + Polygons exclude_polys; + Polygon exclude_poly; + for (int i = 0; i < excluse_area_points.size(); i++) { + auto pt = excluse_area_points[i]; + exclude_poly.points.emplace_back(scale_(pt.x()), scale_(pt.y())); + if (i % 4 == 3) { // exclude areas are always rectangle + exclude_polys.push_back(exclude_poly); + exclude_poly.points.clear(); + } + } + printSpeedMap.bed_poly = diff({ printSpeedMap.bed_poly }, exclude_polys)[0]; +} + +// find temperature of heatend and bed and matierial of an given extruder +void Model::setExtruderParams(const DynamicPrintConfig& config, int extruders_count) { + extruderParamsMap.clear(); + //Slic3r::DynamicPrintConfig config = wxGetApp().preset_bundle->full_config(); + // BBS + //int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); + for (unsigned int i = 0; i != extruders_count; ++i) { + std::string matName = ""; + // BBS + int bedTemp = 35; + double endTemp = 0.f; + if (config.has("filament_type")) { + matName = config.opt_string("filament_type", i); + } + if (config.has("nozzle_temperature")) { + endTemp = config.opt_int("nozzle_temperature", i); + } + + // FIXME: curr_bed_type is now a plate config rather than a global config. + // Currently bed temp is not used for brim generation, so just comment it for now. +#if 0 + if (config.has("curr_bed_type")) { + BedType curr_bed_type = config.opt_enum("curr_bed_type"); + bedTemp = config.opt_int(get_bed_temp_key(curr_bed_type), i); + } +#endif + if (i == 0) extruderParamsMap.insert({ i,{matName, bedTemp, endTemp} }); + extruderParamsMap.insert({ i + 1,{matName, bedTemp, endTemp} }); + } +} + // update the maxSpeed of an object if it is different from the global configuration double Model::findMaxSpeed(const ModelObject* object) { auto objectKeys = object->config.keys(); diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index f088b6b24b..481552c058 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -1561,6 +1561,9 @@ public: static double getThermalLength(const ModelVolume* modelVolumePtr); static double getThermalLength(const std::vector modelVolumePtrs); static Polygon getBedPolygon() { return Model::printSpeedMap.bed_poly; } + //BBS static functions that update extruder params and speed table + static void setPrintSpeedTable(const DynamicPrintConfig& config, const PrintConfig& print_config); + static void setExtruderParams(const DynamicPrintConfig& config, int extruders_count); // BBS: backup static Model read_from_archive( diff --git a/src/libslic3r/ModelArrange.cpp b/src/libslic3r/ModelArrange.cpp index ed3f7a5098..710b031fef 100644 --- a/src/libslic3r/ModelArrange.cpp +++ b/src/libslic3r/ModelArrange.cpp @@ -145,24 +145,23 @@ ArrangePolygon get_instance_arrange_poly(ModelInstance* instance, const Slic3r:: // get brim width auto obj = instance->get_object(); -#if 0 - ap.brim_width = instance->get_auto_brim_width(); - auto brim_type_ptr = obj->get_config_value>(config, "brim_type"); - if (brim_type_ptr) { - auto brim_type = brim_type_ptr->getInt(); - if (brim_type == btOuterOnly) - ap.brim_width = obj->get_config_value(config, "brim_width")->getFloat(); - else if (brim_type == btNoBrim) - ap.brim_width = 0; - } -#else - ap.brim_width = 0; + + ap.brim_width = 1.0; // For by-layer printing, need to shrink bed a little, so the support won't go outside bed. // We set it to 5mm because that's how much a normal support will grow by default. + // normal support 5mm, other support 22mm, no support 0mm auto supp_type_ptr = obj->get_config_value(config, "enable_support"); - if (supp_type_ptr && supp_type_ptr->getBool()) - ap.brim_width = 5.0; -#endif + auto support_type_ptr = obj->get_config_value>(config, "support_type"); + auto support_type = support_type_ptr->value; + auto enable_support = supp_type_ptr->getBool(); + int support_int = support_type_ptr->getInt(); + + if (enable_support && (support_type == stNormalAuto || support_type == stNormal)) + ap.brim_width = 6.0; + else if (enable_support) { + ap.brim_width = 24.0; // 2*MAX_BRANCH_RADIUS_FIRST_LAYER + ap.has_tree_support = true; + } ap.height = obj->bounding_box().size().z(); ap.name = obj->name; diff --git a/src/libslic3r/Orient.cpp b/src/libslic3r/Orient.cpp index 0011898bcb..a87694ad93 100644 --- a/src/libslic3r/Orient.cpp +++ b/src/libslic3r/Orient.cpp @@ -115,7 +115,7 @@ public: area_cumulation_accurate(face_normals, normals_quantize, areas, 10); - area_cumulation_accurate(face_normals_hull, normals_hull_quantize, areas_hull, 10); + area_cumulation_accurate(face_normals_hull, normals_hull_quantize, areas_hull, 14); add_supplements(); diff --git a/src/libslic3r/PNGReadWrite.cpp b/src/libslic3r/PNGReadWrite.cpp index 51bf7de7c3..e4b7489b85 100644 --- a/src/libslic3r/PNGReadWrite.cpp +++ b/src/libslic3r/PNGReadWrite.cpp @@ -100,6 +100,87 @@ bool decode_png(IStream &in_buf, ImageGreyscale &out_img) return true; } +bool decode_colored_png(IStream &in_buf, ImageColorscale &out_img) +{ + static const constexpr int PNG_SIG_BYTES = 8; + + std::vector sig(PNG_SIG_BYTES, 0); + in_buf.read(sig.data(), PNG_SIG_BYTES); + if (!png_check_sig(sig.data(), PNG_SIG_BYTES)) { + BOOST_LOG_TRIVIAL(error) << boost::format("decode_colored_png: png_check_sig failed"); + return false; + } + + PNGDescr dsc; + dsc.png = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, + nullptr); + + if(!dsc.png) { + BOOST_LOG_TRIVIAL(error) << boost::format("decode_colored_png: png_create_read_struct failed"); + return false; + } + + dsc.info = png_create_info_struct(dsc.png); + if(!dsc.info) { + BOOST_LOG_TRIVIAL(error) << boost::format("decode_colored_png: png_create_info_struct failed"); + png_destroy_read_struct(&dsc.png, &dsc.info, NULL); + return false; + } + + png_set_read_fn(dsc.png, static_cast(&in_buf), png_read_callback); + + // Tell that we have already read the first bytes to check the signature + png_set_sig_bytes(dsc.png, PNG_SIG_BYTES); + + png_read_info(dsc.png, dsc.info); + + out_img.cols = png_get_image_width(dsc.png, dsc.info); + out_img.rows = png_get_image_height(dsc.png, dsc.info); + size_t color_type = png_get_color_type(dsc.png, dsc.info); + size_t bit_depth = png_get_bit_depth(dsc.png, dsc.info); + unsigned long rowbytes = png_get_rowbytes(dsc.png, dsc.info); + + switch(color_type) + { + case PNG_COLOR_TYPE_RGB: + out_img.bytes_per_pixel = 3; + break; + case PNG_COLOR_TYPE_RGB_ALPHA: + out_img.bytes_per_pixel = 4; + break; + default: //not supported currently + png_destroy_read_struct(&dsc.png, &dsc.info, NULL); + return false; + } + + BOOST_LOG_TRIVIAL(info) << boost::format("png's cols %1%, rows %2%, color_type %3%, bit_depth %4%, bytes_per_pixel %5%, rowbytes %6%")%out_img.cols %out_img.rows %color_type %bit_depth %out_img.bytes_per_pixel %rowbytes; + out_img.buf.resize(out_img.rows * rowbytes); + + int filter_type = png_get_filter_type(dsc.png, dsc.info); + int compression_type = png_get_compression_type(dsc.png, dsc.info); + int interlace_type = png_get_interlace_type(dsc.png, dsc.info); + BOOST_LOG_TRIVIAL(info) << boost::format("filter_type %1%, compression_type %2%, interlace_type %3%, rowbytes %4%")%filter_type %compression_type %interlace_type %rowbytes; + + auto readbuf = static_cast(out_img.buf.data()); + for (size_t r = out_img.rows; r > 0; r--) + { + png_read_row(dsc.png, readbuf + (r - 1) * rowbytes, nullptr); + } + + png_read_end(dsc.png, dsc.info); + png_destroy_read_struct(&dsc.png, &dsc.info, NULL); + + return true; +} + +bool decode_colored_png(const ReadBuf &in_buf, ImageColorscale &out_img) +{ + struct ReadBufStream stream{in_buf}; + + return decode_colored_png(stream, out_img); +} + + // Down to earth function to store a packed RGB image to file. Mostly useful for debugging purposes. // Based on https://www.lemoda.net/c/write-png/ // png_color_type is PNG_COLOR_TYPE_RGB or PNG_COLOR_TYPE_GRAY @@ -112,7 +193,7 @@ static bool write_rgb_or_gray_to_file(const char *file_name_utf8, size_t width, png_structp png_ptr = nullptr; png_infop info_ptr = nullptr; png_byte **row_pointers = nullptr; - + FILE *fp = boost::nowide::fopen(file_name_utf8, "wb"); if (! fp) { BOOST_LOG_TRIVIAL(error) << "write_png_file: File could not be opened for writing: " << file_name_utf8; diff --git a/src/libslic3r/PNGReadWrite.hpp b/src/libslic3r/PNGReadWrite.hpp index 01e1f47450..c76d7b1684 100644 --- a/src/libslic3r/PNGReadWrite.hpp +++ b/src/libslic3r/PNGReadWrite.hpp @@ -23,11 +23,19 @@ template struct Image { }; using ImageGreyscale = Image; +struct ImageColorscale:Image +{ + int bytes_per_pixel; +}; + // Only decodes true 8 bit grayscale png images. Returns false for other formats // TODO (if needed): implement transformation of rgb images into grayscale... bool decode_png(IStream &stream, ImageGreyscale &out_img); +//BBS: decode png for other format +bool decode_colored_png(IStream &in_buf, ImageColorscale &out_img); + // TODO (if needed) // struct RGB { uint8_t r, g, b; }; // using ImageRGB = Image; @@ -39,30 +47,36 @@ struct ReadBuf { const void *buf = nullptr; const size_t sz = 0; }; bool is_png(const ReadBuf &pngbuf); +struct ReadBufStream: public IStream { + const ReadBuf &rbuf_ref; + size_t pos = 0; + + explicit ReadBufStream(const ReadBuf &buf): rbuf_ref{buf} {} + + size_t read(std::uint8_t *outp, size_t amount) override + { + if (amount > rbuf_ref.sz - pos) return 0; + + auto buf = static_cast(rbuf_ref.buf); + std::copy(buf + pos, buf + (pos + amount), outp); + pos += amount; + + return amount; + } + + bool is_ok() const override { return pos < rbuf_ref.sz; } +}; + template bool decode_png(const ReadBuf &in_buf, Img &out_img) { - struct ReadBufStream: public IStream { - const ReadBuf &rbuf_ref; size_t pos = 0; - - explicit ReadBufStream(const ReadBuf &buf): rbuf_ref{buf} {} - - size_t read(std::uint8_t *outp, size_t amount) override - { - if (amount > rbuf_ref.sz - pos) return 0; - - auto buf = static_cast(rbuf_ref.buf); - std::copy(buf + pos, buf + (pos + amount), outp); - pos += amount; - - return amount; - } - - bool is_ok() const override { return pos < rbuf_ref.sz; } - } stream{in_buf}; + struct ReadBufStream stream{in_buf}; return decode_png(stream, out_img); } +bool decode_colored_png(const ReadBuf &in_buf, ImageColorscale &out_img); + + // TODO: std::istream of FILE* could be similarly adapted in case its needed... diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 499f3c3be4..209f608c14 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -1265,15 +1265,11 @@ std::tuple, Polygons> generate_extra_perimeters_over return {extra_perims, diff(inset_overhang_area, inset_overhang_area_left_unfilled)}; } -void PerimeterGenerator::apply_extra_perimeters() +void PerimeterGenerator::apply_extra_perimeters(ExPolygons &infill_area) { if (this->lower_slices != nullptr && this->config->detect_overhang_wall && this->config->extra_perimeters_on_overhangs && this->config->wall_loops > 0 && this->layer_id > this->object_config->raft_layers) { // Generate extra perimeters on overhang areas, and cut them to these parts only, to save print time and material - ExPolygons infill_area; - for (const auto &internal_surface : this->fill_surfaces->surfaces) { - infill_area.push_back(internal_surface.expolygon); - } auto [extra_perimeters, filled_area] = generate_extra_perimeters_over_overhangs(infill_area, this->lower_slices_polygons(), this->config->wall_loops, this->overhang_flow, this->m_scaled_resolution, *this->object_config, @@ -1708,7 +1704,7 @@ void PerimeterGenerator::process_classic() } this->fill_surfaces->append(infill_exp, stInternal); - apply_extra_perimeters(); + apply_extra_perimeters(infill_exp); // BBS: get the no-overlap infill expolygons { @@ -2021,74 +2017,112 @@ void PerimeterGenerator::process_arachne() } } - // printf("New Layer: Layer ID %d\n",layer_id); //debug - new layer + // printf("New Layer: Layer ID %d\n",layer_id); //debug - new layer if (this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill && layer_id > 0) { // only enable inner outer inner algorithm after first layer if (ordered_extrusions.size() > 2) { // 3 walls minimum needed to do inner outer inner ordering int position = 0; // index to run the re-ordering for multiple external perimeters in a single island. int arr_i, arr_j = 0; // indexes to run through the walls in the for loops int outer, first_internal, second_internal, max_internal, current_perimeter; // allocate index values - // scan to find the external perimeter, first internal, second internal and last perimeter in the island - while (position < ordered_extrusions.size()) { + + // Initiate reorder sequence to bring any index 1 (first internal) perimeters ahead of any second internal perimeters + // Leaving these out of order will result in print defects on the external wall as they will be extruded prior to any + // external wall. To do the re-ordering, we are creating two extrusion arrays - reordered_extrusions which will contain + // the reordered extrusions and skipped_extrusions will contain the ones that were skipped in the scan + std::vector reordered_extrusions, skipped_extrusions; + bool found_second_internal = false; // helper variable to indicate the start of a new island + + for(auto extrusion_to_reorder : ordered_extrusions){ //scan the perimeters to reorder + switch (extrusion_to_reorder.extrusion->inset_idx) { + case 0: // external perimeter + if(found_second_internal){ //new island - move skipped extrusions to reordered array + for(auto extrusion_skipped : skipped_extrusions) + reordered_extrusions.emplace_back(extrusion_skipped); + skipped_extrusions.clear(); + } + reordered_extrusions.emplace_back(extrusion_to_reorder); + break; + case 1: // first internal perimeter + reordered_extrusions.emplace_back(extrusion_to_reorder); + break; + default: // second internal+ perimeter -> put them in the skipped extrusions array + skipped_extrusions.emplace_back(extrusion_to_reorder); + found_second_internal = true; + break; + } + } + if(ordered_extrusions.size()>reordered_extrusions.size()){ + // we didnt find any more islands, so lets move the remaining skipped perimeters to the reordered extrusions list. + for(auto extrusion_skipped : skipped_extrusions) + reordered_extrusions.emplace_back(extrusion_skipped); + skipped_extrusions.clear(); + } + + // Now start the sandwich mode wall re-ordering using the reordered_extrusions as the basis + // scan to find the external perimeter, first internal, second internal and last perimeter in the island. + // We then advance the position index to move to the second island and continue until there are no more + // perimeters left. + while (position < reordered_extrusions.size()) { outer = first_internal = second_internal = current_perimeter = -1; // initialise all index values to -1 - max_internal = ordered_extrusions.size()-1; // initialise the maximum internal perimeter to the last perimeter on the extrusion list + max_internal = reordered_extrusions.size()-1; // initialise the maximum internal perimeter to the last perimeter on the extrusion list // run through the walls to get the index values that need re-ordering until the first one for each // is found. Start at "position" index to enable the for loop to iterate for multiple external // perimeters in a single island - // printf("Reorder Loop. Position %d, extrusion list size: %d, Outer index %d, inner index %d, second inner index %d\n", position, ordered_extrusions.size(),outer,first_internal,second_internal); - for (arr_i = position; arr_i < ordered_extrusions.size(); ++arr_i) { - // printf("Perimeter: extrusion inset index %d, ordered extrusions array position %d\n",ordered_extrusions[arr_i].extrusion->inset_idx, arr_i); - switch (ordered_extrusions[arr_i].extrusion->inset_idx) { - case 0: // external perimeter - if (outer == -1) - outer = arr_i; - break; - case 1: // first internal wall - if (first_internal==-1 && arr_i>outer && outer!=-1) - first_internal = arr_i; - break; - case 2: // second internal wall - if (second_internal == -1 && arr_i > first_internal && outer!=-1) - second_internal = arr_i; - break; + // printf("Reorder Loop. Position %d, extrusion list size: %d, Outer index %d, inner index %d, second inner index %d\n", position, reordered_extrusions.size(),outer,first_internal,second_internal); + for (arr_i = position; arr_i < reordered_extrusions.size(); ++arr_i) { + // printf("Perimeter: extrusion inset index %d, ordered extrusions array position %d\n",reordered_extrusions[arr_i].extrusion->inset_idx, arr_i); + switch (reordered_extrusions[arr_i].extrusion->inset_idx) { + case 0: // external perimeter + if (outer == -1) + outer = arr_i; + break; + case 1: // first internal wall + if (first_internal==-1 && arr_i>outer && outer!=-1){ + first_internal = arr_i; + } + break; + case 2: // second internal wall + if (second_internal == -1 && arr_i > first_internal && outer!=-1){ + second_internal = arr_i; + } + break; } - if(outer >-1 && first_internal>-1 && second_internal>-1){ // found all three perimeters to re-order - if(ordered_extrusions[arr_i].extrusion->inset_idx == 0){ // found a new external perimeter -> this means we entered a new island. - arr_i=arr_i-1; //step back one perimeter - max_internal = arr_i; // new maximum internal perimeter is now this as we have found a new external perimeter, hence a new island. - break; // exit the for loop - } + if(outer >-1 && first_internal>-1 && second_internal>-1 && ordered_extrusions[arr_i].extrusion->inset_idx == 0){ // found a new external perimeter after we've found all three perimeters to re-order -> this means we entered a new island. + arr_i=arr_i-1; //step back one perimeter + max_internal = arr_i; // new maximum internal perimeter is now this as we have found a new external perimeter, hence a new island. + break; // exit the for loop } } - - // printf("Layer ID %d, Outer index %d, inner index %d, second inner index %d, maximum internal perimeter %d \n",layer_id,outer,first_internal,second_internal, max_internal); - if (outer > -1 && first_internal > -1 && second_internal > -1) { // found perimeters to re-order? - std::vector inner_outer_extrusions; // temporary array to hold extrusions for reordering - inner_outer_extrusions.reserve(max_internal - position + 1); // reserve array containing the number of perimeters before a new island. Variables are array indexes hence need to add +1 to convert to position allocations - // printf("Allocated array size %d, max_internal index %d, start position index %d \n",max_internal-position+1,max_internal,position); - - for (arr_j = max_internal; arr_j >=position; --arr_j){ // go inside out towards the external perimeter (perimeters in reverse order) and store all internal perimeters until the first one identified with inset index 2 - if(arr_j >= second_internal){ - // printf("Inside out loop: Mapped perimeter index %d to array position %d\n", arr_j, max_internal-arr_j); - inner_outer_extrusions[max_internal-arr_j] = ordered_extrusions[arr_j]; - current_perimeter++; - } - } - - for (arr_j = position; arr_j < second_internal; ++arr_j){ // go outside in and map the remaining perimeters (external and first internal wall(s)) using the outside in wall order - // printf("Outside in loop: Mapped perimeter index %d to array position %d\n", arr_j, current_perimeter+1); - inner_outer_extrusions[++current_perimeter] = ordered_extrusions[arr_j]; - } - - for(arr_j = position; arr_j <= max_internal; ++arr_j) // replace perimeter array with the new re-ordered array - ordered_extrusions[arr_j] = inner_outer_extrusions[arr_j-position]; - } else - break; - // go to the next perimeter to continue scanning for external walls in the same island + + // printf("Layer ID %d, Outer index %d, inner index %d, second inner index %d, maximum internal perimeter %d \n",layer_id,outer,first_internal,second_internal, max_internal); + if (outer > -1 && first_internal > -1 && second_internal > -1) { // found perimeters to re-order? + std::vector inner_outer_extrusions; // temporary array to hold extrusions for reordering + inner_outer_extrusions.reserve(max_internal - position + 1); // reserve array containing the number of perimeters before a new island. Variables are array indexes hence need to add +1 to convert to position allocations + // printf("Allocated array size %d, max_internal index %d, start position index %d \n",max_internal-position+1,max_internal,position); + + for (arr_j = max_internal; arr_j >=position; --arr_j){ // go inside out towards the external perimeter (perimeters in reverse order) and store all internal perimeters until the first one identified with inset index 2 + if(arr_j >= second_internal){ + //printf("Inside out loop: Mapped perimeter index %d to array position %d\n", arr_j, max_internal-arr_j); + inner_outer_extrusions[max_internal-arr_j] = reordered_extrusions[arr_j]; + current_perimeter++; + } + } + + for (arr_j = position; arr_j < second_internal; ++arr_j){ // go outside in and map the remaining perimeters (external and first internal wall(s)) using the outside in wall order + // printf("Outside in loop: Mapped perimeter index %d to array position %d\n", arr_j, current_perimeter+1); + inner_outer_extrusions[++current_perimeter] = reordered_extrusions[arr_j]; + } + + for(arr_j = position; arr_j <= max_internal; ++arr_j) // replace perimeter array with the new re-ordered array + ordered_extrusions[arr_j] = inner_outer_extrusions[arr_j-position]; + } else + break; + // go to the next perimeter from the current position to continue scanning for external walls in the same island position = arr_i + 1; } } } + if (ExtrusionEntityCollection extrusion_coll = traverse_extrusions(*this, ordered_extrusions); !extrusion_coll.empty()) this->loops->append(extrusion_coll); @@ -2129,7 +2163,7 @@ void PerimeterGenerator::process_arachne() } this->fill_surfaces->append(infill_exp, stInternal); - apply_extra_perimeters(); + apply_extra_perimeters(infill_exp); // BBS: get the no-overlap infill expolygons { diff --git a/src/libslic3r/PerimeterGenerator.hpp b/src/libslic3r/PerimeterGenerator.hpp index 30b07a9fa3..2ae714473c 100644 --- a/src/libslic3r/PerimeterGenerator.hpp +++ b/src/libslic3r/PerimeterGenerator.hpp @@ -79,7 +79,7 @@ public: private: std::map generate_lower_polygons_series(float width); void split_top_surfaces(const ExPolygons &orig_polygons, ExPolygons &top_fills, ExPolygons &non_top_polygons, ExPolygons &fill_clip) const; - void apply_extra_perimeters(); + void apply_extra_perimeters(ExPolygons& infill_area); private: bool m_spiral_vase; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 82747b7578..6fc81cb306 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -722,7 +722,7 @@ static std::vector s_Preset_print_options { "seam_position", "staggered_inner_seams", "wall_infill_order", "sparse_infill_density", "sparse_infill_pattern", "top_surface_pattern", "bottom_surface_pattern", "infill_direction", "minimum_sparse_infill_area", "reduce_infill_retraction","internal_solid_infill_pattern", - "ironing_type", "ironing_pattern", "ironing_flow", "ironing_speed", "ironing_spacing", + "ironing_type", "ironing_pattern", "ironing_flow", "ironing_speed", "ironing_spacing", "ironing_angle", "max_travel_detour_distance", "fuzzy_skin", "fuzzy_skin_thickness", "fuzzy_skin_point_distance", "max_volumetric_extrusion_rate_slope", "max_volumetric_extrusion_rate_slope_segment_length", @@ -742,7 +742,7 @@ static std::vector s_Preset_print_options { "ooze_prevention", "standby_temperature_delta", "interface_shells", "line_width", "initial_layer_line_width", "inner_wall_line_width", "outer_wall_line_width", "sparse_infill_line_width", "internal_solid_infill_line_width", "top_surface_line_width", "support_line_width", "infill_wall_overlap", "bridge_flow", - "elefant_foot_compensation", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower", + "elefant_foot_compensation", "elefant_foot_compensation_layers", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower", "prime_tower_width", "prime_tower_brim_width", "prime_volume", "wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits", "flush_into_infill", "flush_into_objects", "flush_into_support", @@ -781,6 +781,8 @@ static std::vector s_Preset_filament_options { "temperature_vitrification", "reduce_fan_stop_start_freq", "slow_down_for_layer_cooling", "fan_min_speed", "fan_max_speed", "enable_overhang_bridge_fan", "overhang_fan_speed", "overhang_fan_threshold", "close_fan_the_first_x_layers", "full_fan_speed_layer", "fan_cooling_layer_time", "slow_down_layer_time", "slow_down_min_speed", "filament_start_gcode", "filament_end_gcode", + //exhaust fan control + "activate_air_filtration","during_print_exhaust_fan_speed","complete_print_exhaust_fan_speed", // Retract overrides "filament_retraction_length", "filament_z_hop", "filament_z_hop_types", "filament_retract_lift_above", "filament_retract_lift_below", "filament_retract_lift_enforce", "filament_retraction_speed", "filament_deretraction_speed", "filament_retract_restart_extra", "filament_retraction_minimum_travel", "filament_retract_when_changing_layer", "filament_wipe", "filament_retract_before_wipe", @@ -788,7 +790,7 @@ static std::vector s_Preset_filament_options { "filament_vendor", "compatible_prints", "compatible_prints_condition", "compatible_printers", "compatible_printers_condition", "inherits", //BBS "filament_wipe_distance", "additional_cooling_fan_speed", - "bed_temperature_difference", "nozzle_temperature_range_low", "nozzle_temperature_range_high", + "nozzle_temperature_range_low", "nozzle_temperature_range_high", //SoftFever "enable_pressure_advance", "pressure_advance","chamber_temperature", "filament_shrink", "support_material_interface_fan_speed", "filament_notes" /*,"filament_seam_gap"*/, "filament_loading_speed", "filament_loading_speed_start", "filament_load_time", @@ -809,13 +811,14 @@ static std::vector s_Preset_printer_options { "printer_technology", "printable_area", "bed_exclude_area","bed_custom_texture", "bed_custom_model", "gcode_flavor", "fan_kickstart", "fan_speedup_time", "fan_speedup_overhangs", - "single_extruder_multi_material", "machine_start_gcode", "machine_end_gcode", "before_layer_change_gcode", "layer_change_gcode", "change_filament_gcode", + "single_extruder_multi_material", "machine_start_gcode", "machine_end_gcode", "before_layer_change_gcode", "layer_change_gcode", "time_lapse_gcode", "change_filament_gcode", "printer_model", "printer_variant", "printable_height", "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "default_print_profile", "inherits", "silent_mode", // BBS "scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time","time_cost", "machine_pause_gcode", "template_custom_gcode", - "nozzle_type", "nozzle_hrc","auxiliary_fan", "nozzle_volume","upward_compatible_machine", "z_hop_types", "retract_lift_enforce", + "nozzle_type", "nozzle_hrc","auxiliary_fan", "nozzle_volume","upward_compatible_machine", "z_hop_types", "retract_lift_enforce","support_chamber_temp_control","support_air_filtration","printer_structure", + "best_object_pos", //SoftFever "host_type", "print_host", "printhost_apikey", "print_host_webui", diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index a54b6d14c4..8a5ead8dcf 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -2828,6 +2828,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool std::pair PresetBundle::load_vendor_configs_from_json( const std::string &path, const std::string &vendor_name, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule) { + CNumericLocalesSetter locales_setter; // Enable substitutions for user config bundle, throw an exception when loading a system profile. ConfigSubstitutionContext substitution_context { compatibility_rule }; PresetsConfigSubstitutions substitutions; diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index bfa4a92b2a..798d5bc685 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -146,6 +146,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "textured_plate_temp_initial_layer", "gcode_add_line_number", "layer_change_gcode", + "time_lapse_gcode", "fan_min_speed", "fan_max_speed", "printable_height", @@ -177,12 +178,12 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "wipe_distance", "curr_bed_type", "nozzle_volume", - "chamber_temperature", - "thumbnails", "nozzle_hrc", "required_nozzle_HRC", "upward_compatible_machine", // SoftFever + "chamber_temperature", + "thumbnails", "seam_gap", "role_based_wipe_speed", "wipe_speed", @@ -194,7 +195,10 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "gcode_label_objects", "exclude_object", "support_material_interface_fan_speed", - "single_extruder_multi_material_priming" + "single_extruder_multi_material_priming", + "activate_air_filtration", + "during_print_exhaust_fan_speed", + "complete_print_exhaust_fan_speed" }; static std::unordered_set steps_ignore; diff --git a/src/libslic3r/PrintBase.cpp b/src/libslic3r/PrintBase.cpp index 8b8b481880..5ba9306b5d 100644 --- a/src/libslic3r/PrintBase.cpp +++ b/src/libslic3r/PrintBase.cpp @@ -110,11 +110,11 @@ void PrintBase::set_status(int percent, const std::string &message, unsigned in BOOST_LOG_TRIVIAL(debug) <m_status_callback) { - auto status = print_object ? SlicingStatus(*print_object, step, message, message_id) : SlicingStatus(*this, step, message, message_id); + auto status = print_object ? SlicingStatus(*print_object, step, message, message_id, warning_level) : SlicingStatus(*this, step, message, message_id, warning_level); m_status_callback(status); } else if (! message.empty()) @@ -122,12 +122,12 @@ void PrintBase::status_update_warnings(int step, PrintStateBase::WarningLevel /* } //BBS: add PrintObject id into slicing status -void PrintBase::status_update_warnings(int step, PrintStateBase::WarningLevel /* warning_level */, +void PrintBase::status_update_warnings(int step, PrintStateBase::WarningLevel warning_level, const std::string& message, PrintObjectBase &object, PrintStateBase::SlicingNotificationType message_id) { //BBS: add object it into slicing status if (this->m_status_callback) { - m_status_callback(SlicingStatus(object, step, message, message_id)); + m_status_callback(SlicingStatus(object, step, message, message_id, warning_level)); } else if (!message.empty()) BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", PrintObject warning: %1%\n")% message.c_str(); diff --git a/src/libslic3r/PrintBase.hpp b/src/libslic3r/PrintBase.hpp index e70d52e2c5..70198e8938 100644 --- a/src/libslic3r/PrintBase.hpp +++ b/src/libslic3r/PrintBase.hpp @@ -431,18 +431,18 @@ public: struct SlicingStatus { SlicingStatus(int percent, const std::string &text, unsigned int flags = 0, int warning_step = -1, - PrintStateBase::SlicingNotificationType msg_type = PrintStateBase::SlicingDefaultNotification) : - percent(percent), text(text), flags(flags), warning_step(warning_step), message_type(msg_type) + PrintStateBase::SlicingNotificationType msg_type = PrintStateBase::SlicingDefaultNotification, PrintStateBase::WarningLevel warning_level = PrintStateBase::WarningLevel::NON_CRITICAL) : + percent(percent), text(text), flags(flags), warning_step(warning_step), message_type(msg_type), warning_level(warning_level) { } SlicingStatus(const PrintBase &print, int warning_step, const std::string& text, - PrintStateBase::SlicingNotificationType msg_type = PrintStateBase::SlicingDefaultNotification) : - flags(UPDATE_PRINT_STEP_WARNINGS), warning_object_id(print.id()), text(text), warning_step(warning_step), message_type(msg_type) + PrintStateBase::SlicingNotificationType msg_type = PrintStateBase::SlicingDefaultNotification, PrintStateBase::WarningLevel warning_level = PrintStateBase::WarningLevel::NON_CRITICAL) : + flags(UPDATE_PRINT_STEP_WARNINGS), warning_object_id(print.id()), text(text), warning_step(warning_step), message_type(msg_type), warning_level(warning_level) { } SlicingStatus(const PrintObjectBase &print_object, int warning_step, const std::string& text, - PrintStateBase::SlicingNotificationType msg_type = PrintStateBase::SlicingDefaultNotification) : - flags(UPDATE_PRINT_OBJECT_STEP_WARNINGS), warning_object_id(print_object.id()), text(text), warning_step(warning_step), message_type(msg_type) + PrintStateBase::SlicingNotificationType msg_type = PrintStateBase::SlicingDefaultNotification, PrintStateBase::WarningLevel warning_level = PrintStateBase::WarningLevel::NON_CRITICAL) : + flags(UPDATE_PRINT_OBJECT_STEP_WARNINGS), warning_object_id(print_object.id()), text(text), warning_step(warning_step), message_type(msg_type), warning_level(warning_level) { } int percent { -1 }; @@ -466,6 +466,7 @@ public: int warning_step { -1 }; PrintStateBase::SlicingNotificationType message_type {PrintStateBase::SlicingDefaultNotification}; + PrintStateBase::WarningLevel warning_level {PrintStateBase::WarningLevel::NON_CRITICAL}; }; typedef std::function status_callback_type; // Default status console print out in the form of percent => message. @@ -532,7 +533,7 @@ protected: void status_update_warnings(int step, PrintStateBase::WarningLevel warning_level, const std::string &message, const PrintObjectBase* print_object = nullptr, PrintStateBase::SlicingNotificationType message_id = PrintStateBase::SlicingDefaultNotification); //BBS: add api to update printobject's warnings - void status_update_warnings(int step, PrintStateBase::WarningLevel /* warning_level */, + void status_update_warnings(int step, PrintStateBase::WarningLevel warning_level, const std::string& message, PrintObjectBase &object, PrintStateBase::SlicingNotificationType message_id = PrintStateBase::SlicingDefaultNotification); // If the background processing stop was requested, throw CanceledException. diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 48f54e8005..5759fdfa2c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -296,6 +296,15 @@ static t_config_enum_values s_keys_map_NozzleType { }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(NozzleType) +static t_config_enum_values s_keys_map_PrinterStructure { + {"undefine", int(PrinterStructure::psUndefine)}, + {"corexy", int(PrinterStructure::psCoreXY)}, + {"i3", int(PrinterStructure::psI3)}, + {"hbot", int(PrinterStructure::psHbot)}, + {"delta", int(PrinterStructure::psDelta)} +}; +CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(PrinterStructure) + static t_config_enum_values s_keys_map_PerimeterGeneratorType{ { "classic", int(PerimeterGeneratorType::Classic) }, { "arachne", int(PerimeterGeneratorType::Arachne) } @@ -383,6 +392,17 @@ void PrintConfigDef::init_common_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0.)); + def = this->add("elefant_foot_compensation_layers", coInt); + def->label = L("Elephant foot compensation layers"); + def->category = L("Quality"); + def->tooltip = L("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."); + def->sidetext = L("layers"); + def->min = 1; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionInt(1)); + def = this->add("layer_height", coFloat); def->label = L("Layer height"); def->category = L("Quality"); @@ -492,7 +512,7 @@ void PrintConfigDef::init_common_params() def->mode = comAdvanced; def->cli = ConfigOptionDef::nocli; def->set_default_value(new ConfigOptionEnum(atKeyPassword)); - + // temporary workaround for compatibility with older Slicer { def = this->add("preset_name", coString); @@ -617,7 +637,7 @@ void PrintConfigDef::init_fff_params() def->enum_values.emplace_back("Textured PEI Plate"); def->enum_labels.emplace_back(L("Cool Plate")); def->enum_labels.emplace_back(L("Engineering Plate")); - def->enum_labels.emplace_back(L("High Temp Plate")); + def->enum_labels.emplace_back(L("Smooth PEI Plate / High Temp Plate")); def->enum_labels.emplace_back(L("Textured PEI Plate")); def->set_default_value(new ConfigOptionEnum(btPC)); @@ -1036,6 +1056,30 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; + def = this->add("activate_air_filtration",coBools); + def->label = L("Activate air filtration"); + def->tooltip = L("Activate for better air filtration"); + def->mode = comSimple; + def->set_default_value(new ConfigOptionBools{false}); + + def = this->add("during_print_exhaust_fan_speed", coInts); + def->label = L("Fan speed"); + def->tooltip=L("Speed of exhuast fan during printing.This speed will overwrite the speed in filament custom gcode"); + def->sidetext = L("%"); + def->min=0; + def->max=100; + def->mode = comSimple; + def->set_default_value(new ConfigOptionInts{60}); + + def = this->add("complete_print_exhaust_fan_speed", coInts); + def->label = L("Fan speed"); + def->sidetext = L("%"); + def->tooltip=L("Speed of exhuast fan after printing completes"); + def->min=0; + def->max=100; + def->mode = comSimple; + def->set_default_value(new ConfigOptionInts{80}); + def = this->add("close_fan_the_first_x_layers", coInts); def->label = L("No cooling for the first"); def->tooltip = L("Close all cooling fan for the first certain layers. Cooling fan of the first layer used to be closed " @@ -1546,12 +1590,17 @@ def = this->add("filament_loading_speed", coFloats); def->enum_values.push_back("PC"); def->enum_values.push_back("PA"); def->enum_values.push_back("PA-CF"); + def->enum_values.push_back("PA6-CF"); def->enum_values.push_back("PLA-CF"); def->enum_values.push_back("PET-CF"); def->enum_values.push_back("PETG-CF"); def->enum_values.push_back("PVA"); def->enum_values.push_back("HIPS"); def->enum_values.push_back("PLA-AERO"); + def->enum_values.push_back("PPS"); + def->enum_values.push_back("PPS-CF"); + def->enum_values.push_back("PPA-CF"); + def->enum_values.push_back("PPA-GF"); def->mode = comSimple; def->set_default_value(new ConfigOptionStrings { "PLA" }); @@ -1790,8 +1839,8 @@ def = this->add("filament_loading_speed", coFloats); def = this->add("accel_to_decel_factor", coPercent); def->label = L("accel_to_decel"); - def->tooltip = L("Klipper's max_accel_to_decel will be adjusted to this % of acceleration"); - def->sidetext = L("%"); + def->tooltip = L("Klipper's max_accel_to_decel will be adjusted to this %% of acceleration"); + def->sidetext = L("%%"); def->min = 1; def->max = 100; def->mode = comAdvanced; @@ -2022,6 +2071,8 @@ def = this->add("filament_loading_speed", coFloats); def->tooltip = L("Enable this to enable the camera on printer to check the quality of first layer"); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); + + //BBS // def = this->add("spaghetti_detector", coBool); // def->label = L("Enable spaghetti detector"); @@ -2045,6 +2096,7 @@ def = this->add("filament_loading_speed", coFloats); def->mode = comAdvanced; def->set_default_value(new ConfigOptionEnum(ntUndefine)); + def = this->add("nozzle_hrc", coInt); def->label = L("Nozzle HRC"); def->tooltip = L("The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing."); @@ -2054,12 +2106,36 @@ def = this->add("filament_loading_speed", coFloats); def->mode = comDevelop; def->set_default_value(new ConfigOptionInt{0}); + def = this->add("printer_structure", coEnum); + def->label = L("Printer structure"); + def->tooltip = L("The physical arrangement and components of a printing device"); + def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); + def->enum_values.push_back("undefine"); + def->enum_values.push_back("corexy"); + def->enum_values.push_back("i3"); + def->enum_values.push_back("hbot"); + def->enum_values.push_back("delta"); + def->enum_labels.push_back(L("Undefine")); + def->enum_labels.push_back(L("CoreXY")); + def->enum_labels.push_back(L("I3")); + def->enum_labels.push_back(L("Hbot")); + def->enum_labels.push_back(L("Delta")); + def->mode = comDevelop; + def->set_default_value(new ConfigOptionEnum(psUndefine)); + + def = this->add("best_object_pos", coPoint); + def->label = L("Best object position"); + def->tooltip = L("Best auto arranging position in range [0,1] w.r.t. bed shape."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionPoint(Vec2d(0.5, 0.5))); + def = this->add("auxiliary_fan", coBool); def->label = L("Auxiliary part cooling fan"); def->tooltip = L("Enable this option if machine has auxiliary part cooling fan"); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); + def = this->add("fan_speedup_time", coFloat); // Label is set in Tab.cpp in the Line object. //def->label = L("Fan speed-up time"); @@ -2090,6 +2166,7 @@ def = this->add("filament_loading_speed", coFloats); def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0)); + def = this->add("time_cost", coFloat); def->label = L("Time cost"); def->tooltip = L("The printer cost per hour"); @@ -2098,6 +2175,19 @@ def = this->add("filament_loading_speed", coFloats); def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0)); + def =this->add("support_chamber_temp_control",coBool); + def->label=L("Support control chamber temperature"); + def->tooltip=L("This option is enabled if machine support controlling chamber temperature"); + def->mode=comDevelop; + def->set_default_value(new ConfigOptionBool(false)); + def->readonly=false; + + def =this->add("support_air_filtration",coBool); + def->label=L("Support air filtration"); + def->tooltip=L("Enable this if printer support air filtration"); + def->mode=comDevelop; + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("gcode_flavor", coEnum); def->label = L("G-code flavor"); def->tooltip = L("What kind of gcode the printer is compatible with"); @@ -2245,6 +2335,7 @@ def = this->add("filament_loading_speed", coFloats); def = this->add("ironing_pattern", coEnum); def->label = L("Ironing Pattern"); + def->tooltip = L("The pattern that will be used when ironing"); def->category = L("Quality"); def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("concentric"); @@ -2285,6 +2376,16 @@ def = this->add("filament_loading_speed", coFloats); def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(20)); + def = this->add("ironing_angle", coFloat); + def->label = L("Ironing angle"); + def->category = L("Quality"); + def->tooltip = L("The angle ironing is done at. A negative number disables this function and uses the default method."); + def->sidetext = L("°"); + def->min = -1; + def->max = 359; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(-1)); + def = this->add("layer_change_gcode", coString); def->label = L("Layer change G-code"); def->tooltip = L("This gcode part is inserted at every layer change after lift z"); @@ -2294,6 +2395,14 @@ def = this->add("filament_loading_speed", coFloats); def->mode = comAdvanced; def->set_default_value(new ConfigOptionString("")); + def = this->add("time_lapse_gcode",coString); + def->label = L("Time lapse G-code"); + def->multiline = true; + def->full_width = true; + def->height =5; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionString("")); + def = this->add("silent_mode", coBool); def->label = L("Supports silent mode"); def->tooltip = L("Whether the machine supports silent mode in which machine use lower acceleration to print"); @@ -2891,6 +3000,21 @@ def = this->add("filament_loading_speed", coFloats); def->mode = comSimple; def->set_default_value(new ConfigOptionFloats { 0.4 }); + def = this->add("retract_lift_above", coFloats); + def->label = L("Z hop lower boundary"); + def->tooltip = L("Z hop will only come into effect when Z is above this value and is below the parameter: \"Z hop upper boundary\""); + def->sidetext = L("mm"); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloats{0.}); + + def = this->add("retract_lift_below", coFloats); + def->label = L("Z hop upper boundary"); + def->tooltip = L("If this value is positive, Z hop will only come into effect when Z is above the parameter: \"Z hop lower boundary\" and is below this value"); + def->sidetext = L("mm"); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloats{0.}); + + def = this->add("z_hop_types", coEnums); def->label = L("Z hop type"); def->tooltip = L("Z hop type"); @@ -3733,7 +3857,10 @@ def = this->add("filament_loading_speed", coFloats); def = this->add("chamber_temperature", coInts); def->label = L("Chamber temperature"); - def->tooltip = L("Target chamber temperature"); + def->tooltip = L("Higher chamber temperature can help suppress or reduce warping and potentially lead to higher interlayer bonding strength for high temperature materials like ABS, ASA, PC, PA and so on." + "At the same time, the air filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and other low temperature materials," + "the actual chamber temperature should not be high to avoid cloggings, so 0 which stands for turning off is highly recommended" + ); def->sidetext = L("°C"); def->full_label = L("Chamber temperature"); def->min = 0; @@ -3765,15 +3892,6 @@ def = this->add("filament_loading_speed", coFloats); def->max = max_temp; def->set_default_value(new ConfigOptionInts { 240 }); - def = this->add("bed_temperature_difference", coInts); - def->label = L("Bed temperature difference"); - def->tooltip = L("Do not recommend bed temperature of other layer to be lower than initial layer for more than this threshold. " - "Too low bed temperature of other layer may cause the model broken free from build plate"); - def->sidetext = L("°C"); - def->min = 0; - def->max = 30; - def->mode = comDevelop; - def->set_default_value(new ConfigOptionInts { 10 }); def = this->add("detect_thin_wall", coBool); def->label = L("Detect thin wall"); @@ -4960,6 +5078,22 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va } else if(opt_key == "single_extruder_multi_material") { value = "1"; } + else if (opt_key == "sparse_infill_anchor") { + opt_key = "infill_anchor"; + } + else if (opt_key == "sparse_infill_anchor_max") { + opt_key = "infill_anchor_max"; + } + else if (opt_key == "chamber_temperatures") { + opt_key = "chamber_temperature"; + } + else if (opt_key == "thumbnail_size") { + opt_key = "thumbnails"; + } + else if (opt_key == "top_one_wall_type" && value != "none") { + opt_key = "only_one_wall_top"; + value = "1"; + } // Ignore the following obsolete configuration keys: static std::set ignore = { @@ -4974,7 +5108,7 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va "remove_freq_sweep", "remove_bed_leveling", "remove_extrusion_calibration", "support_transition_line_width", "support_transition_speed", "bed_temperature", "bed_temperature_initial_layer", "can_switch_nozzle_type", "can_add_auxiliary_fan", "extra_flush_volume", "spaghetti_detector", "adaptive_layer_height", - "z_hop_type", "z_lift_type" + "z_hop_type", "z_lift_type", "bed_temperature_difference" }; if (ignore.find(opt_key) != ignore.end()) { @@ -5683,6 +5817,12 @@ CLIActionsConfigDef::CLIActionsConfigDef() def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(false)); + def = this->add("min_save", coBool); + def->label = L("Minimum save"); + def->tooltip = L("export 3mf with minimum size."); + def->cli_params = "option"; + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("mtcpp", coInt); def->label = L("mtcpp"); def->tooltip = L("max triangle count per plate for slicing."); @@ -5789,12 +5929,12 @@ CLITransformConfigDef::CLITransformConfigDef() def->cli_params = "count"; def->set_default_value(new ConfigOptionInt(1)); - /*def = this->add("ensure_on_bed", coBool); + def = this->add("ensure_on_bed", coBool); def->label = L("Ensure on bed"); - def->tooltip = L("Lift the object above the bed when it is partially below. Enabled by default, use --no-ensure-on-bed to disable."); - def->set_default_value(new ConfigOptionBool(true)); + def->tooltip = L("Lift the object above the bed when it is partially below. Disabled by default"); + def->set_default_value(new ConfigOptionBool(false)); - def = this->add("copy", coInt); + /*def = this->add("copy", coInt); def->label = L("Copy"); def->tooltip =L("Duplicate copies of model"); def->min = 1; @@ -5814,18 +5954,18 @@ CLITransformConfigDef::CLITransformConfigDef() def->tooltip = L("Convert the units of model"); def->set_default_value(new ConfigOptionBool(false)); - def = this->add("orient", coBool); - def->label = L("Orient"); - def->tooltip = L("Orient the model"); + def = this->add("orient", coInt); + def->label = L("Orient Options"); + def->tooltip = L("Orient options: 0-disable, 1-enable, others-auto"); //def->cli = "orient|o"; - def->set_default_value(new ConfigOptionBool(false)); + def->set_default_value(new ConfigOptionInt(0)); /*def = this->add("repair", coBool); def->label = L("Repair"); def->tooltip = L("Repair the model's meshes if it is non-manifold mesh"); def->set_default_value(new ConfigOptionBool(false));*/ - /*def = this->add("rotate", coFloat); + def = this->add("rotate", coFloat); def->label = L("Rotate"); def->tooltip = L("Rotation angle around the Z axis in degrees."); def->set_default_value(new ConfigOptionFloat(0)); @@ -5838,7 +5978,7 @@ CLITransformConfigDef::CLITransformConfigDef() def = this->add("rotate_y", coFloat); def->label = L("Rotate around Y"); def->tooltip = L("Rotation angle around the Y axis in degrees."); - def->set_default_value(new ConfigOptionFloat(0));*/ + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("scale", coFloat); def->label = L("Scale"); @@ -5947,6 +6087,12 @@ CLIMiscConfigDef::CLIMiscConfigDef() def->tooltip = L("Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver."); def->min = 0;*/ #endif /* _MSC_VER */ + + def = this->add("load_custom_gcodes", coString); + def->label = L("Load custom gcode"); + def->tooltip = L("Load custom gcode from json"); + def->cli_params = "custom_gcode_toolchange.json"; + def->set_default_value(new ConfigOptionString()); } const CLIActionsConfigDef cli_actions_config_def; @@ -6017,6 +6163,17 @@ Polygon get_bed_shape_with_excluded_area(const PrintConfig& cfg) if (!tmp.empty()) bed_poly = tmp[0]; return bed_poly; } +bool has_skirt(const DynamicPrintConfig& cfg) +{ + auto opt_skirt_height = cfg.option("skirt_height"); + auto opt_skirt_loops = cfg.option("skirt_loops"); + auto opt_draft_shield = cfg.option("draft_shield"); + return (opt_skirt_height && opt_skirt_height->getInt() > 0 && opt_skirt_loops && opt_skirt_loops->getInt() > 0) + || (opt_draft_shield && opt_draft_shield->getInt() != dsDisabled); +} +float get_real_skirt_dist(const DynamicPrintConfig& cfg) { + return has_skirt(cfg) ? cfg.opt_float("skirt_distance") : 0; +} } // namespace Slic3r #include diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index e7a3a0a48f..7e1d5106cc 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -208,6 +208,15 @@ enum NozzleType { ntCount }; +// BBS +enum PrinterStructure { + psUndefine=0, + psCoreXY, + psI3, + psHbot, + psDelta +}; + // BBS enum ZHopType { zhtAuto = 0, @@ -643,6 +652,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, brim_ears_max_angle)) ((ConfigOptionBool, bridge_no_support)) ((ConfigOptionFloat, elefant_foot_compensation)) + ((ConfigOptionInt, elefant_foot_compensation_layers)) ((ConfigOptionFloat, max_bridge_length)) ((ConfigOptionFloatOrPercent, line_width)) // Force the generation of solid shells between adjacent materials/volumes. @@ -765,6 +775,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionPercent, ironing_flow)) ((ConfigOptionFloat, ironing_spacing)) ((ConfigOptionFloat, ironing_speed)) + ((ConfigOptionFloat, ironing_angle)) // Detect bridging perimeters ((ConfigOptionBool, detect_overhang_wall)) ((ConfigOptionInt, wall_filament)) @@ -878,8 +889,10 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionBool, gcode_add_line_number)) ((ConfigOptionBool, bbl_bed_temperature_gcode)) ((ConfigOptionEnum, gcode_flavor)) + ((ConfigOptionFloat, time_cost)) ((ConfigOptionString, layer_change_gcode)) + ((ConfigOptionString, time_lapse_gcode)) ((ConfigOptionFloat, max_volumetric_extrusion_rate_slope)) ((ConfigOptionInt, max_volumetric_extrusion_rate_slope_segment_length)) @@ -911,6 +924,11 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionEnum, nozzle_type)) ((ConfigOptionInt, nozzle_hrc)) ((ConfigOptionBool, auxiliary_fan)) + ((ConfigOptionBool, support_air_filtration)) + ((ConfigOptionEnum,printer_structure)) + ((ConfigOptionBool, support_chamber_temp_control)) + + // SoftFever ((ConfigOptionBool, use_firmware_retraction)) ((ConfigOptionBool, use_relative_e_distances)) @@ -994,6 +1012,9 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionFloatOrPercent, bridge_acceleration)) ((ConfigOptionFloat, travel_acceleration)) ((ConfigOptionFloatOrPercent, sparse_infill_acceleration)) + ((ConfigOptionBools, activate_air_filtration)) + ((ConfigOptionInts, during_print_exhaust_fan_speed)) + ((ConfigOptionInts, complete_print_exhaust_fan_speed)) ((ConfigOptionFloatOrPercent, internal_solid_infill_acceleration)) ((ConfigOptionFloatOrPercent, initial_layer_line_width)) ((ConfigOptionFloat, initial_layer_print_height)) @@ -1015,6 +1036,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionInts, fan_min_speed)) ((ConfigOptionFloats, min_layer_height)) ((ConfigOptionFloat, printable_height)) + ((ConfigOptionPoint, best_object_pos)) ((ConfigOptionFloats, slow_down_min_speed)) ((ConfigOptionFloats, nozzle_diameter)) ((ConfigOptionBool, reduce_infill_retraction)) @@ -1036,7 +1058,6 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionInts , chamber_temperature)) ((ConfigOptionBools, wipe)) // BBS - ((ConfigOptionInts, bed_temperature_difference)) ((ConfigOptionInts, nozzle_temperature_range_low)) ((ConfigOptionInts, nozzle_temperature_range_high)) ((ConfigOptionFloats, wipe_distance)) @@ -1384,6 +1405,8 @@ Points get_bed_shape(const DynamicPrintConfig &cfg); Points get_bed_shape(const PrintConfig &cfg); Points get_bed_shape(const SLAPrinterConfig &cfg); Slic3r::Polygon get_bed_shape_with_excluded_area(const PrintConfig& cfg); +bool has_skirt(const DynamicPrintConfig& cfg); +float get_real_skirt_dist(const DynamicPrintConfig& cfg); // ModelConfig is a wrapper around DynamicPrintConfig with an addition of a timestamp. // Each change of ModelConfig is tracked by assigning a new timestamp from a global counter. diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 00cf809d9c..8fb12feedf 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -507,7 +507,7 @@ void PrintObject::generate_support_material() {LargeOverhang,L("large overhangs")} }; std::string warning_message = format(L("It seems object %s has %s. Please re-orient the object or enable support generation."), this->model_object()->name, reasons[sntype]); - this->active_step_add_warning(PrintStateBase::WarningLevel::CRITICAL, warning_message, PrintStateBase::SlicingNeedSupportOn); + this->active_step_add_warning(PrintStateBase::WarningLevel::NON_CRITICAL, warning_message, PrintStateBase::SlicingNeedSupportOn); } #if 0 @@ -805,6 +805,7 @@ bool PrintObject::invalidate_state_by_config_options( steps.emplace_back(posSlice); } else if ( opt_key == "elefant_foot_compensation" + || opt_key == "elefant_foot_compensation_layers" || opt_key == "support_top_z_distance" || opt_key == "support_bottom_z_distance" || opt_key == "xy_hole_compensation" @@ -874,7 +875,7 @@ bool PrintObject::invalidate_state_by_config_options( } else if ( opt_key == "bottom_shell_layers" || opt_key == "top_shell_layers") { - + steps.emplace_back(posPrepareInfill); const auto *old_shell_layers = old_config.option(opt_key); @@ -886,7 +887,7 @@ bool PrintObject::invalidate_state_by_config_options( if (value_changed && this->object_extruders().size() > 1) { steps.emplace_back(posSlice); - } + } else if (m_print->config().spiral_mode && opt_key == "bottom_shell_layers") { // Changing the number of bottom layers when a spiral vase is enabled requires re-slicing the object again. // Otherwise, holes in the bottom layers could be filled, as is reported in GH #5528. @@ -912,21 +913,13 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "bottom_surface_pattern" || opt_key == "internal_solid_infill_pattern" || opt_key == "external_fill_link_max_length" - || opt_key == "sparse_infill_pattern" || opt_key == "infill_anchor" || opt_key == "infill_anchor_max" || opt_key == "top_surface_line_width" || opt_key == "initial_layer_line_width") { steps.emplace_back(posInfill); } else if (opt_key == "sparse_infill_pattern") { - steps.emplace_back(posInfill); - const auto *old_fill_pattern = old_config.option>(opt_key); - const auto *new_fill_pattern = new_config.option>(opt_key); - assert(old_fill_pattern && new_fill_pattern); - // We need to recalculate infill surfaces when infill_only_where_needed is enabled, and we are switching from - // the Lightning infill to another infill or vice versa. - if (PrintObject::infill_only_where_needed && (new_fill_pattern->value == ipLightning || old_fill_pattern->value == ipLightning)) - steps.emplace_back(posPrepareInfill); + steps.emplace_back(posPrepareInfill); } else if (opt_key == "sparse_infill_density") { // One likely wants to reslice only when switching between zero infill to simulate boolean difference (subtracting volumes), // normal infill and 100% (solid) infill. diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 092ae14b59..42443c7408 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -1085,7 +1085,9 @@ void PrintObject::slice_volumes() m_print->throw_if_canceled(); Layer *layer = m_layers[layer_id]; // Apply size compensation and perform clipping of multi-part objects. - float elfoot = (layer_id == 0) ? elephant_foot_compensation_scaled : 0.f; + float elfoot = elephant_foot_compensation_scaled > 0 && layer_id < m_config.elefant_foot_compensation_layers.value ? + elephant_foot_compensation_scaled - (elephant_foot_compensation_scaled / m_config.elefant_foot_compensation_layers.value) * layer_id : + 0.f; if (layer->m_regions.size() == 1) { // Optimized version for a single region layer. // Single region, growing or shrinking. diff --git a/src/libslic3r/ProjectTask.hpp b/src/libslic3r/ProjectTask.hpp index cc4a80d99e..a86a24cf47 100644 --- a/src/libslic3r/ProjectTask.hpp +++ b/src/libslic3r/ProjectTask.hpp @@ -23,8 +23,9 @@ class BBLModelTask; enum MachineBedType { //BED_TYPE_AUTO = 0, BED_TYPE_PC = 0, - BED_TYPE_PEI, BED_TYPE_PE, + BED_TYPE_PEI, + BED_TYPE_PTE, BED_TYPE_COUNT, }; @@ -191,6 +192,8 @@ public: static BBLSubTask::SubTaskStatus parse_user_service_task_status(int status); }; +typedef std::function OnGetSubTaskFn; + class BBLTask { public: enum TaskStatus { diff --git a/src/libslic3r/ShortEdgeCollapse.cpp b/src/libslic3r/ShortEdgeCollapse.cpp index b36278c37f..0c940cb475 100644 --- a/src/libslic3r/ShortEdgeCollapse.cpp +++ b/src/libslic3r/ShortEdgeCollapse.cpp @@ -97,7 +97,8 @@ void its_short_edge_collpase(indexed_triangle_set &mesh, size_t target_triangle_ //shuffle the faces and traverse in random order, this MASSIVELY improves the quality of the result std::shuffle(face_indices.begin(), face_indices.end(), generator); - + + int allowed_face_removals = int(face_indices.size()) - int(target_triangle_count); for (const size_t &face_idx : face_indices) { if (face_removal_flags[face_idx]) { // if face already removed from previous collapses, skip (each collapse removes two triangles [at least] ) @@ -130,10 +131,13 @@ void its_short_edge_collpase(indexed_triangle_set &mesh, size_t target_triangle_ // remove faces remove_face(face_idx, neighbor_to_remove_face_idx); remove_face(neighbor_to_remove_face_idx, face_idx); + allowed_face_removals-=2; // break. this triangle is done break; } + + if (allowed_face_removals <= 0) { break; } } // filter face_indices, remove those that have been collapsed diff --git a/src/libslic3r/TreeSupport.hpp b/src/libslic3r/TreeSupport.hpp index 1a706e433b..2f3546ed23 100644 --- a/src/libslic3r/TreeSupport.hpp +++ b/src/libslic3r/TreeSupport.hpp @@ -419,6 +419,7 @@ private: std::vector> m_spanning_trees; std::vector< std::unordered_map> m_mst_line_x_layer_contour_caches; coordf_t MAX_BRANCH_RADIUS = 10.0; + coordf_t MAX_BRANCH_RADIUS_FIRST_LAYER = 12.0; coordf_t MIN_BRANCH_RADIUS = 0.5; float tree_support_branch_diameter_angle = 5.0; bool is_strong = false; diff --git a/src/libslic3r/TriangleSelector.cpp b/src/libslic3r/TriangleSelector.cpp index 0ac985fdf4..929d3094b4 100644 --- a/src/libslic3r/TriangleSelector.cpp +++ b/src/libslic3r/TriangleSelector.cpp @@ -254,8 +254,7 @@ void TriangleSelector::select_patch(int facet_start, std::unique_ptr &&c } } - const float highlight_angle_limit = cos(Geometry::deg2rad(highlight_by_angle_deg)); - Vec3f vec_down = (trafo_no_translate.inverse() * -Vec3d::UnitZ()).normalized().cast(); + const float highlight_angle_limit = -cos(Geometry::deg2rad(highlight_by_angle_deg)); // BBS std::vector start_facets; @@ -291,7 +290,9 @@ void TriangleSelector::select_patch(int facet_start, std::unique_ptr &&c while (facet_idx < int(facets_to_check.size())) { int facet = facets_to_check[facet_idx]; const Vec3f& facet_normal = m_face_normals[m_triangles[facet].source_triangle]; - if (!visited[facet] && (highlight_by_angle_deg == 0.f || vec_down.dot(facet_normal) >= highlight_angle_limit)) { + Matrix3f normal_matrix = static_cast(trafo_no_translate.matrix().block(0, 0, 3, 3).inverse().transpose().cast()); + float world_normal_z = (normal_matrix* facet_normal).normalized().z(); + if (!visited[facet] && (highlight_by_angle_deg == 0.f || world_normal_z < highlight_angle_limit)) { if (select_triangle(facet, new_state, triangle_splitting)) { // add neighboring facets to list to be processed later for (int neighbor_idx : m_neighbors[facet]) @@ -331,8 +332,7 @@ void TriangleSelector::seed_fill_select_triangles(const Vec3f &hit, int facet_st facet_queue.push(facet_start); const double facet_angle_limit = cos(Geometry::deg2rad(seed_fill_angle)) - EPSILON; - const float highlight_angle_limit = cos(Geometry::deg2rad(highlight_by_angle_deg)); - Vec3f vec_down = (trafo_no_translate.inverse() * -Vec3d::UnitZ()).normalized().cast(); + const float highlight_angle_limit = -cos(Geometry::deg2rad(highlight_by_angle_deg)); // Depth-first traversal of neighbors of the face hit by the ray thrown from the mouse cursor. while (!facet_queue.empty()) { @@ -340,7 +340,9 @@ void TriangleSelector::seed_fill_select_triangles(const Vec3f &hit, int facet_st facet_queue.pop(); const Vec3f &facet_normal = m_face_normals[m_triangles[current_facet].source_triangle]; - if (!visited[current_facet] && (highlight_by_angle_deg == 0.f || vec_down.dot(facet_normal) >= highlight_angle_limit)) { + Matrix3f normal_matrix = static_cast(trafo_no_translate.matrix().block(0, 0, 3, 3).inverse().transpose().cast()); + float world_normal_z = (normal_matrix * facet_normal).normalized().z(); + if (!visited[current_facet] && (highlight_by_angle_deg == 0.f || world_normal_z < highlight_angle_limit)) { if (m_triangles[current_facet].is_split()) { for (int split_triangle_idx = 0; split_triangle_idx <= m_triangles[current_facet].number_of_split_sides(); ++split_triangle_idx) { assert(split_triangle_idx < int(m_triangles[current_facet].children.size())); diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 73004621e1..376dee84ed 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -60,6 +60,7 @@ #define CLI_FILAMENTS_DIFFERENT_TEMP -62 #define CLI_OBJECT_COLLISION_IN_SEQ_PRINT -63 #define CLI_OBJECT_COLLISION_IN_LAYER_PRINT -64 +#define CLI_SPIRAL_MODE_CANNOT_DUPLICATE -65 #define CLI_SLICING_ERROR -100 #define CLI_GCODE_PATH_CONFLICTS -101 diff --git a/src/libslic3r/calib.cpp b/src/libslic3r/calib.cpp index 3a22bbb058..93884f70f5 100644 --- a/src/libslic3r/calib.cpp +++ b/src/libslic3r/calib.cpp @@ -666,6 +666,17 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(const DynamicPrintConfi model.plates_custom_gcodes[model.curr_plate_index] = info; } +void CalibPressureAdvancePattern::set_start_offset(const Vec3d &offset) +{ + m_starting_point = offset; + m_is_start_point_fixed = true; +} + +Vec3d CalibPressureAdvancePattern::get_start_offset() +{ + return m_starting_point; +} + void CalibPressureAdvancePattern::refresh_setup(const DynamicPrintConfig &config, bool is_bbl_machine, const Model &model, @@ -683,6 +694,9 @@ void CalibPressureAdvancePattern::refresh_setup(const DynamicPrintConfig &config void CalibPressureAdvancePattern::_refresh_starting_point(const Model &model) { + if (m_is_start_point_fixed) + return; + ModelObject *obj = model.objects.front(); BoundingBoxf3 bbox = obj->instance_bounding_box(*obj->instances.front(), false); diff --git a/src/libslic3r/calib.hpp b/src/libslic3r/calib.hpp index 10c3e777ea..b05c502b28 100644 --- a/src/libslic3r/calib.hpp +++ b/src/libslic3r/calib.hpp @@ -251,6 +251,9 @@ public: void generate_custom_gcodes(const DynamicPrintConfig &config, bool is_bbl_machine, Model &model, const Vec3d &origin); + void set_start_offset(const Vec3d &offset); + Vec3d get_start_offset(); + protected: double speed_first_layer() const { return m_config.option("initial_layer_speed")->value; }; double speed_perimeter() const { return m_config.option("outer_wall_speed")->value; }; @@ -293,6 +296,7 @@ private: GCodeWriter m_writer; bool m_is_delta; Vec3d m_starting_point; + bool m_is_start_point_fixed = false; const double m_handle_xy_size{5}; const double m_handle_spacing{2}; diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 045a3fdb50..197b232957 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -747,16 +747,6 @@ bool AMSMaterialsSetting::Show(bool show) m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20))); //m_clr_picker->set_color(m_clr_picker->GetParent()->GetBackgroundColour()); - /*if (obj && (obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI) || obj->is_high_printer_type())) { - m_ratio_text->Show(); - m_k_param->Show(); - m_input_k_val->Show(); - } - else { - m_ratio_text->Hide(); - m_k_param->Hide(); - m_input_k_val->Hide(); - }*/ m_ratio_text->Show(); m_k_param->Show(); m_input_k_val->Show(); diff --git a/src/slic3r/GUI/AMSSetting.cpp b/src/slic3r/GUI/AMSSetting.cpp index 0818f5445e..cad793ea4d 100644 --- a/src/slic3r/GUI/AMSSetting.cpp +++ b/src/slic3r/GUI/AMSSetting.cpp @@ -192,8 +192,8 @@ void AMSSetting::create() wxPanel* m_panel_img = new wxPanel(m_panel_body, wxID_ANY, wxDefaultPosition, wxDefaultSize); m_panel_img->SetBackgroundColour(AMS_SETTING_GREY200); wxBoxSizer *m_sizer_img = new wxBoxSizer(wxVERTICAL); - auto img = new wxStaticBitmap(m_panel_img, wxID_ANY, create_scaled_bitmap("ams_icon", nullptr, 126), wxDefaultPosition, wxDefaultSize); - m_sizer_img->Add(img, 0, wxALIGN_CENTER | wxTOP, 26); + ams_img = new wxStaticBitmap(m_panel_img, wxID_ANY, create_scaled_bitmap("ams_icon", nullptr, 126), wxDefaultPosition, wxDefaultSize); + m_sizer_img->Add(ams_img, 0, wxALIGN_CENTER | wxTOP, 26); m_sizer_img->Add(0, 0, 0, wxTOP, 18); m_panel_img->SetSizer(m_sizer_img); m_panel_img->Layout(); @@ -262,6 +262,19 @@ void AMSSetting::update_insert_material_read_mode(bool selected) Fit(); } +void AMSSetting::update_image(std::string ams_type) +{ + if (ams_type == m_current_ams_type) return; + if (ams_type == "generic") { + ams_img->SetBitmap(create_scaled_bitmap("monitor_upgrade_f1", nullptr, 126)); + } + else { + ams_img->SetBitmap(create_scaled_bitmap("ams_icon", nullptr, 126)); + } + m_current_ams_type = ams_type; + Layout(); +} + void AMSSetting::update_starting_read_mode(bool selected) { m_checkbox_starting_auto_read->SetValue(selected); diff --git a/src/slic3r/GUI/AMSSetting.hpp b/src/slic3r/GUI/AMSSetting.hpp index 0b227de29a..6afaea68e5 100644 --- a/src/slic3r/GUI/AMSSetting.hpp +++ b/src/slic3r/GUI/AMSSetting.hpp @@ -28,6 +28,7 @@ public: void create(); void update_insert_material_read_mode(bool selected); + void update_image(std::string ams_type); void update_starting_read_mode(bool selected); void update_remain_mode(bool selected); void update_switch_filament(bool selected); @@ -46,6 +47,7 @@ protected: void on_dpi_changed(const wxRect &suggested_rect) override; protected: + std::string m_current_ams_type; wxPanel * m_panel_body; CheckBox * m_checkbox_Insert_material_auto_read; wxStaticText *m_title_Insert_material_auto_read; @@ -68,7 +70,7 @@ protected: wxStaticText *m_tip_ams_img; Button * m_button_auto_demarcate; - + wxStaticBitmap* ams_img; wxBoxSizer *m_sizer_Insert_material_tip_inline; wxBoxSizer *m_sizer_starting_tip_inline; wxBoxSizer *m_sizer_remain_inline; diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index a91258280f..1255211c67 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -273,7 +273,7 @@ void BackgroundSlicingProcess::process_sla() //BBS: add plate id for thumbnail generation ThumbnailsList thumbnails = this->render_thumbnails( - ThumbnailsParams{ THUMBNAIL_SIZE, true, true, true, true, 0 }); + ThumbnailsParams{ current_print()->full_print_config().option("thumbnails")->values, true, true, true, true, 0 }); Zipper zipper(export_path); m_sla_archive.export_print(zipper, *m_sla_print); // true, false, true, true); // renders also supports and pad diff --git a/src/slic3r/GUI/Calibration.cpp b/src/slic3r/GUI/Calibration.cpp index 62f4acff37..ab0b2b2a39 100644 --- a/src/slic3r/GUI/Calibration.cpp +++ b/src/slic3r/GUI/Calibration.cpp @@ -50,16 +50,16 @@ CalibrationDialog::CalibrationDialog(Plater *plater) select_xcam_cali = create_check_option(_L("Micro lidar calibration"), cali_left_panel, _L("Micro lidar calibration"), "xcam_cali"); select_bed_leveling = create_check_option(_L("Bed leveling"), cali_left_panel, _L("Bed leveling"), "bed_leveling"); - select_vibration = create_check_option(_L("Resonance frequency identification"), cali_left_panel, _L("Resonance frequency identification"), "vibration"); + select_vibration = create_check_option(_L("Vibration compensation"), cali_left_panel, _L("Vibration compensation"), "vibration"); + select_motor_noise = create_check_option(_L("Motor noise cancellation"), cali_left_panel, _L("Motor noise cancellation"), "motor_noise"); - m_checkbox_list["xcam_cali"]->SetValue(true); - m_checkbox_list["bed_leveling"]->SetValue(true); - m_checkbox_list["vibration"]->SetValue(true); + cali_left_sizer->Add(0, FromDIP(18), 0, wxEXPAND, 0); cali_left_sizer->Add(select_xcam_cali, 0, wxLEFT, FromDIP(15)); cali_left_sizer->Add(select_bed_leveling, 0, wxLEFT, FromDIP(15)); cali_left_sizer->Add(select_vibration, 0, wxLEFT, FromDIP(15)); + cali_left_sizer->Add(select_motor_noise, 0, wxLEFT, FromDIP(15)); cali_left_sizer->Add(0, FromDIP(30), 0, wxEXPAND, 0); auto cali_left_text_top = new wxStaticText(cali_left_panel, wxID_ANY, _L("Calibration program"), wxDefaultPosition, wxDefaultSize, 0); @@ -208,6 +208,7 @@ wxWindow* CalibrationDialog::create_check_option(wxString title, wxWindow* paren text->Bind(wxEVT_LEFT_DOWN, [this, check](wxMouseEvent&) { check->SetValue(check->GetValue() ? false : true); }); m_checkbox_list[param] = check; + m_checkbox_list[param]->SetValue(true); return checkbox; } @@ -219,6 +220,30 @@ void CalibrationDialog::update_cali(MachineObject *obj) select_xcam_cali->Show(); } else { select_xcam_cali->Hide(); + m_checkbox_list["xcam_cali"]->SetValue(false); + } + + if(obj->is_function_supported(PrinterFunction::FUNC_AUTO_LEVELING)){ + select_bed_leveling->Show(); + }else{ + select_bed_leveling->Hide(); + m_checkbox_list["bed_leveling"]->SetValue(false); + } + + if (obj->is_function_supported(PrinterFunction::FUNC_MOTOR_NOISE_CALI)) { + select_motor_noise->Show(); + } else { + select_motor_noise->Hide(); + m_checkbox_list["motor_noise"]->SetValue(false); + } + + if (!m_checkbox_list["vibration"]->GetValue() && !m_checkbox_list["bed_leveling"]->GetValue() && !m_checkbox_list["xcam_cali"]->GetValue() && + !m_checkbox_list["motor_noise"]->GetValue()) { + m_calibration_btn->Disable(); + m_calibration_btn->SetLabel(_L("No step selected")); + return ; + } else { + m_calibration_btn->Enable(); } if (obj->is_calibration_running() || obj->is_calibration_done()) { @@ -284,7 +309,8 @@ void CalibrationDialog::on_start_calibration(wxMouseEvent &event) m_obj->command_start_calibration( m_checkbox_list["vibration"]->GetValue(), m_checkbox_list["bed_leveling"]->GetValue(), - m_checkbox_list["xcam_cali"]->GetValue() + m_checkbox_list["xcam_cali"]->GetValue(), + m_checkbox_list["motor_noise"]->GetValue() ); } } diff --git a/src/slic3r/GUI/Calibration.hpp b/src/slic3r/GUI/Calibration.hpp index db01e59555..2bacea5f76 100644 --- a/src/slic3r/GUI/Calibration.hpp +++ b/src/slic3r/GUI/Calibration.hpp @@ -42,6 +42,7 @@ private: wxWindow* select_xcam_cali { nullptr }; wxWindow* select_bed_leveling { nullptr }; wxWindow* select_vibration { nullptr }; + wxWindow* select_motor_noise { nullptr }; wxWindow* create_check_option(wxString title, wxWindow *parent, wxString tooltip, std::string param); diff --git a/src/slic3r/GUI/CalibrationPanel.cpp b/src/slic3r/GUI/CalibrationPanel.cpp index 433473c2d2..dfe27ec132 100644 --- a/src/slic3r/GUI/CalibrationPanel.cpp +++ b/src/slic3r/GUI/CalibrationPanel.cpp @@ -526,6 +526,14 @@ void CalibrationPanel::update_all() { if (!dev) return; obj = dev->get_selected_machine(); + // check valid machine + if (obj && dev->get_my_machine(obj->dev_id) == nullptr) { + dev->set_selected_machine(""); + if (m_agent) m_agent->set_user_selected_machine(""); + show_status((int) MONITOR_NO_PRINTER); + return; + } + // update current wizard only int curr_selected = m_tabpanel->GetSelection(); @@ -543,15 +551,6 @@ void CalibrationPanel::update_all() { } } - // check valid machine - if (obj && dev->get_my_machine(obj->dev_id) == nullptr) { - dev->set_selected_machine(""); - if (m_agent) - m_agent->set_user_selected_machine(""); - show_status((int)MONITOR_NO_PRINTER); - return; - } - if (wxGetApp().is_user_login()) { dev->check_pushing(); try { diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index 3f245db4eb..f05cde89fc 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -15,6 +15,9 @@ wxDEFINE_EVENT(EVT_DEVICE_CHANGED, wxCommandEvent); wxDEFINE_EVENT(EVT_CALIBRATION_JOB_FINISHED, wxCommandEvent); static const wxString NA_STR = _L("N/A"); +static const float MIN_PA_K_VALUE = 0.0; +static const float MAX_PA_K_VALUE = 0.5; +static const float MIN_PA_K_VALUE_STEP = 0.001; bool check_preset_name_valid(const wxString& name) { wxString error_message; @@ -46,6 +49,18 @@ std::map get_cached_selected_filament(MachineObject* obj) { return selected_filament_map; } +bool is_pa_params_valid(const Calib_Params& params) +{ + if (params.start < MIN_PA_K_VALUE || params.end > MAX_PA_K_VALUE || params.step < EPSILON || params.end < params.start + params.step) { + MessageDialog msg_dlg(nullptr, + wxString::Format(_L("Please input valid values:\nStart value: >= %.1f\nEnd value: <= %.1f\nEnd value: > Start value\nValue step: >= %.3f)"), MIN_PA_K_VALUE, MAX_PA_K_VALUE, MIN_PA_K_VALUE_STEP), + wxEmptyString, wxICON_WARNING | wxOK); + msg_dlg.ShowModal(); + return false; + } + return true; +} + CalibrationWizard::CalibrationWizard(wxWindow* parent, CalibMode mode, wxWindowID id, const wxPoint& pos, const wxSize& size, long style) : wxPanel(parent, id, pos, size, style) , m_mode(mode) @@ -136,6 +151,25 @@ void CalibrationWizard::on_device_connected(MachineObject* obj) recover_preset_info(obj); + BOOST_LOG_TRIVIAL(info) << "on_device_connected - machine object status:" + << " dev_id = " << obj->dev_id + << ", print_type = " << obj->printer_type + << ", printer_status = " << obj->print_status + << ", cali_finished = " << obj->cali_finished + << ", cali_version = " << obj->cali_version + << ", cache_flow_ratio = " << obj->cache_flow_ratio + << ", sub_task_name = " << obj->subtask_name + << ", gcode_file_name = " << obj->m_gcode_file; + + for (const CaliPresetInfo& preset_info : obj->selected_cali_preset) { + BOOST_LOG_TRIVIAL(info) << "on_device_connected - selected preset: " + << "tray_id = " << preset_info.tray_id + << ", nozzle_diameter = " << preset_info.nozzle_diameter + << ", filament_id = " << preset_info.filament_id + << ", settring_id = " << preset_info.setting_id + << ", name = " << preset_info.name; + } + for (int i = 0; i < m_page_steps.size(); i++) { if (m_page_steps[i]->page) m_page_steps[i]->page->on_device_connected(obj); @@ -154,14 +188,14 @@ void CalibrationWizard::set_cali_method(CalibrationMethod method) bool CalibrationWizard::save_preset(const std::string &old_preset_name, const std::string &new_preset_name, const std::map &key_values, std::string& message) { if (new_preset_name.empty()) { - message = L("The name cannot be empty."); + message = _u8L("The name cannot be empty."); return false; } PresetCollection *filament_presets = &wxGetApp().preset_bundle->filaments; Preset* preset = filament_presets->find_preset(old_preset_name); if (!preset) { - message = (boost::format(L("The selected preset: %1% is not found.")) % old_preset_name).str(); + message = (boost::format(_u8L("The selected preset: %1% is not found.")) % old_preset_name).str(); return false; } @@ -173,12 +207,12 @@ bool CalibrationWizard::save_preset(const std::string &old_preset_name, const st Preset *new_preset = filament_presets->find_preset(new_name); if (new_preset) { if (new_preset->is_system) { - message = L("The name cannot be the same as the system preset name."); + message = _u8L("The name cannot be the same as the system preset name."); return false; } if (new_preset != preset) { - message = L("The name is the same as another existing preset name"); + message = _u8L("The name is the same as another existing preset name"); return false; } if (new_preset != &filament_presets->get_edited_preset()) new_preset = &temp_preset; @@ -199,7 +233,7 @@ bool CalibrationWizard::save_preset(const std::string &old_preset_name, const st // Preset* preset = &m_presets.preset(it - m_presets.begin(), true); if (!new_preset) { BOOST_LOG_TRIVIAL(info) << "create new preset failed"; - message = L("create new preset failed."); + message = _u8L("create new preset failed."); return false; } @@ -339,6 +373,18 @@ PressureAdvanceWizard::PressureAdvanceWizard(wxWindow* parent, wxWindowID id, co create_pages(); } +void PressureAdvanceWizard::on_cali_job_finished(wxString evt_data) +{ + int cali_stage = 0; + CalibMode obj_cali_mode = CalibUtils::get_calib_mode_by_name(evt_data.ToStdString(), cali_stage); + + if (obj_cali_mode == m_mode) { + show_step(cali_step); + } + // change ui, hide + static_cast(preset_step->page)->on_cali_finished_job(); +} + void PressureAdvanceWizard::create_pages() { start_step = new CalibrationWizardPageStep(new CalibrationPAStartPage(m_scrolledWindow)); @@ -422,6 +468,7 @@ void PressureAdvanceWizard::on_device_connected(MachineObject* obj) CalibrationMethod method; int cali_stage = 0; CalibMode obj_cali_mode = get_obj_calibration_mode(obj, method, cali_stage); + obj->manual_pa_cali_method = ManualPaCaliMethod(cali_stage); // show cali step when obj is in pa calibration if (obj) { @@ -431,6 +478,8 @@ void PressureAdvanceWizard::on_device_connected(MachineObject* obj) if (obj_cali_mode == m_mode) { if (!obj->cali_finished && (obj->is_in_printing() || obj->is_printing_finished())) { CalibrationWizard::set_cali_method(method); + CalibrationCaliPage *cali_page = (static_cast(cali_step->page)); + cali_page->set_pa_cali_image(cali_stage); show_step(cali_step); } } @@ -504,11 +553,13 @@ void PressureAdvanceWizard::on_cali_start() return; } - if (curr_obj->get_printer_series() == PrinterSeries::SERIES_X1) { + //std::string error_message; + wxString wx_err_string; + if (m_cali_method == CalibrationMethod::CALI_METHOD_AUTO && curr_obj->get_printer_series() == PrinterSeries::SERIES_X1) { X1CCalibInfos calib_infos; - for (auto& item : selected_filaments) { - int nozzle_temp = -1; - int bed_temp = -1; + for (auto &item : selected_filaments) { + int nozzle_temp = -1; + int bed_temp = -1; float max_volumetric_speed = -1; if (!get_preset_info(item.second->config, plate_type, nozzle_temp, bed_temp, max_volumetric_speed)) { @@ -517,54 +568,93 @@ void PressureAdvanceWizard::on_cali_start() } X1CCalibInfos::X1CCalibInfo calib_info; - calib_info.tray_id = item.first; - calib_info.nozzle_diameter = nozzle_dia; - calib_info.filament_id = item.second->filament_id; - calib_info.setting_id = item.second->setting_id; - calib_info.bed_temp = bed_temp; - calib_info.nozzle_temp = nozzle_temp; + calib_info.tray_id = item.first; + calib_info.nozzle_diameter = nozzle_dia; + calib_info.filament_id = item.second->filament_id; + calib_info.setting_id = item.second->setting_id; + calib_info.bed_temp = bed_temp; + calib_info.nozzle_temp = nozzle_temp; calib_info.max_volumetric_speed = max_volumetric_speed; calib_infos.calib_datas.push_back(calib_info); } + CalibUtils::calib_PA(calib_infos, 0, wx_err_string); // mode = 0 for auto - std::string error_message; - wxString wx_err_string; - if (m_cali_method == CalibrationMethod::CALI_METHOD_AUTO) { - CalibUtils::calib_PA(calib_infos, 0, error_message); // mode = 0 for auto - wx_err_string = from_u8(error_message); - } else if (m_cali_method == CalibrationMethod::CALI_METHOD_MANUAL) { - CalibUtils::calib_PA(calib_infos, 1, error_message); // mode = 1 for manual - wx_err_string = from_u8(error_message); - } else { - assert(false); - } if (!wx_err_string.empty()) { MessageDialog msg_dlg(nullptr, wx_err_string, wxEmptyString, wxICON_WARNING | wxOK); msg_dlg.ShowModal(); + return; } - } - else if (curr_obj->get_printer_series() == PrinterSeries::SERIES_P1P) { + + show_step(m_curr_step->next); + } else if (m_cali_method == CalibrationMethod::CALI_METHOD_MANUAL) { if (selected_filaments.empty()) { BOOST_LOG_TRIVIAL(warning) << "CaliPreset: selected filaments is empty"; return; } + else { + int nozzle_temp = -1; + int bed_temp = -1; + float max_volumetric_speed = -1; + if (!get_preset_info(selected_filaments.begin()->second->config, plate_type, nozzle_temp, bed_temp, max_volumetric_speed)) { + BOOST_LOG_TRIVIAL(error) << "CaliPreset: get preset info error"; + return; + } + + CalibInfo calib_info; + calib_info.dev_id = curr_obj->dev_id; + calib_info.select_ams = "[" + std::to_string(selected_filaments.begin()->first) + "]"; + Preset *preset = selected_filaments.begin()->second; + Preset * temp_filament_preset = new Preset(preset->type, preset->name + "_temp"); + temp_filament_preset->config = preset->config; - int nozzle_temp = -1; - int bed_temp = -1; - float max_volumetric_speed = -1; - if (!get_preset_info(selected_filaments.begin()->second->config, plate_type, nozzle_temp, bed_temp, max_volumetric_speed)) { - BOOST_LOG_TRIVIAL(error) << "CaliPreset: get preset info error"; - return; + calib_info.bed_type = plate_type; + calib_info.process_bar = preset_page->get_sending_progress_bar(); + calib_info.printer_prest = preset_page->get_printer_preset(curr_obj, nozzle_dia); + calib_info.print_prest = preset_page->get_print_preset(); + calib_info.filament_prest = temp_filament_preset; + + wxArrayString values = preset_page->get_custom_range_values(); + if (values.size() != 3) { + MessageDialog msg_dlg(nullptr, _L("The input value size must be 3."), wxEmptyString, wxICON_WARNING | wxOK); + msg_dlg.ShowModal(); + return; + } else { + values[0].ToDouble(&calib_info.params.start); + values[1].ToDouble(&calib_info.params.end); + values[2].ToDouble(&calib_info.params.step); + } + calib_info.params.mode = preset_page->get_pa_cali_method(); + calib_info.params.print_numbers = true; + + if (!is_pa_params_valid(calib_info.params)) + return; + + ManualPaCaliMethod pa_cali_method = ManualPaCaliMethod::PA_LINE; + CalibrationCaliPage *cali_page = (static_cast(cali_step->page)); + if (calib_info.params.mode == CalibMode::Calib_PA_Line) + pa_cali_method = ManualPaCaliMethod::PA_LINE; + else if (calib_info.params.mode == CalibMode::Calib_PA_Pattern) + pa_cali_method = ManualPaCaliMethod::PA_PATTERN; + + cali_page->set_pa_cali_image(int(pa_cali_method)); + curr_obj->manual_pa_cali_method = pa_cali_method; + + CalibUtils::calib_generic_PA(calib_info, wx_err_string); + + if (!wx_err_string.empty()) { + MessageDialog msg_dlg(nullptr, wx_err_string, wxEmptyString, wxICON_WARNING | wxOK); + msg_dlg.ShowModal(); + return; + } + + preset_page->on_cali_start_job(); } - - curr_obj->command_start_extrusion_cali(selected_filaments.begin()->first, - nozzle_temp, bed_temp, max_volumetric_speed, setting_id); } else { assert(false); + BOOST_LOG_TRIVIAL(error) << "CaliPreset: unsupported printer type or cali method"; + return; } - show_step(m_curr_step->next); - CalibrationCaliPage* cali_page = (static_cast(cali_step->page)); cali_page->clear_last_job_status(); } @@ -853,6 +943,7 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow if (!wx_err_string.empty()) { MessageDialog msg_dlg(nullptr, wx_err_string, wxEmptyString, wxICON_WARNING | wxOK); msg_dlg.ShowModal(); + return; } show_step(m_curr_step->next); @@ -903,9 +994,7 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow calib_info.filament_prest = temp_filament_preset; if (cali_stage > 0) { - std::string error_message; - CalibUtils::calib_flowrate(cali_stage, calib_info, error_message); - wx_err_string = from_u8(error_message); + CalibUtils::calib_flowrate(cali_stage, calib_info, wx_err_string); } else { wx_err_string = _L("Internal Error") + wxString(": Invalid calibration stage"); @@ -917,6 +1006,7 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow if (!wx_err_string.empty()) { MessageDialog msg_dlg(nullptr, wx_err_string, wxEmptyString, wxICON_WARNING | wxOK); msg_dlg.ShowModal(); + return; } preset_page->on_cali_start_job(); if (temp_filament_preset) @@ -1009,7 +1099,7 @@ void FlowRateWizard::on_cali_save() std::string message; if (!save_preset(old_preset_name, into_u8(new_preset_name), key_value_map, message)) { - MessageDialog error_msg_dlg(nullptr, message, wxEmptyString, wxICON_WARNING | wxOK); + MessageDialog error_msg_dlg(nullptr, from_u8(message), wxEmptyString, wxICON_WARNING | wxOK); error_msg_dlg.ShowModal(); return; } @@ -1248,12 +1338,11 @@ void MaxVolumetricSpeedWizard::on_cali_start() calib_info.print_prest = preset_page->get_print_preset(); wxString wx_err_string; - std::string error_message; - CalibUtils::calib_max_vol_speed(calib_info, error_message); - wx_err_string = from_u8(error_message); + CalibUtils::calib_max_vol_speed(calib_info, wx_err_string); if (!wx_err_string.empty()) { MessageDialog msg_dlg(nullptr, wx_err_string, wxEmptyString, wxICON_WARNING | wxOK); msg_dlg.ShowModal(); + return; } preset_page->on_cali_start_job(); @@ -1288,7 +1377,7 @@ void MaxVolumetricSpeedWizard::on_cali_save() std::string message; if (!save_preset(old_preset_name, new_preset_name, key_value_map, message)) { - MessageDialog error_msg_dlg(nullptr, message, wxEmptyString, wxICON_WARNING | wxOK); + MessageDialog error_msg_dlg(nullptr, from_u8(message), wxEmptyString, wxICON_WARNING | wxOK); error_msg_dlg.ShowModal(); return; } diff --git a/src/slic3r/GUI/CalibrationWizard.hpp b/src/slic3r/GUI/CalibrationWizard.hpp index e5e55834ff..158d42eeaf 100644 --- a/src/slic3r/GUI/CalibrationWizard.hpp +++ b/src/slic3r/GUI/CalibrationWizard.hpp @@ -105,6 +105,9 @@ class PressureAdvanceWizard : public CalibrationWizard { public: PressureAdvanceWizard(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL); ~PressureAdvanceWizard() {}; + + void on_cali_job_finished(wxString evt_data) override; + protected: void create_pages(); diff --git a/src/slic3r/GUI/CalibrationWizardCaliPage.cpp b/src/slic3r/GUI/CalibrationWizardCaliPage.cpp index bd62a66218..2c59f80fdd 100644 --- a/src/slic3r/GUI/CalibrationWizardCaliPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardCaliPage.cpp @@ -125,6 +125,17 @@ void CalibrationCaliPage::set_cali_img() } } +void CalibrationCaliPage::set_pa_cali_image(int stage) +{ + if (m_cali_mode == CalibMode::Calib_PA_Line && m_cali_method == CALI_METHOD_MANUAL) { + if (stage == 0) { + m_picture_panel->set_img(create_scaled_bitmap("fd_calibration_manual", nullptr, 400)); + } else if (stage == 1) { + m_picture_panel->set_img(create_scaled_bitmap("fd_pattern_manual", nullptr, 400)); + } + } +} + void CalibrationCaliPage::clear_last_job_status() { m_is_between_start_and_running = true; @@ -132,6 +143,29 @@ void CalibrationCaliPage::clear_last_job_status() void CalibrationCaliPage::update(MachineObject* obj) { + if (this->IsShown()) { + if (obj) { + if (obj->print_status != "RUNNING") { + BOOST_LOG_TRIVIAL(info) << "on_show_cali_page - machine object status:" + << " dev_id = " << obj->dev_id + << ", print_type = " << obj->printer_type + << ", printer_status = " << obj->print_status + << ", is_connected = " << obj->is_connected() + << ", m_is_between_start_and_running = " << m_is_between_start_and_running + << ", cali_finished = " << obj->cali_finished + << ", cali_version = " << obj->cali_version + << ", cache_flow_ratio = " << obj->cache_flow_ratio + << ", sub_task_name = " << obj->subtask_name + << ", gcode_file_name = " << obj->m_gcode_file + << ", get_pa_calib_result" << obj->get_pa_calib_result + << ", get_flow_calib_result" << obj->get_flow_calib_result; + } + } + else { + BOOST_LOG_TRIVIAL(info) << "on_show_cali_page - machine object is nullptr"; + } + } + static int get_result_count = 0; // enable calibration when finished bool enable_cali = false; diff --git a/src/slic3r/GUI/CalibrationWizardCaliPage.hpp b/src/slic3r/GUI/CalibrationWizardCaliPage.hpp index cb608ddda4..59a07aad38 100644 --- a/src/slic3r/GUI/CalibrationWizardCaliPage.hpp +++ b/src/slic3r/GUI/CalibrationWizardCaliPage.hpp @@ -27,6 +27,7 @@ public: void update_basic_print_data(bool def, float weight = 0.0, int prediction = 0); void reset_printing_values(); void clear_last_job_status(); + void set_pa_cali_image(int stage); void on_device_connected(MachineObject* obj) override; diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 3c1a63e9b7..7f05287694 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -5,6 +5,9 @@ #include "libslic3r/Print.hpp" namespace Slic3r { namespace GUI { +static int PA_LINE = 0; +static int PA_PATTERN = 1; + CaliPresetCaliStagePanel::CaliPresetCaliStagePanel( wxWindow* parent, wxWindowID id, @@ -124,6 +127,71 @@ void CaliPresetCaliStagePanel::set_flow_ratio_value(float flow_ratio) m_flow_ratio_value = flow_ratio; } +CaliComboBox::CaliComboBox(wxWindow* parent, + wxString title, + wxArrayString values, + int default_index, // default delected id + std::function on_value_change, + wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style) + : wxPanel(parent, id, pos, size, style) + , m_title(title) + , m_on_value_change_call_back(on_value_change) +{ + SetBackgroundColour(*wxWHITE); + m_top_sizer = new wxBoxSizer(wxVERTICAL); + m_top_sizer->AddSpacer(PRESET_GAP); + auto combo_title = new Label(this, title); + combo_title->SetFont(Label::Head_14); + combo_title->Wrap(-1); + m_top_sizer->Add(combo_title, 0, wxALL, 0); + m_top_sizer->AddSpacer(FromDIP(10)); + m_combo_box = new ComboBox(this, wxID_ANY, "", wxDefaultPosition, CALIBRATION_COMBOX_SIZE, 0, nullptr, wxCB_READONLY); + m_top_sizer->Add(m_combo_box, 0, wxALL, 0); + m_top_sizer->AddSpacer(PRESET_GAP); + + this->SetSizer(m_top_sizer); + m_top_sizer->Fit(this); + + // set values + for (int i = 0; i < values.size(); ++i) { + m_combo_box->AppendString(values[i]); + } + m_combo_box->SetSelection(default_index); + + // bind call back function + if (m_on_value_change_call_back) + m_combo_box->Bind(wxEVT_COMBOBOX, m_on_value_change_call_back); +} + +int CaliComboBox::get_selection() const +{ + if (m_combo_box) + return m_combo_box->GetSelection(); + + return 0; +} + +wxString CaliComboBox::get_value() const +{ + if (m_combo_box) + return m_combo_box->GetValue(); + + return wxString(); +} + +void CaliComboBox::set_values(const wxArrayString &values) +{ + if (m_combo_box) { + for (int i = 0; i < values.size(); ++i) { + m_combo_box->AppendString(values[i]); + } + m_combo_box->SetSelection(0); + } +} + CaliPresetWarningPanel::CaliPresetWarningPanel( wxWindow* parent, wxWindowID id, @@ -704,6 +772,13 @@ void CalibrationPresetPage::create_page(wxWindow* parent) m_filament_list_panel = new wxPanel(parent); m_filament_list_panel->SetBackgroundColour(*wxWHITE); create_filament_list_panel(m_filament_list_panel); + + if (m_cali_mode == CalibMode::Calib_PA_Line || m_cali_mode == CalibMode::Calib_PA_Pattern) { + wxArrayString pa_cali_modes; + pa_cali_modes.push_back(_L("Line")); + pa_cali_modes.push_back(_L("Pattern")); + m_pa_cali_method_combox = new CaliComboBox(parent, _L("Method"), pa_cali_modes); + } m_ext_spool_panel = new wxPanel(parent); create_ext_spool_panel(m_ext_spool_panel); @@ -719,9 +794,7 @@ void CalibrationPresetPage::create_page(wxWindow* parent) m_sending_panel->Hide(); - if (m_show_custom_range) { - m_custom_range_panel = new CaliPresetCustomRangePanel(parent); - } + m_custom_range_panel = new CaliPresetCustomRangePanel(parent); m_action_panel = new CaliPageActionPanel(parent, m_cali_mode, CaliPageType::CALI_PAGE_PRESET); @@ -732,11 +805,10 @@ void CalibrationPresetPage::create_page(wxWindow* parent) m_top_sizer->Add(m_selection_panel, 0); m_top_sizer->Add(m_filament_list_panel, 0); m_top_sizer->Add(m_ext_spool_panel, 0); + m_top_sizer->Add(m_pa_cali_method_combox, 0); + m_top_sizer->Add(m_custom_range_panel, 0); + m_top_sizer->AddSpacer(FromDIP(15)); m_top_sizer->Add(m_warning_panel, 0); - if (m_show_custom_range) { - m_top_sizer->Add(m_custom_range_panel, 0); - m_top_sizer->AddSpacer(FromDIP(15)); - } m_top_sizer->Add(m_tips_panel, 0); m_top_sizer->AddSpacer(PRESET_GAP); m_top_sizer->Add(m_sending_panel, 0, wxALIGN_CENTER); @@ -1430,16 +1502,50 @@ void CalibrationPresetPage::set_cali_filament_mode(CalibrationFilamentMode mode) void CalibrationPresetPage::set_cali_method(CalibrationMethod method) { CalibrationWizardPage::set_cali_method(method); - if (method == CalibrationMethod::CALI_METHOD_MANUAL && m_cali_mode == CalibMode::Calib_Flow_Rate) { - wxArrayString steps; - steps.Add(_L("Preset")); - steps.Add(_L("Calibration1")); - steps.Add(_L("Calibration2")); - steps.Add(_L("Record Factor")); - m_step_panel->set_steps_string(steps); - m_step_panel->set_steps(0); - if (m_cali_stage_panel) - m_cali_stage_panel->Show(); + if (method == CalibrationMethod::CALI_METHOD_MANUAL) { + if (m_cali_mode == CalibMode::Calib_Flow_Rate) { + wxArrayString steps; + steps.Add(_L("Preset")); + steps.Add(_L("Calibration1")); + steps.Add(_L("Calibration2")); + steps.Add(_L("Record Factor")); + m_step_panel->set_steps_string(steps); + m_step_panel->set_steps(0); + if (m_cali_stage_panel) + m_cali_stage_panel->Show(); + + if (m_pa_cali_method_combox) + m_pa_cali_method_combox->Show(false); + + if (m_custom_range_panel) + m_custom_range_panel->Show(false); + } + else if (m_cali_mode == CalibMode::Calib_PA_Line || m_cali_mode == CalibMode::Calib_PA_Pattern) { + if (m_cali_stage_panel) + m_cali_stage_panel->Show(false); + + if (m_pa_cali_method_combox) + m_pa_cali_method_combox->Show(); + + if (m_custom_range_panel) { + wxArrayString titles; + titles.push_back(_L("From k Value")); + titles.push_back(_L("To k Value")); + titles.push_back(_L("Step value")); + m_custom_range_panel->set_titles(titles); + + wxArrayString values; + Preset* printer_preset = get_printer_preset(curr_obj, get_nozzle_value()); + int extruder_type = printer_preset->config.opt_enum("extruder_type", 0); + values.push_back(_L("0")); + values.push_back(_L("0.5")); + values.push_back(_L("0.005")); + m_custom_range_panel->set_values(values); + + m_custom_range_panel->set_unit(_L("")); + m_custom_range_panel->Show(); + } + } } else { wxArrayString steps; @@ -1450,6 +1556,10 @@ void CalibrationPresetPage::set_cali_method(CalibrationMethod method) m_step_panel->set_steps(0); if (m_cali_stage_panel) m_cali_stage_panel->Show(false); + if (m_custom_range_panel) + m_custom_range_panel->Show(false); + if (m_pa_cali_method_combox) + m_pa_cali_method_combox->Show(false); } } @@ -1847,12 +1957,26 @@ std::string CalibrationPresetPage::get_print_preset_name() wxArrayString CalibrationPresetPage::get_custom_range_values() { - if (m_show_custom_range && m_custom_range_panel) { + if (m_custom_range_panel) { return m_custom_range_panel->get_values(); } return wxArrayString(); } +CalibMode CalibrationPresetPage::get_pa_cali_method() +{ + if (m_pa_cali_method_combox) { + int selected_mode = m_pa_cali_method_combox->get_selection(); + if (selected_mode == PA_LINE) { + return CalibMode::Calib_PA_Line; + } + else if (selected_mode == PA_PATTERN) { + return CalibMode::Calib_PA_Pattern; + } + } + return CalibMode::Calib_PA_Line; +} + MaxVolumetricSpeedPresetPage::MaxVolumetricSpeedPresetPage( wxWindow *parent, CalibMode cali_mode, bool custom_range, wxWindowID id, const wxPoint &pos, const wxSize &size, long style) : CalibrationPresetPage(parent, cali_mode, custom_range, id, pos, size, style) @@ -1861,7 +1985,7 @@ MaxVolumetricSpeedPresetPage::MaxVolumetricSpeedPresetPage( wxArrayString titles; titles.push_back(_L("From Volumetric Speed")); titles.push_back(_L("To Volumetric Speed")); - titles.push_back(_L("Step")); + titles.push_back(_L("Step value")); m_custom_range_panel->set_titles(titles); m_custom_range_panel->set_unit(_L("mm\u00B3/s")); diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp index 2816c4d7d7..9327527587 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp @@ -40,6 +40,30 @@ protected: float m_flow_ratio_value; }; +class CaliComboBox : public wxPanel +{ +public: + CaliComboBox(wxWindow *parent, + wxString title, + wxArrayString values, + int default_index = 0, // default delected id + std::function on_value_change = nullptr, + wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxTAB_TRAVERSAL); + + int get_selection() const; + wxString get_value() const; + void set_values(const wxArrayString& values); + +private: + wxBoxSizer* m_top_sizer; + wxString m_title; + ComboBox* m_combo_box; + std::function m_on_value_change_call_back; +}; + class CaliPresetWarningPanel : public wxPanel { public: @@ -181,6 +205,7 @@ public: std::string get_print_preset_name(); wxArrayString get_custom_range_values(); + CalibMode get_pa_cali_method(); CaliPresetPageStatus get_page_status() { return m_page_status; } protected: @@ -227,6 +252,7 @@ protected: CaliPresetPageStatus get_status() { return m_page_status; } CaliPageStepGuide* m_step_panel{ nullptr }; + CaliComboBox * m_pa_cali_method_combox{nullptr}; CaliPresetCaliStagePanel* m_cali_stage_panel { nullptr }; wxPanel* m_selection_panel { nullptr }; wxPanel* m_filament_from_panel { nullptr }; diff --git a/src/slic3r/GUI/CalibrationWizardSavePage.cpp b/src/slic3r/GUI/CalibrationWizardSavePage.cpp index 48831693fb..d2e027286b 100644 --- a/src/slic3r/GUI/CalibrationWizardSavePage.cpp +++ b/src/slic3r/GUI/CalibrationWizardSavePage.cpp @@ -462,10 +462,10 @@ void CaliPASaveManualPanel::create_panel(wxWindow* parent) auto complete_text_panel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); complete_text_panel->SetBackgroundColour(*wxWHITE); wxBoxSizer* complete_text_sizer = new wxBoxSizer(wxVERTICAL); - auto complete_text = new Label(complete_text_panel, _L("Please find the best line on your plate")); - complete_text->SetFont(Label::Head_14); - complete_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH); - complete_text_sizer->Add(complete_text, 0); + m_complete_text = new Label(complete_text_panel, _L("Please find the best line on your plate")); + m_complete_text->SetFont(Label::Head_14); + m_complete_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH); + complete_text_sizer->Add(m_complete_text, 0); complete_text_panel->SetSizer(complete_text_sizer); m_top_sizer->Add(complete_text_panel, 0, wxEXPAND, 0); @@ -523,6 +523,21 @@ void CaliPASaveManualPanel::set_save_img() { } } +void CaliPASaveManualPanel::set_pa_cali_method(ManualPaCaliMethod method) +{ + if (method == ManualPaCaliMethod::PA_LINE) { + m_complete_text->SetLabel(_L("Please find the best line on your plate")); + set_save_img(); + } else if (method == ManualPaCaliMethod::PA_PATTERN) { + m_complete_text->SetLabel(_L("Please find the cornor with perfect degree of extrusion")); + if (wxGetApp().app_config->get_language_code() == "zh-cn") { + m_picture_panel->set_img(create_scaled_bitmap("fd_pattern_manual_result_CN", nullptr, 350)); + } else { + m_picture_panel->set_img(create_scaled_bitmap("fd_pattern_manual_result", nullptr, 350)); + } + } +} + void CaliPASaveManualPanel::set_default_name(const wxString& name) { m_save_name_input->GetTextCtrl()->SetValue(name); } @@ -610,10 +625,10 @@ void CaliPASaveP1PPanel::create_panel(wxWindow* parent) auto complete_text_panel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); complete_text_panel->SetBackgroundColour(*wxWHITE); wxBoxSizer* complete_text_sizer = new wxBoxSizer(wxVERTICAL); - auto complete_text = new Label(complete_text_panel, _L("Please find the best line on your plate")); - complete_text->SetFont(Label::Head_14); - complete_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH); - complete_text_sizer->Add(complete_text, 0, wxEXPAND); + m_complete_text = new Label(complete_text_panel, _L("Please find the best line on your plate")); + m_complete_text->SetFont(Label::Head_14); + m_complete_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH); + complete_text_sizer->Add(m_complete_text, 0, wxEXPAND); complete_text_panel->SetSizer(complete_text_sizer); m_top_sizer->Add(complete_text_panel, 0, wxEXPAND, 0); @@ -662,6 +677,22 @@ void CaliPASaveP1PPanel::set_save_img() { } } +void CaliPASaveP1PPanel::set_pa_cali_method(ManualPaCaliMethod method) +{ + if (method == ManualPaCaliMethod::PA_LINE) { + m_complete_text->SetLabel(_L("Please find the best line on your plate")); + set_save_img(); + } + else if (method == ManualPaCaliMethod::PA_PATTERN) { + m_complete_text->SetLabel(_L("Please find the cornor with perfect degree of extrusion")); + if (wxGetApp().app_config->get_language_code() == "zh-cn") { + m_picture_panel->set_img(create_scaled_bitmap("fd_pattern_manual_result_CN", nullptr, 350)); + } else { + m_picture_panel->set_img(create_scaled_bitmap("fd_pattern_manual_result", nullptr, 350)); + } + } +} + bool CaliPASaveP1PPanel::get_result(float* out_k, float* out_n){ // Check if the value is valid if (!CalibUtils::validate_input_k_value(m_k_val->GetTextCtrl()->GetValue(), out_k)) { @@ -808,6 +839,7 @@ void CalibrationPASavePage::sync_cali_result(MachineObject* obj) void CalibrationPASavePage::show_panels(CalibrationMethod method, const PrinterSeries printer_ser) { if (printer_ser == PrinterSeries::SERIES_X1) { if (method == CalibrationMethod::CALI_METHOD_MANUAL) { + m_manual_panel->set_pa_cali_method(curr_obj->manual_pa_cali_method); m_manual_panel->Show(); m_auto_panel->Show(false); } @@ -820,10 +852,12 @@ void CalibrationPASavePage::show_panels(CalibrationMethod method, const PrinterS else if (printer_ser == PrinterSeries::SERIES_P1P) { m_auto_panel->Show(false); m_manual_panel->Show(false); + m_p1p_panel->set_pa_cali_method(curr_obj->manual_pa_cali_method); m_p1p_panel->Show(); } else { m_auto_panel->Show(false); m_manual_panel->Show(false); + m_p1p_panel->set_pa_cali_method(curr_obj->manual_pa_cali_method); m_p1p_panel->Show(); assert(false); } @@ -1158,10 +1192,10 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent) coarse_block_items.Add(std::to_string(-20 + (i * 5))); } m_optimal_block_coarse->Set(coarse_block_items); - auto coarse_calc_result_text = new Label(parent, ""); + m_coarse_calc_result_text = new Label(parent, ""); coarse_value_sizer->Add(coarse_value_text, 0, 0); coarse_value_sizer->Add(m_optimal_block_coarse, 0, 0); - coarse_value_sizer->Add(coarse_calc_result_text, 0); + coarse_value_sizer->Add(m_coarse_calc_result_text, 0); m_top_sizer->Add(coarse_value_sizer, 0, 0, 0); m_top_sizer->AddSpacer(FromDIP(20)); @@ -1169,16 +1203,16 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent) checkBox_panel->SetBackgroundColour(*wxWHITE); auto cb_sizer = new wxBoxSizer(wxHORIZONTAL); checkBox_panel->SetSizer(cb_sizer); - auto checkBox_skip_calibration = new CheckBox(checkBox_panel); - cb_sizer->Add(checkBox_skip_calibration); + m_checkBox_skip_calibration = new CheckBox(checkBox_panel); + cb_sizer->Add(m_checkBox_skip_calibration); auto cb_text = new Label(checkBox_panel, _L("Skip Calibration2")); cb_sizer->Add(cb_text); - cb_text->Bind(wxEVT_LEFT_DOWN, [this, checkBox_skip_calibration](auto&) { - checkBox_skip_calibration->SetValue(!checkBox_skip_calibration->GetValue()); + cb_text->Bind(wxEVT_LEFT_DOWN, [this](auto&) { + m_checkBox_skip_calibration->SetValue(!m_checkBox_skip_calibration->GetValue()); wxCommandEvent event(wxEVT_TOGGLEBUTTON); - event.SetEventObject(checkBox_skip_calibration); - checkBox_skip_calibration->GetEventHandler()->ProcessEvent(event); + event.SetEventObject(m_checkBox_skip_calibration); + m_checkBox_skip_calibration->GetEventHandler()->ProcessEvent(event); }); m_top_sizer->Add(checkBox_panel, 0, 0, 0); @@ -1201,8 +1235,8 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent) m_top_sizer->AddSpacer(FromDIP(20)); - checkBox_skip_calibration->Bind(wxEVT_TOGGLEBUTTON, [this, save_panel, checkBox_skip_calibration](wxCommandEvent& e) { - if (checkBox_skip_calibration->GetValue()) { + m_checkBox_skip_calibration->Bind(wxEVT_TOGGLEBUTTON, [this, save_panel](wxCommandEvent &e) { + if (m_checkBox_skip_calibration->GetValue()) { m_skip_fine_calibration = true; save_panel->Show(); m_action_panel->show_button(CaliPageActionType::CALI_ACTION_FLOW_COARSE_SAVE); @@ -1219,9 +1253,9 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent) e.Skip(); }); - m_optimal_block_coarse->Bind(wxEVT_COMBOBOX, [this, coarse_calc_result_text](auto& e) { + m_optimal_block_coarse->Bind(wxEVT_COMBOBOX, [this](auto& e) { m_coarse_flow_ratio = m_curr_flow_ratio * (100.0f + stof(m_optimal_block_coarse->GetValue().ToStdString())) / 100.0f; - coarse_calc_result_text->SetLabel(wxString::Format(_L("flow ratio : %s "), std::to_string(m_coarse_flow_ratio))); + m_coarse_calc_result_text->SetLabel(wxString::Format(_L("flow ratio : %s "), std::to_string(m_coarse_flow_ratio))); }); m_action_panel = new CaliPageActionPanel(parent, m_cali_mode, CaliPageType::CALI_PAGE_COARSE_SAVE); @@ -1237,8 +1271,15 @@ void CalibrationFlowCoarseSavePage::set_save_img() { } } -void CalibrationFlowCoarseSavePage::set_default_name(const wxString& name) { +void CalibrationFlowCoarseSavePage::set_default_options(const wxString& name) { + m_optimal_block_coarse->SetSelection(-1); + m_coarse_calc_result_text->SetLabelText(""); + m_checkBox_skip_calibration->SetValue(false); m_save_name_input->GetTextCtrl()->SetValue(name); + + wxCommandEvent event(wxEVT_TOGGLEBUTTON); + event.SetEventObject(m_checkBox_skip_calibration); + m_checkBox_skip_calibration->GetEventHandler()->ProcessEvent(event); } bool CalibrationFlowCoarseSavePage::is_skip_fine_calibration() { @@ -1272,7 +1313,7 @@ bool CalibrationFlowCoarseSavePage::Show(bool show) { assert(curr_obj->selected_cali_preset.size() <= 1); if (!curr_obj->selected_cali_preset.empty()) { wxString default_name = get_default_name(curr_obj->selected_cali_preset[0].name, CalibMode::Calib_Flow_Rate); - set_default_name(default_name); + set_default_options(default_name); set_curr_flow_ratio(curr_obj->cache_flow_ratio); } } @@ -1337,10 +1378,10 @@ void CalibrationFlowFineSavePage::create_page(wxWindow* parent) fine_block_items.Add(std::to_string(-9 + (i))); } m_optimal_block_fine->Set(fine_block_items); - auto fine_calc_result_text = new Label(parent, ""); + m_fine_calc_result_text = new Label(parent, ""); fine_value_sizer->Add(fine_value_text, 0, 0); fine_value_sizer->Add(m_optimal_block_fine, 0, 0); - fine_value_sizer->Add(fine_calc_result_text, 0); + fine_value_sizer->Add(m_fine_calc_result_text, 0); m_top_sizer->Add(fine_value_sizer, 0, 0, 0); m_top_sizer->AddSpacer(FromDIP(20)); @@ -1354,9 +1395,9 @@ void CalibrationFlowFineSavePage::create_page(wxWindow* parent) m_top_sizer->AddSpacer(FromDIP(20)); - m_optimal_block_fine->Bind(wxEVT_COMBOBOX, [this, fine_calc_result_text](auto& e) { + m_optimal_block_fine->Bind(wxEVT_COMBOBOX, [this](auto& e) { m_fine_flow_ratio = m_curr_flow_ratio * (100.0f + stof(m_optimal_block_fine->GetValue().ToStdString())) / 100.0f; - fine_calc_result_text->SetLabel(wxString::Format(_L("flow ratio : %s "), std::to_string(m_fine_flow_ratio))); + m_fine_calc_result_text->SetLabel(wxString::Format(_L("flow ratio : %s "), std::to_string(m_fine_flow_ratio))); }); m_action_panel = new CaliPageActionPanel(parent, m_cali_mode, CaliPageType::CALI_PAGE_FINE_SAVE); @@ -1371,7 +1412,9 @@ void CalibrationFlowFineSavePage::set_save_img() { } } -void CalibrationFlowFineSavePage::set_default_name(const wxString& name) { +void CalibrationFlowFineSavePage::set_default_options(const wxString &name) { + m_optimal_block_fine->SetSelection(-1); + m_fine_calc_result_text->SetLabelText(""); m_save_name_input->GetTextCtrl()->SetValue(name); } @@ -1402,7 +1445,7 @@ bool CalibrationFlowFineSavePage::Show(bool show) { assert(curr_obj->selected_cali_preset.size() <= 1); if (!curr_obj->selected_cali_preset.empty()) { wxString default_name = get_default_name(curr_obj->selected_cali_preset[0].name, CalibMode::Calib_Flow_Rate); - set_default_name(default_name); + set_default_options(default_name); set_curr_flow_ratio(curr_obj->cache_flow_ratio); } } diff --git a/src/slic3r/GUI/CalibrationWizardSavePage.hpp b/src/slic3r/GUI/CalibrationWizardSavePage.hpp index 7a3b01c95f..6396d12e78 100644 --- a/src/slic3r/GUI/CalibrationWizardSavePage.hpp +++ b/src/slic3r/GUI/CalibrationWizardSavePage.hpp @@ -119,6 +119,7 @@ public: long style = wxTAB_TRAVERSAL); void create_panel(wxWindow* parent); void set_save_img(); + void set_pa_cali_method(ManualPaCaliMethod method); void set_machine_obj(MachineObject* obj) { m_obj = obj; } @@ -130,6 +131,7 @@ public: protected: wxBoxSizer* m_top_sizer; + Label * m_complete_text; CaliPagePicture* m_picture_panel; ::TextInput* m_save_name_input; ::TextInput* m_k_val; @@ -149,11 +151,13 @@ public: long style = wxTAB_TRAVERSAL); void create_panel(wxWindow* parent); void set_save_img(); + void set_pa_cali_method(ManualPaCaliMethod method); bool get_result(float* out_k, float* out_n); protected: wxBoxSizer* m_top_sizer; + Label * m_complete_text; CaliPagePicture* m_picture_panel; ::TextInput* m_k_val; ::TextInput* m_n_val; @@ -223,7 +227,7 @@ public: void create_page(wxWindow* parent); void set_save_img(); - void set_default_name(const wxString& name); + void set_default_options(const wxString &name); bool is_skip_fine_calibration(); @@ -239,6 +243,9 @@ protected: ComboBox* m_optimal_block_coarse; TextInput* m_save_name_input; + Label* m_coarse_calc_result_text; + CheckBox* m_checkBox_skip_calibration; + bool m_skip_fine_calibration = false; float m_curr_flow_ratio; float m_coarse_flow_ratio; @@ -252,7 +259,7 @@ public: void create_page(wxWindow* parent); void set_save_img(); - void set_default_name(const wxString& name); + void set_default_options(const wxString &name); void set_curr_flow_ratio(float value); @@ -266,6 +273,8 @@ protected: ComboBox* m_optimal_block_fine; TextInput* m_save_name_input; + Label* m_fine_calc_result_text; + float m_curr_flow_ratio; float m_fine_flow_ratio; }; diff --git a/src/slic3r/GUI/CalibrationWizardStartPage.cpp b/src/slic3r/GUI/CalibrationWizardStartPage.cpp index a15d59edfb..551cd6c5be 100644 --- a/src/slic3r/GUI/CalibrationWizardStartPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardStartPage.cpp @@ -155,17 +155,11 @@ void CalibrationPAStartPage::on_device_connected(MachineObject* obj) m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, false); } } - else if (obj->get_printer_series() == PrinterSeries::SERIES_P1P) { + else if (obj->get_printer_series() == PrinterSeries::SERIES_P1P || obj->get_printer_arch() == PrinterArch::ARCH_I3) { m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, false); m_action_panel->show_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, false); m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true); - - if (!obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI)) { - m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true); - } - else { - m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false); - } + m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false); } //is support auto cali diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 4a4b8f1b73..eeead56563 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -109,39 +109,6 @@ void ConfigManipulation::check_nozzle_temperature_initial_layer_range(DynamicPri } } -void ConfigManipulation::check_bed_temperature_difference(int bed_type, DynamicPrintConfig* config) -{ - if (is_msg_dlg_already_exist) - return; - - if (config->has("bed_temperature_difference") && config->has("temperature_vitrification")) { - int bed_temp_difference = config->opt_int("bed_temperature_difference", 0); - int vitrification = config->opt_int("temperature_vitrification", 0); - const ConfigOptionInts* bed_temp_1st_layer_opt = config->option(get_bed_temp_1st_layer_key((BedType)bed_type)); - const ConfigOptionInts* bed_temp_opt = config->option(get_bed_temp_key((BedType)bed_type)); - - if (bed_temp_1st_layer_opt != nullptr && bed_temp_opt != nullptr) { - int first_layer_bed_temp = bed_temp_1st_layer_opt->get_at(0); - int bed_temp = bed_temp_opt->get_at(0); - if (first_layer_bed_temp - bed_temp > bed_temp_difference) { - const wxString msg_text = wxString::Format(_L("Bed temperature of other layer is lower than bed temperature of initial layer for more than %d degree centigrade.\nThis may cause model broken free from build plate during printing"), bed_temp_difference); - MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK); - is_msg_dlg_already_exist = true; - dialog.ShowModal(); - is_msg_dlg_already_exist = false; - } - - if (first_layer_bed_temp > vitrification || bed_temp > vitrification) { - const wxString msg_text = wxString::Format( - _L("Bed temperature is higher than vitrification temperature of this filament.\nThis may cause nozzle blocked and printing failure\nPlease keep the printer open during the printing process to ensure air circulation or reduce the temperature of the hot bed")); - MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK); - is_msg_dlg_already_exist = true; - dialog.ShowModal(); - is_msg_dlg_already_exist = false; - } - } - } -} void ConfigManipulation::check_filament_max_volumetric_speed(DynamicPrintConfig *config) { @@ -163,6 +130,32 @@ void ConfigManipulation::check_filament_max_volumetric_speed(DynamicPrintConfig } +void ConfigManipulation::check_chamber_temperature(DynamicPrintConfig* config) +{ + const static std::maprecommend_temp_map = { + {"PLA",45}, + {"PLA-CF",45}, + {"PVA",45}, + {"TPU",50}, + {"PETG",55}, + {"PETG-CF",55} + }; + bool support_chamber_temp_control=GUI::wxGetApp().preset_bundle->printers.get_selected_preset().config.opt_bool("support_chamber_temp_control"); + if (support_chamber_temp_control&&config->has("chamber_temperatures")) { + std::string filament_type = config->option("filament_type")->get_at(0); + auto iter = recommend_temp_map.find(filament_type); + if (iter!=recommend_temp_map.end()) { + if (iter->second < config->option("chamber_temperatures")->get_at(0)) { + wxString msg_text = wxString::Format(_L("Current chamber temperature is higher than the material's safe temperature,it may result in material softening and clogging.The maximum safe temperature for the material is %d"), iter->second); + MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK); + is_msg_dlg_already_exist = true; + dialog.ShowModal(); + is_msg_dlg_already_exist = false; + } + } + } +} + void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, const bool is_global_config) { // #ys_FIXME_to_delete @@ -285,6 +278,12 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con config->opt_enum("timelapse_type") == TimelapseType::tlTraditional)) { wxString msg_text = _(L("Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional.")); + + auto printer_structure_opt = wxGetApp().preset_bundle->printers.get_edited_preset().config.option>("printer_structure"); + if (printer_structure_opt && printer_structure_opt->value == PrinterStructure::psI3) { + msg_text += _(L(" But machines with I3 structure will not generate timelapse videos.")); + } + if (is_global_config) msg_text += "\n\n" + _(L("Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -506,7 +505,7 @@ void ConfigManipulation::apply_null_fff_config(DynamicPrintConfig *config, std:: void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, const bool is_global_config) { PresetBundle *preset_bundle = wxGetApp().preset_bundle; - //SoftFever + auto gcflavor = preset_bundle->printers.get_edited_preset().config.option>("gcode_flavor")->value; bool have_volumetric_extrusion_rate_slope = config->option("max_volumetric_extrusion_rate_slope")->value > 0; @@ -558,7 +557,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_field(el, has_top_solid_infill || (has_spiral_vase && has_bottom_solid_infill)); bool have_default_acceleration = config->opt_float("default_acceleration") > 0; - //BBS + for (auto el : {"outer_wall_acceleration", "inner_wall_acceleration", "initial_layer_acceleration", "top_surface_acceleration", "travel_acceleration", "bridge_acceleration", "sparse_infill_acceleration", "internal_solid_infill_acceleration"}) toggle_field(el, have_default_acceleration); @@ -589,9 +588,12 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_line("brim_ears_max_angle", have_brim_ear); toggle_line("brim_ears_detection_length", have_brim_ear); + // Hide Elephant foot compensation layers if elefant_foot_compensation is not enabled + toggle_line("elefant_foot_compensation_layers", config->opt_float("elefant_foot_compensation") > 0); + bool have_raft = config->opt_int("raft_layers") > 0; bool have_support_material = config->opt_bool("enable_support") || have_raft; - // BBS + SupportType support_type = config->opt_enum("support_type"); bool have_support_interface = config->opt_int("support_interface_top_layers") > 0 || config->opt_int("support_interface_bottom_layers") > 0; bool have_support_soluble = have_support_material && config->opt_float("support_top_z_distance") == 0; @@ -634,7 +636,6 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co "support_interface_loop_pattern", "support_bottom_interface_spacing" }) toggle_field(el, have_support_material && have_support_interface); - //BBS bool have_skirt_height = have_skirt && (config->opt_int("skirt_height") > 1 || config->opt_enum("draft_shield") != dsEnabled); toggle_line("support_speed", have_support_material || have_skirt_height); @@ -653,7 +654,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_field(el, have_support_material && !(support_is_normal_tree && !have_raft)); bool has_ironing = (config->opt_enum("ironing_type") != IroningType::NoIroning); - for (auto el : { "ironing_flow", "ironing_spacing", "ironing_speed" }) + for (auto el : { "ironing_pattern", "ironing_flow", "ironing_spacing", "ironing_speed", "ironing_angle" }) toggle_line(el, has_ironing); // bool have_sequential_printing = (config->opt_enum("print_sequence") == PrintSequence::ByObject); @@ -663,12 +664,6 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool have_ooze_prevention = config->opt_bool("ooze_prevention"); toggle_field("standby_temperature_delta", have_ooze_prevention); - // Orca todo: enable/disable wipe tower parameters - // for (auto el : - // {"wipe_tower_x", "wipe_tower_y", , "wipe_tower_rotation_angle", "wipe_tower_brim_width", "wipe_tower_cone_angle", - // "wipe_tower_extra_spacing", "wipe_tower_bridging", "wipe_tower_no_sparse_layers", "single_extruder_multi_material_priming"}) - // toggle_field(el, have_wipe_tower); - bool have_prime_tower = config->opt_bool("enable_prime_tower"); for (auto el : { "prime_tower_width", "prime_tower_brim_width"}) toggle_line(el, have_prime_tower); diff --git a/src/slic3r/GUI/ConfigManipulation.hpp b/src/slic3r/GUI/ConfigManipulation.hpp index db4389d945..da856c416e 100644 --- a/src/slic3r/GUI/ConfigManipulation.hpp +++ b/src/slic3r/GUI/ConfigManipulation.hpp @@ -76,8 +76,8 @@ public: //BBS: FFF filament nozzle temperature range void check_nozzle_temperature_range(DynamicPrintConfig* config); void check_nozzle_temperature_initial_layer_range(DynamicPrintConfig* config); - void check_bed_temperature_difference(int bed_type, DynamicPrintConfig* config); void check_filament_max_volumetric_speed(DynamicPrintConfig *config); + void check_chamber_temperature(DynamicPrintConfig* config); void set_is_BBL_Printer(bool is_bbl_printer) { is_BBL_Printer = is_bbl_printer; }; // SLA print void update_print_sla_config(DynamicPrintConfig* config, const bool is_global_config = false); diff --git a/src/slic3r/GUI/ConnectPrinter.cpp b/src/slic3r/GUI/ConnectPrinter.cpp index 93ea0c34b2..cabda0afbe 100644 --- a/src/slic3r/GUI/ConnectPrinter.cpp +++ b/src/slic3r/GUI/ConnectPrinter.cpp @@ -8,7 +8,6 @@ namespace Slic3r { namespace GUI { ConnectPrinterDialog::ConnectPrinterDialog(wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos, const wxSize &size, long style) : DPIDialog(parent, id, _L("ConnectPrinter(LAN)"), pos, size, style) { - init_bitmap(); SetBackgroundColour(*wxWHITE); this->SetSizeHints(wxDefaultSize, wxDefaultSize); @@ -86,7 +85,7 @@ ConnectPrinterDialog::ConnectPrinterDialog(wxWindow *parent, wxWindowID id, cons wxBoxSizer *sizer_diagram; sizer_diagram = new wxBoxSizer(wxHORIZONTAL); - m_bitmap_diagram = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(340), FromDIP(190)), 0); + m_bitmap_diagram = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(340), -1), 0); m_bitmap_diagram->SetBitmap(m_diagram_img); sizer_diagram->Add(m_bitmap_diagram); @@ -117,19 +116,48 @@ void ConnectPrinterDialog::init_bitmap() { AppConfig *config = get_app_config(); std::string language = config->get("language"); - if (language == "zh_CN") { - m_diagram_bmp = create_scaled_bitmap("input_access_code_cn", nullptr, 190); + + if (m_obj) { + if (m_obj->printer_type == "C11" || m_obj->printer_type == "C12") { + m_diagram_bmp = create_scaled_bitmap("input_accesscode_help2", nullptr, 190); + } + else if (m_obj->printer_type == "BL-P001" || m_obj->printer_type == "BL-P002" || m_obj->printer_type == "C13") { + if (language == "zh_CN") { + m_diagram_bmp = create_scaled_bitmap("input_access_code_cn", nullptr, 190); + } + else { + m_diagram_bmp = create_scaled_bitmap("input_access_code_en", nullptr, 190); + } + } + else if (m_obj->printer_type == "N1") { + if (language == "zh_CN") { + m_diagram_bmp = create_scaled_bitmap("input_access_code_n1_cn", nullptr, 250); + } + else { + m_diagram_bmp = create_scaled_bitmap("input_access_code_n1_en", nullptr, 250); + } + } } - else{ - m_diagram_bmp = create_scaled_bitmap("input_access_code_en", nullptr, 190); + else { + if (language == "zh_CN") { + m_diagram_bmp = create_scaled_bitmap("input_access_code_cn", nullptr, 190); + } + else { + m_diagram_bmp = create_scaled_bitmap("input_access_code_en", nullptr, 190); + } } m_diagram_img = m_diagram_bmp.ConvertToImage(); - m_diagram_img.Rescale(FromDIP(340), FromDIP(190)); + auto bmp_size = m_diagram_bmp.GetSize(); + float scale = (float)FromDIP(340) / (float)bmp_size.x; + m_diagram_img.Rescale(FromDIP(340), bmp_size.y * scale); + m_bitmap_diagram->SetBitmap(m_diagram_img); + Fit(); } void ConnectPrinterDialog::set_machine_object(MachineObject* obj) { m_obj = obj; + init_bitmap(); } void ConnectPrinterDialog::on_input_enter(wxCommandEvent& evt) diff --git a/src/slic3r/GUI/ConnectPrinter.hpp b/src/slic3r/GUI/ConnectPrinter.hpp index d73a3ba63f..db45bd1180 100644 --- a/src/slic3r/GUI/ConnectPrinter.hpp +++ b/src/slic3r/GUI/ConnectPrinter.hpp @@ -34,7 +34,7 @@ protected: wxBitmap m_diagram_bmp; wxImage m_diagram_img; - MachineObject* m_obj; + MachineObject* m_obj{ nullptr }; wxString m_input_access_code; public: ConnectPrinterDialog(wxWindow * parent, diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index dd9c757ae1..4829b7e55c 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -21,7 +21,7 @@ namespace pt = boost::property_tree; -const int PRINTING_STAGE_COUNT = 20; +const int PRINTING_STAGE_COUNT = 32; std::string PRINTING_STAGE_STR[PRINTING_STAGE_COUNT] = { "printing", "bed_leveling", @@ -42,7 +42,19 @@ std::string PRINTING_STAGE_STR[PRINTING_STAGE_COUNT] = { "user_pause", "toolhead_shell_off_pause", "scanner_laser_para_cali", - "extruder_absolute_flow_cali" + "extruder_absolute_flow_cali", + "hotend_temperature_error_pause", // 20 + "heated_bed_temperature_error_pause", + "filament_unloading", + "skip_step_pause", + "filament_loading", + "motor_noise_calibration", + "ams_lost_pause", + "heat_break_fan_pause", + "chamber_temperature_control_error_pause", + "chamber_cooling", + "user_insert_gcode_pause", + "motor_noise_showoff" }; @@ -97,6 +109,26 @@ wxString get_stage_string(int stage) return _L("Paused due to nozzle temperature malfunction"); case 21: return _L("Paused due to heat bed temperature malfunction"); + case 22: + return _L("Filament unloading"); + case 23: + return _L("Skip step pause"); + case 24: + return _L("Filament loading"); + case 25: + return _L("Motor noise calibration"); + case 26: + return _L("Paused due to AMS lost"); + case 27: + return _L("Paused due to low speed of the heat break fan"); + case 28: + return _L("Paused due to chamber temperature control error"); + case 29: + return _L("Cooling chamber"); + case 30: + return _L("Paused by the Gcode inserted by user"); + case 31: + return _L("Motor noise showoff"); default: ; } @@ -139,6 +171,18 @@ void split_string(std::string s, std::vector& v) { v.push_back(t); } +PrinterArch get_printer_arch_by_str(std::string arch_str) +{ + if (arch_str == "i3") { + return PrinterArch::ARCH_I3; + } + else if (arch_str == "core_xy") { + return PrinterArch::ARCH_CORE_XY; + } + + return PrinterArch::ARCH_CORE_XY; +} + void AmsTray::update_color_from_str(std::string color) { if (color.empty()) return; @@ -241,10 +285,7 @@ bool HMSItem::parse_hms_info(unsigned attr, unsigned code) { bool result = true; unsigned int model_id_int = (attr >> 24) & 0xFF; - if (model_id_int < (unsigned) MODULE_MAX) - this->module_id = (ModuleID)model_id_int; - else - this->module_id = MODULE_UKNOWN; + this->module_id = (ModuleID)model_id_int; this->module_num = (attr >> 16) & 0xFF; this->part_id = (attr >> 8) & 0xFF; this->reserved = (attr >> 0) & 0xFF; @@ -420,7 +461,7 @@ bool MachineObject::is_high_printer_type() PrinterSeries MachineObject::get_printer_series() const { - if (printer_type == "BL-P001" || printer_type == "BL-P002") + if (printer_type == "BL-P001" || printer_type == "BL-P002" || printer_type == "C13") return PrinterSeries::SERIES_X1; else if (printer_type == "C11" || printer_type == "C12") return PrinterSeries::SERIES_P1P; @@ -428,6 +469,11 @@ PrinterSeries MachineObject::get_printer_series() const return PrinterSeries::SERIES_P1P; } +PrinterArch MachineObject::get_printer_arch() const +{ + return DeviceManager::get_printer_arch(printer_type); +} + MachineObject::MachineObject(NetworkAgent* agent, std::string name, std::string id, std::string ip) :dev_name(name), dev_id(id), @@ -448,6 +494,7 @@ MachineObject::MachineObject(NetworkAgent* agent, std::string name, std::string bed_temp = 0.0f; bed_temp_target = 0.0f; chamber_temp = 0.0f; + chamber_temp_target = 0.0f; frame_temp = 0.0f; /* ams fileds */ @@ -693,7 +740,7 @@ bool MachineObject::is_U0_firmware() bool MachineObject::is_support_ams_mapping() { - if (get_printer_series() == PrinterSeries::SERIES_X1) { + if (get_printer_series() == PrinterSeries::SERIES_X1 && printer_type != "C13") { AppConfig* config = Slic3r::GUI::wxGetApp().app_config; if (config) { if (config->get("check_ams_version") == "0") @@ -725,6 +772,27 @@ bool MachineObject::is_support_ams_mapping() } } +bool MachineObject::is_support_command_ams_switch() +{ + auto ota_ver_it = module_vers.find("ota"); + if (ota_ver_it != module_vers.end()) { + if (printer_type == "BL-P001" || printer_type == "BL-P002") { + + if (ota_ver_it->second.sw_ver.compare("01.05.06.01") < 0) { + return false; + } + + }else if (printer_type == "C11" || printer_type == "C12") { + + if (ota_ver_it->second.sw_ver.compare("01.02.99.10") < 0) { + return false; + } + } + } + + return true; +} + bool MachineObject::is_support_ams_mapping_version(std::string module, std::string version) { bool result = true; @@ -1311,7 +1379,15 @@ void MachineObject::parse_status(int flag) ams_auto_switch_filament_flag = ((flag >> 10) & 0x1) != 0; } + if (xcam_prompt_sound_hold_count > 0) + xcam_prompt_sound_hold_count--; + else { + xcam_allow_prompt_sound = ((flag >> 17) & 0x1) != 0; + } + sdcard_state = MachineObject::SdcardState((flag >> 8) & 0x11); + + network_wired = ((flag >> 18) & 0x1) != 0; } PrintingSpeedLevel MachineObject::_parse_printing_speed_lvl(int lvl) @@ -1381,48 +1457,69 @@ void MachineObject::parse_version_func() auto rv1126_version = module_vers.find("rv1126"); if (get_printer_series() == PrinterSeries::SERIES_X1) { if (ota_version != module_vers.end()) { - if (ota_version->second.sw_ver.compare("01.01.01.00") <= 0) { - ams_support_remain = false; - ams_support_auto_switch_filament_flag = false; - is_xcam_buildplate_supported = false; - xcam_support_recovery_step_loss = false; - is_support_send_to_sdcard = false; - is_support_1080dpi = false; - is_support_ai_monitoring = false; - is_support_ams_humidity = false; - } else { - ams_support_remain = true; - ams_support_auto_switch_filament_flag = true; - is_xcam_buildplate_supported = true; - xcam_support_recovery_step_loss = true; - is_support_send_to_sdcard = true; - is_support_1080dpi = true; - is_support_ai_monitoring = true; - is_support_ams_humidity = true; - } - if (ota_version != module_vers.end()) { - if (firmware_type == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) { - local_use_ssl_for_mqtt = ota_version->second.sw_ver.compare("01.03.01.04") >= 0; - } - - if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) { - is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.05.06.05") >= 0; - } - else if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_ENGINEER) { - is_support_mqtt_alive = ota_version->second.sw_ver.compare("00.03.10.05") >= 0; + if (printer_type != "C13") { + if (ota_version->second.sw_ver.compare("01.01.01.00") <= 0) { + ams_support_remain = false; + ams_support_auto_switch_filament_flag = false; + is_xcam_buildplate_supported = false; + xcam_support_recovery_step_loss = false; + is_support_send_to_sdcard = false; + is_support_1080dpi = false; + is_support_ai_monitoring = false; + is_support_ams_humidity = false; } else { - is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.05.06.05") >= 0; + ams_support_remain = true; + ams_support_auto_switch_filament_flag = true; + is_xcam_buildplate_supported = true; + xcam_support_recovery_step_loss = true; + is_support_send_to_sdcard = true; + is_support_1080dpi = true; + is_support_ai_monitoring = true; + is_support_ams_humidity = true; } - is_support_remote_tunnel = true; - is_support_tunnel_mqtt = (ota_version->second.sw_ver.compare("01.05.06.06") >= 0 - || (rv1126_version != module_vers.end() && rv1126_version->second.sw_ver.compare("00.00.21.20") >= 0)); + if (ota_version != module_vers.end()) { + if (firmware_type == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) { + local_use_ssl_for_mqtt = ota_version->second.sw_ver.compare("01.03.01.04") >= 0; + } + + if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.05.06.05") >= 0; + } + else if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_ENGINEER) { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("00.03.10.05") >= 0; + } + else { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.05.06.05") >= 0; + } + + is_support_remote_tunnel = true; + is_support_tunnel_mqtt = (ota_version->second.sw_ver.compare("01.05.06.06") >= 0 + || (rv1126_version != module_vers.end() && rv1126_version->second.sw_ver.compare("00.00.21.20") >= 0)); + } + local_camera_proto = local_rtsp_url.empty() ? -1 : local_rtsp_url == "disable" ? 0 + : boost::algorithm::starts_with(local_rtsp_url, "rtsps") ? 2 : 3; + file_proto = 2; + } + else { + ams_support_remain = true; + ams_support_auto_switch_filament_flag = true; + is_xcam_buildplate_supported = true; + xcam_support_recovery_step_loss = true; + is_support_send_to_sdcard = true; + is_support_1080dpi = true; + is_support_ai_monitoring = true; + is_support_ams_humidity = true; + is_support_mqtt_alive = true; + local_use_ssl_for_mqtt = true; + is_support_remote_tunnel = true; + is_support_tunnel_mqtt = true; + local_camera_proto = local_rtsp_url.empty() ? -1 : local_rtsp_url == "disable" ? 0 + : boost::algorithm::starts_with(local_rtsp_url, "rtsps") ? 2 : 3; + file_proto = 2; } - local_camera_proto = local_rtsp_url.empty() ? -1 : local_rtsp_url == "disable" ? 0 - : boost::algorithm::starts_with(local_rtsp_url, "rtsps") ? 2 : 3; - file_proto = 2; } } else if (printer_type == "C11") { is_cloud_print_only = true; @@ -1469,6 +1566,13 @@ void MachineObject::parse_version_func() is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.03.50.01") >= 0; } } + } else if (printer_type == "N1") { + is_support_remote_tunnel = true; + local_camera_proto = 1; + is_support_tunnel_mqtt = true; + is_support_ams_humidity = false; + is_support_1080dpi = true; + ams_support_remain = false; } } @@ -1672,24 +1776,46 @@ int MachineObject::command_set_nozzle(int temp) return this->publish_gcode(gcode_str); } +int MachineObject::command_set_chamber(int temp) +{ + json j; + j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); + j["print"]["command"] = "set_ctt"; + j["print"]["ctt_val"] = temp; + + return this->publish_json(j.dump(), 1); +} + int MachineObject::command_ams_switch(int tray_index, int old_temp, int new_temp) { BOOST_LOG_TRIVIAL(trace) << "ams_switch to " << tray_index << " with temp: " << old_temp << ", " << new_temp; + if (old_temp < 0) old_temp = FILAMENT_DEF_TEMP; if (new_temp < 0) new_temp = FILAMENT_DEF_TEMP; - int tray_id_int = tray_index; + int result = 0; - std::string gcode = ""; - if (tray_index == 255) { - gcode = DeviceManager::load_gcode(printer_type, "ams_unload.gcode"); - } else { - // include VIRTUAL_TRAY_ID - gcode = DeviceManager::load_gcode(printer_type, "ams_load.gcode"); - boost::replace_all(gcode, "[next_extruder]", std::to_string(tray_index)); - boost::replace_all(gcode, "[new_filament_temp]", std::to_string(new_temp)); + + //command + if (is_support_command_ams_switch()) { + command_ams_change_filament(tray_index, old_temp, new_temp); + } + //gcode + else { + std::string gcode = ""; + if (tray_index == 255) { + gcode = DeviceManager::load_gcode(printer_type, "ams_unload.gcode"); + } + else { + // include VIRTUAL_TRAY_ID + gcode = DeviceManager::load_gcode(printer_type, "ams_load.gcode"); + boost::replace_all(gcode, "[next_extruder]", std::to_string(tray_index)); + boost::replace_all(gcode, "[new_filament_temp]", std::to_string(new_temp)); + } + + result = this->publish_gcode(gcode); } - return this->publish_gcode(gcode); + return result; } int MachineObject::command_ams_change_filament(int tray_id, int old_temp, int new_temp) @@ -1902,6 +2028,15 @@ int MachineObject::command_set_printing_option(bool auto_recovery) return this->publish_json(j.dump()); } +int MachineObject::command_set_prompt_sound(bool prompt_sound){ + json j; + j["print"]["command"] = "print_option"; + j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); + j["print"]["sound_enable"] = prompt_sound; + + return this->publish_json(j.dump()); +} + int MachineObject::command_ams_switch_filament(bool switch_filament) { json j; @@ -1916,8 +2051,17 @@ int MachineObject::command_ams_switch_filament(bool switch_filament) return this->publish_json(j.dump()); } -int MachineObject::command_axis_control(std::string axis, double unit, double value, int speed) + +int MachineObject::command_axis_control(std::string axis, double unit, double input_val, int speed) { + double value = input_val; + if (!is_core_xy()) { + if ( axis.compare("Y") == 0 + || axis.compare("Z") == 0) { + value = -1.0 * input_val; + } + } + char cmd[256]; if (axis.compare("X") == 0 || axis.compare("Y") == 0 @@ -1956,7 +2100,7 @@ bool MachineObject::is_support_command_calibration() return true; } -int MachineObject::command_start_calibration(bool vibration, bool bed_leveling, bool xcam_cali) +int MachineObject::command_start_calibration(bool vibration, bool bed_leveling, bool xcam_cali, bool motor_noise) { if (!is_support_command_calibration()) { // fixed gcode file @@ -1969,7 +2113,8 @@ int MachineObject::command_start_calibration(bool vibration, bool bed_leveling, json j; j["print"]["command"] = "calibration"; j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); - j["print"]["option"] = (vibration ? 1 << 2 : 0) + j["print"]["option"]= (motor_noise ? 1 << 3 : 0) + + (vibration ? 1 << 2 : 0) + (bed_leveling ? 1 << 1 : 0) + (xcam_cali ? 1 << 0 : 0); return this->publish_json(j.dump()); @@ -2264,6 +2409,13 @@ int MachineObject::command_xcam_control_auto_recovery_step_loss(bool on_off) return command_set_printing_option(on_off); } +int MachineObject::command_xcam_control_allow_prompt_sound(bool on_off) +{ + xcam_allow_prompt_sound = on_off; + xcam_prompt_sound_hold_count = HOLD_COUNT_MAX; + return command_set_prompt_sound(on_off); +} + void MachineObject::set_bind_status(std::string status) { bind_user_name = status; @@ -2347,6 +2499,13 @@ bool MachineObject::is_printing_finished() return false; } +bool MachineObject::is_core_xy() +{ + if (get_printer_arch() == PrinterArch::ARCH_CORE_XY) + return true; + return false; +} + void MachineObject::reset_update_time() { BOOST_LOG_TRIVIAL(trace) << "reset reset_update_time, dev_id =" << dev_id; @@ -2373,6 +2532,8 @@ void MachineObject::reset() m_is_support_show_bak = false; extruder_axis_status = LOAD; nozzle_diameter = 0.0f; + network_wired = false; + dev_connection_name = ""; // reset print_json json empty_j; @@ -2513,7 +2674,10 @@ bool MachineObject::is_function_supported(PrinterFunction func) func_name = "FUNC_CAMERA_VIDEO"; break; case FUNC_MEDIA_FILE: - func_name = "FUNC_MEDIA_FILE"; + func_name = "FUNC_MEDIA_FILE"; + break; + case FUNC_PROMPT_SOUND: + func_name = "FUNC_PROMPT_SOUND"; break; case FUNC_REMOTE_TUNNEL: parse_version_func(); @@ -2551,6 +2715,9 @@ bool MachineObject::is_function_supported(PrinterFunction func) case FUNC_CHAMBER_FAN: func_name = "FUNC_CHAMBER_FAN"; break; + case FUNC_AUX_FAN: + func_name = "FUNC_AUX_FAN"; + break; case FUNC_EXTRUSION_CALI: if (!ams_support_virtual_tray) return false; @@ -2567,6 +2734,9 @@ bool MachineObject::is_function_supported(PrinterFunction func) case FUNC_FILAMENT_BACKUP: func_name = "FUNC_FILAMENT_BACKUP"; break; + case FUNC_MOTOR_NOISE_CALI: + func_name = "FUNC_MOTOR_NOISE_CALI"; + break; default: return true; } @@ -2586,7 +2756,7 @@ bool MachineObject::is_support_print_with_timelapse() bool MachineObject::is_camera_busy_off() { - if (printer_type == "C11" || printer_type == "C12") + if (printer_type == "C11" || printer_type == "C12" || printer_type == "N1") return is_in_prepare() || is_in_upgrading(); return false; } @@ -2708,6 +2878,34 @@ int MachineObject::parse_json(std::string payload) } } if (jj.contains("command")) { + + if (jj["command"].get() == "ams_change_filament") { + if (jj.contains("errno")) { + if (jj["errno"].is_number()) { + if (jj["errno"].get() == -2) { + wxString text = _L("The current chamber temperature or the target chamber temperature exceeds 45\u2103.In order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is not allowed to be loaded."); + GUI::wxGetApp().show_dialog(text); + } + } + } + } + + if (jj["command"].get() == "set_ctt") { + if (m_agent && is_studio_cmd(sequence_id)) { + if (jj["errno"].is_number()) { + if (jj["errno"].get() == -2) { + wxString text = _L("Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to avoid extruder clogging,it is not allowed to set the chamber temperature above 45\u2103."); + GUI::wxGetApp().show_dialog(text); + } + else if (jj["errno"].get() == -4) { + wxString text = _L("When you set the chamber temperature below 40\u2103, the chamber temperature control will not be activated. And the target chamber temperature will automatically be set to 0\u2103."); + GUI::wxGetApp().show_dialog(text); + } + } + } + } + + if (jj["command"].get() == "push_status") { m_push_count++; last_push_time = std::chrono::system_clock::now(); @@ -2910,6 +3108,11 @@ int MachineObject::parse_json(std::string payload) chamber_temp = jj["chamber_temper"].get(); } } + if (jj.contains("ctt")) { + if (jj["ctt"].is_number()) { + chamber_temp_target = jj["ctt"].get(); + } + } /* signals */ if (jj.contains("link_th_state")) link_th = jj["link_th_state"].get(); @@ -4087,7 +4290,7 @@ int MachineObject::parse_json(std::string payload) if (it->contains("confidence")) { flow_ratio_calib_result.confidence = (*it)["confidence"].get(); } else { - flow_ratio_calib_result.confidence = 0; + flow_ratio_calib_result.confidence = 0; } flow_ratio_results.push_back(flow_ratio_calib_result); @@ -4256,7 +4459,8 @@ void MachineObject::update_slice_info(std::string project_id, std::string profil } if (project_id.compare("0") == 0 - || profile_id.compare("0") == 0) return; + || profile_id.compare("0") == 0 + || subtask_id.compare("0") == 0) return; BOOST_LOG_TRIVIAL(trace) << "slice_info: start"; slice_info = new BBLSliceInfo(); @@ -4268,9 +4472,35 @@ void MachineObject::update_slice_info(std::string project_id, std::string profil if (plate_idx >= 0) { plate_index = plate_idx; } else { - if (subtask_id.compare("0") == 0) - return; - m_agent->get_task_plate_index(subtask_id, &plate_index); + + std::string subtask_json; + unsigned http_code = 0; + std::string http_body; + if (m_agent->get_subtask_info(subtask_id, &subtask_json, &http_code, &http_body) == 0) { + try { + json task_j = json::parse(subtask_json); + if (task_j.contains("content")) { + std::string content_str = task_j["content"].get(); + json content_j = json::parse(content_str); + plate_index = content_j["info"]["plate_idx"].get(); + } + + if (task_j.contains("context") && task_j["context"].contains("plates")) { + for (int i = 0; i < task_j["context"]["plates"].size(); i++) { + if (task_j["context"]["plates"][i].contains("index") && task_j["context"]["plates"][i]["index"].get() == plate_index) { + slice_info->thumbnail_url = task_j["context"]["plates"][i]["thumbnail"]["url"].get(); + BOOST_LOG_TRIVIAL(trace) << "task_info: thumbnail url=" << slice_info->thumbnail_url; + } + } + } else { + BOOST_LOG_TRIVIAL(error) << "task_info: no context or plates"; + } + } + catch(...) { + } + } else { + BOOST_LOG_TRIVIAL(error) << "task_info: get subtask id failed!"; + } } if (plate_index >= 0) { @@ -4285,7 +4515,7 @@ void MachineObject::update_slice_info(std::string project_id, std::string profil if (!j["weight"].is_null()) slice_info->weight = j["weight"].get(); if (!j["thumbnail"].is_null()) { - slice_info->thumbnail_url = j["thumbnail"]["url"].get(); + //slice_info->thumbnail_url = j["thumbnail"]["url"].get(); BOOST_LOG_TRIVIAL(trace) << "slice_info: thumbnail url=" << slice_info->thumbnail_url; } if (!j["filaments"].is_null()) { @@ -4479,6 +4709,10 @@ void DeviceManager::on_machine_alive(std::string json_str) if (j.contains("sec_link")) { sec_link = j["sec_link"].get(); } + std::string connection_name = ""; + if (j.contains("connection_name")) { + connection_name = j["connection_name"].get(); + } MachineObject* obj; @@ -4497,11 +4731,24 @@ void DeviceManager::on_machine_alive(std::string json_str) // update properties /* ip changed */ obj = it->second; - if (obj->dev_ip.compare(dev_ip) != 0 && !obj->dev_ip.empty()) { - BOOST_LOG_TRIVIAL(info) << "MachineObject IP changed from " << obj->dev_ip << " to " << dev_ip; - obj->dev_ip = dev_ip; + + if (obj->dev_ip.compare(dev_ip) != 0) { + if ( connection_name.empty() ) { + BOOST_LOG_TRIVIAL(info) << "MachineObject IP changed from " << obj->dev_ip << " to " << dev_ip; + obj->dev_ip = dev_ip; + } + else { + if ( obj->dev_connection_name.empty() || obj->dev_connection_name.compare(connection_name) == 0) { + BOOST_LOG_TRIVIAL(info) << "MachineObject IP changed from " << obj->dev_ip << " to " << dev_ip << " connection_name is " << connection_name; + if(obj->dev_connection_name.empty()){obj->dev_connection_name = connection_name;} + obj->dev_ip = dev_ip; + } + + } /* ip changed reconnect mqtt */ } + + obj->wifi_signal = printer_signal; obj->dev_connection_type= connect_type; obj->bind_state = bind_state; @@ -4529,6 +4776,7 @@ void DeviceManager::on_machine_alive(std::string json_str) obj->dev_connection_type = connect_type; obj->bind_state = bind_state; obj->bind_sec_link = sec_link; + obj->dev_connection_name = connection_name; //load access code AppConfig* config = Slic3r::GUI::wxGetApp().app_config; @@ -4968,6 +5216,21 @@ std::string DeviceManager::get_ftp_folder(std::string type_str) return ""; } +PrinterArch DeviceManager::get_printer_arch(std::string type_str) +{ + PrinterArch arch = PrinterArch::ARCH_CORE_XY; + if (DeviceManager::function_table.contains("printers")) { + for (auto printer : DeviceManager::function_table["printers"]) { + if (printer.contains("model_id") && printer["model_id"].get() == type_str) { + if (printer.contains("printer_arch")) { + return get_printer_arch_by_str(printer["printer_arch"].get()); + } + } + } + } + return arch; +} + std::string DeviceManager::get_printer_thumbnail_img(std::string type_str) { if (DeviceManager::function_table.contains("printers")) { @@ -5029,6 +5292,22 @@ bool DeviceManager::get_bed_temperature_limit(std::string type_str, int &limit) return result; } +bool DeviceManager::get_nozzle_max_temperature(std::string type_str, int& limit) +{ + bool result = false; + if (DeviceManager::function_table.contains("printers")) { + for (auto printer : DeviceManager::function_table["printers"]) { + if (printer.contains("model_id") && printer["model_id"].get() == type_str) { + if (printer.contains("nozzle_max_temperature")) { + limit = printer["nozzle_max_temperature"].get(); + return true; + } + } + } + } + return result; +} + bool DeviceManager::load_functional_config(std::string config_file) { std::ifstream json_file(config_file.c_str()); diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 127ca34166..9223694610 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -52,6 +52,11 @@ using namespace nlohmann; namespace Slic3r { +enum PrinterArch { + ARCH_CORE_XY, + ARCH_I3, +}; + enum PrinterSeries { SERIES_X1 = 0, SERIES_P1P, @@ -100,10 +105,13 @@ enum PrinterFunction { FUNC_SEND_TO_SDCARD, FUNC_AUTO_SWITCH_FILAMENT, FUNC_CHAMBER_FAN, + FUNC_AUX_FAN, FUNC_EXTRUSION_CALI, + FUNC_PROMPT_SOUND, FUNC_VIRTUAL_TYAY, FUNC_PRINT_ALL, FUNC_FILAMENT_BACKUP, + FUNC_MOTOR_NOISE_CALI, FUNC_MAX }; @@ -166,6 +174,11 @@ enum AmsOptionType { AMS_OP_CALIBRATE_REMAIN }; +enum ManualPaCaliMethod { + PA_LINE = 0, + PA_PATTERN, +}; + class AmsTray { public: AmsTray(std::string tray_id) { @@ -431,6 +444,7 @@ public: float nozzle_diameter { 0.0f }; std::string dev_connection_type; /* lan | cloud */ std::string connection_type() { return dev_connection_type; } + std::string dev_connection_name; /* lan | eth */ void set_dev_ip(std::string ip) {dev_ip = ip;}; bool has_access_right() { return !get_access_code().empty(); } std::string get_ftp_folder(); @@ -446,6 +460,7 @@ public: //PRINTER_TYPE printer_type = PRINTER_3DPrinter_UKNOWN; std::string printer_type; /* model_id */ PrinterSeries get_printer_series() const; + PrinterArch get_printer_arch() const; std::string printer_thumbnail_img; std::string monitor_upgrade_printer_img; @@ -529,6 +544,7 @@ public: bool can_unload_filament(); bool is_U0_firmware(); bool is_support_ams_mapping(); + bool is_support_command_ams_switch(); static bool is_support_ams_mapping_version(std::string module, std::string version); int ams_filament_mapping(std::vector filaments, std::vector &result, std::vector exclude_id = std::vector()); @@ -549,6 +565,7 @@ public: float bed_temp; float bed_temp_target; float chamber_temp; + float chamber_temp_target; float frame_temp; /* cooling */ @@ -562,6 +579,7 @@ public: std::string wifi_signal; std::string link_th; std::string link_ams; + bool network_wired { false }; /* lights */ LIGHT_EFFECT chamber_light; @@ -632,6 +650,7 @@ public: float cache_flow_ratio { 0.0 }; bool cali_finished = true; + ManualPaCaliMethod manual_pa_cali_method = ManualPaCaliMethod::PA_LINE; bool has_get_pa_calib_tab{ false }; std::vector pa_calib_tab; float pa_calib_tab_nozzle_dia; @@ -711,7 +730,9 @@ public: int xcam_buildplate_marker_hold_count = 0; bool xcam_support_recovery_step_loss { true }; bool xcam_auto_recovery_step_loss{ false }; + bool xcam_allow_prompt_sound{ false }; int xcam_auto_recovery_hold_count = 0; + int xcam_prompt_sound_hold_count = 0; int ams_print_option_count = 0; /*not support U2*/ @@ -786,6 +807,7 @@ public: int command_task_resume(); int command_set_bed(int temp); int command_set_nozzle(int temp); + int command_set_chamber(int temp); // ams controls int command_ams_switch(int tray_index, int old_temp = 210, int new_temp = 210); int command_ams_change_filament(int tray_id, int old_temp = 210, int new_temp = 210); @@ -806,15 +828,18 @@ public: // set printing speed int command_set_printing_speed(PrintingSpeedLevel lvl); + //set pormpt sound + int command_set_prompt_sound(bool prompt_sound); + // set print option int command_set_printing_option(bool auto_recovery); // axis string is X, Y, Z, E - int command_axis_control(std::string axis, double unit = 1.0f, double value = 1.0f, int speed = 3000); + int command_axis_control(std::string axis, double unit = 1.0f, double input_val = 1.0f, int speed = 3000); // calibration printer bool is_support_command_calibration(); - int command_start_calibration(bool vibration, bool bed_leveling, bool xcam_cali); + int command_start_calibration(bool vibration, bool bed_leveling, bool xcam_cali, bool motor_noise); // PA calibration int command_start_pa_calibration(const X1CCalibInfos& pa_data, int mode = 0); // 0: automatic mode; 1: manual mode. default: automatic mode @@ -839,6 +864,7 @@ public: int command_xcam_control_first_layer_inspector(bool on_off, bool print_halt); int command_xcam_control_buildplate_marker_detector(bool on_off); int command_xcam_control_auto_recovery_step_loss(bool on_off); + int command_xcam_control_allow_prompt_sound(bool on_off); /* common apis */ inline bool is_local() { return !dev_ip.empty(); } @@ -851,6 +877,7 @@ public: bool is_in_printing(); bool is_in_prepare(); bool is_printing_finished(); + bool is_core_xy(); void reset_update_time(); void reset(); static bool is_in_printing_status(std::string status); @@ -944,11 +971,13 @@ public: static std::string parse_printer_type(std::string type_str); static std::string get_printer_display_name(std::string type_str); static std::string get_printer_thumbnail_img(std::string type_str); + static PrinterArch get_printer_arch(std::string type_str); static std::string get_ftp_folder(std::string type_str); static bool is_function_supported(std::string type_str, std::string function_name); static std::vector get_resolution_supported(std::string type_str); static bool get_bed_temperature_limit(std::string type_str, int& limit); + static bool get_nozzle_max_temperature(std::string type_str, int& limit); static bool load_functional_config(std::string config_file); static bool load_filaments_blacklist_config(std::string config_file); static void check_filaments_in_blacklist(std::string tag_vendor, std::string tag_type, bool& in_blacklist, std::string& ac, std::string& info); diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 2488e4e2f3..091a60b45f 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -66,6 +66,12 @@ wxString double_to_string(double const value, const int max_precision /*= 4*/) return s; } +wxString get_thumbnail_string(const Vec2d& value) +{ + wxString ret_str = wxString::Format("%.2fx%.2f", value[0], value[1]); + return ret_str; +} + wxString get_thumbnails_string(const std::vector& values) { wxString ret_str; @@ -367,6 +373,34 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true m_value = into_u8(str); break; } + case coPoint:{ + Vec2d out_value; + str.Replace(" ", wxEmptyString, true); + if (!str.IsEmpty()) { + bool invalid_val = true; + double x, y; + wxStringTokenizer thumbnail(str, "x"); + if (thumbnail.HasMoreTokens()) { + wxString x_str = thumbnail.GetNextToken(); + if (x_str.ToDouble(&x) && thumbnail.HasMoreTokens()) { + wxString y_str = thumbnail.GetNextToken(); + if (y_str.ToDouble(&y) && !thumbnail.HasMoreTokens()) { + out_value = Vec2d(x, y); + invalid_val = false; + } + } + } + + if (invalid_val) { + wxString text_value; + if (!m_value.empty()) text_value = get_thumbnail_string(boost::any_cast(m_value)); + set_value(text_value, true); + show_error(m_parent, format_wxstr(_L("Invalid format. Expected vector format: \"%1%\""), "XxY, XxY, ...")); + } + } + + m_value = out_value; + break; } case coPoints: { std::vector out_values; @@ -446,7 +480,7 @@ void Field::sys_color_changed() template bool is_defined_input_value(wxWindow* win, const ConfigOptionType& type) { - if (!win || (static_cast(win)->GetValue().empty() && type != coString && type != coStrings && type != coPoints)) + if (!win || (static_cast(win)->GetValue().empty() && type != coString && type != coStrings && type != coPoints && type != coPoint)) return false; return true; } @@ -495,6 +529,9 @@ void TextCtrl::BUILD() { text_value = vec->get_at(m_opt_idx); break; } + case coPoint: + text_value = get_thumbnail_string(m_opt.get_default_value()->value); + break; case coPoints: text_value = get_thumbnails_string(m_opt.get_default_value()->values); break; @@ -1622,8 +1659,11 @@ void PointCtrl::BUILD() auto temp = new wxBoxSizer(wxHORIZONTAL); const wxSize field_size(4 * m_em_unit, -1); - - auto default_pt = m_opt.get_default_value()->values.at(0); + Slic3r::Vec2d default_pt; + if(m_opt.type == coPoints) + default_pt = m_opt.get_default_value()->values.at(0); + else + default_pt = m_opt.get_default_value()->value; double val = default_pt(0); wxString X = val - int(val) == 0 ? wxString::Format(_T("%i"), int(val)) : wxNumberFormatter::ToString(val, 2, wxNumberFormatter::Style_None); val = default_pt(1); @@ -1734,14 +1774,19 @@ void PointCtrl::set_value(const Vec2d& value, bool change_event) void PointCtrl::set_value(const boost::any& value, bool change_event) { Vec2d pt(Vec2d::Zero()); - const Vec2d *ptf = boost::any_cast(&value); - if (!ptf) - { - ConfigOptionPoints* pts = boost::any_cast(value); - pt = pts->values.at(0); - } - else - pt = *ptf; + const Vec2d* ptf = boost::any_cast(&value); + if (!ptf) { + if (m_opt.type == coPoint) { + ConfigOptionPoint* pts = boost::any_cast(value); + pt = pts->value; + } + else { + ConfigOptionPoints* pts = boost::any_cast(value); + pt = pts->values.at(0); + } + } + else + pt = *ptf; set_value(pt, change_event); } diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index 1a997a8eba..a951c02132 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -38,6 +38,7 @@ using t_change = std::function; wxString double_to_string(double const value, const int max_precision = 4); +wxString get_thumbnail_string(const Vec2d& value); wxString get_thumbnails_string(const std::vector& values); class Field { diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 7184f554df..e68df3e382 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5379,6 +5379,7 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo std::string bed_shrink_x_key = "bed_shrink_x", bed_shrink_y_key = "bed_shrink_y"; std::string multi_material_key = "allow_multi_materials_on_same_plate"; std::string avoid_extrusion_key = "avoid_extrusion_cali_region"; + std::string align_to_y_axis_key = "align_to_y_axis"; std::string postfix; //BBS: bool seq_print = false; @@ -5394,7 +5395,7 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo //BBS: seq_print = true; } else { - dist_min = 0.1f; + dist_min = 0.0f; postfix = "_fff"; } } @@ -5446,6 +5447,22 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo settings_out.avoid_extrusion_cali_region = false; } + // Align to Y axis. Only enable this option when auto rotation not enabled + { + if (settings_out.enable_rotation) { // do not allow align to Y axis if rotation is enabled + imgui->disabled_begin(true); + settings_out.align_to_y_axis = false; + } + + if (imgui->bbl_checkbox(_L("Align to Y axis"), settings.align_to_y_axis)) { + settings_out.align_to_y_axis = settings.align_to_y_axis; + appcfg->set("arrange", align_to_y_axis_key, settings_out.align_to_y_axis ? "1" : "0"); + settings_changed = true; + } + + if (settings_out.enable_rotation == true) { imgui->disabled_end(); } + } + ImGui::Separator(); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(15.0f, 10.0f)); if (imgui->button(_L("Arrange"))) { @@ -5460,8 +5477,16 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo settings_out.distance = std::max(dist_min, settings_out.distance); //BBS: add specific arrange settings if (seq_print) settings_out.is_seq_print = true; - appcfg->set("arrange", dist_key.c_str(), float_to_string_decimal_point(settings_out.distance)); - appcfg->set("arrange", rot_key.c_str(), settings_out.enable_rotation? "1" : "0"); + + if (auto printer_structure_opt = wxGetApp().preset_bundle->printers.get_edited_preset().config.option>("printer_structure")) { + settings_out.align_to_y_axis = (printer_structure_opt->value == PrinterStructure::psI3); + } + else + settings_out.align_to_y_axis = false; + + appcfg->set("arrange", dist_key, float_to_string_decimal_point(settings_out.distance)); + appcfg->set("arrange", rot_key, settings_out.enable_rotation ? "1" : "0"); + appcfg->set("arrange", align_to_y_axis_key, settings_out.align_to_y_axis ? "1" : "0"); settings_changed = true; } ImGui::PopStyleVar(1); diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index fe99626e57..303a2d04b4 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -472,7 +472,7 @@ public: struct ArrangeSettings { - float distance = 5.; + float distance = 0.f; // float distance_sla = 6.; float accuracy = 0.65f; // Unused currently bool enable_rotation = false; @@ -482,6 +482,7 @@ public: bool is_seq_print = false; float bed_shrink_x = 0.f; float bed_shrink_y = 0.f; + bool align_to_y_axis = false; }; struct OrientSettings @@ -624,7 +625,6 @@ private: return *ptr; } - ArrangeSettings &get_arrange_settings() { return get_arrange_settings(this); } //BBS:record key botton frequency @@ -650,6 +650,7 @@ public: } void load_arrange_settings(); + ArrangeSettings& get_arrange_settings() { return get_arrange_settings(this); } class SequentialPrintClearance { diff --git a/src/slic3r/GUI/GUI.cpp b/src/slic3r/GUI/GUI.cpp index 40b4ff1235..9d4e394213 100644 --- a/src/slic3r/GUI/GUI.cpp +++ b/src/slic3r/GUI/GUI.cpp @@ -198,6 +198,10 @@ void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt config.option(opt_key)->set_at(vec_new, opt_index, 0); } break; + case coPoint:{ + config.set_key_value(opt_key, new ConfigOptionPoint(boost::any_cast(value))); + } + break; case coPoints:{ if (opt_key == "printable_area" || opt_key == "bed_exclude_area" || opt_key == "thumbnails") { config.option(opt_key)->values = boost::any_cast>(value); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 2cadbe892b..1f078392f1 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -737,7 +737,11 @@ static const FileWildcards file_wildcards_by_type[FT_SIZE] = { /* FT_AMF */ { "AMF files"sv, { ".amf"sv, ".zip.amf"sv, ".xml"sv } }, /* FT_3MF */ { "3MF files"sv, { ".3mf"sv } }, /* FT_GCODE */ { "G-code files"sv, { ".gcode"sv, ".3mf"sv } }, +#ifdef __APPLE__ + /* FT_MODEL */ { "Supported files"sv, { ".3mf"sv, ".stl"sv, ".stp"sv, ".step"sv, ".svg"sv, ".amf"sv, ".obj"sv , ".usd"sv, ".usda"sv, ".usdc"sv, ".usdz"sv, ".abc"sv, ".ply"sv} }, +#else /* FT_MODEL */ {"Supported files"sv, {".3mf"sv, ".stl"sv, ".stp"sv, ".step"sv, ".svg"sv, ".amf"sv, ".obj"sv }}, +#endif /* FT_PROJECT */ { "Project files"sv, { ".3mf"sv} }, /* FT_GALLERY */ { "Known files"sv, { ".stl"sv, ".obj"sv } }, @@ -3001,7 +3005,7 @@ bool GUI_App::has_model_mall() { if (auto cc = app_config->get_country_code(); cc == "CN" || cc == "") return false; - return false; + return true; } void GUI_App::update_label_colours() @@ -3625,7 +3629,11 @@ void GUI_App::import_model(wxWindow *parent, wxArrayString& input_files) const { input_files.Clear(); wxFileDialog dialog(parent ? parent : GetTopWindow(), +#ifdef __APPLE__ + _L("Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):"), +#else _L("Choose one or more files (3mf/step/stl/svg/obj/amf):"), +#endif from_u8(app_config->get_last_dir()), "", file_wildcards(FT_MODEL), wxFD_OPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST); diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 6e24605922..44411b361c 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -229,7 +229,7 @@ private: #endif //import model from mall - std::string m_download_file_url; + wxString m_download_file_url; //#ifdef _WIN32 wxColour m_color_label_modified; @@ -627,6 +627,7 @@ private: bool check_networking_version(); void cancel_networking_install(); void restart_networking(); + void check_config_updates_from_updater() { check_updates(false); } private: int updating_bambu_networking(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp index c851535d61..ba97805013 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp @@ -1710,7 +1710,8 @@ bool GLGizmoAdvancedCut::render_combo(const std::string &label, const std::vecto size_t selection_out = selection_idx; - if (ImGui::BBLBeginCombo(("##" + label).c_str(), lines[selection_idx].c_str(), 0)) { + const char* selected_str = (selection_idx >= 0 && selection_idx < int(lines.size())) ? lines[selection_idx].c_str() : ""; + if (ImGui::BBLBeginCombo(("##" + label).c_str(), selected_str, 0)) { for (size_t line_idx = 0; line_idx < lines.size(); ++line_idx) { ImGui::PushID(int(line_idx)); if (ImGui::Selectable("", line_idx == selection_idx)) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index 907848e50a..553b477b32 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -1002,8 +1002,9 @@ bool GLGizmoText::update_text_positions(const std::vector& texts) Vec3d temp_position = m_mouse_position_world; Vec3d temp_normal = m_mouse_normal_world; - Vec3d cut_plane = Vec3d::UnitY(); - if (temp_normal != Vec3d::UnitZ()) { + Vec3d cut_plane = Vec3d::UnitY(); + double epson = 1e-6; + if (!(abs(temp_normal.x()) <= epson && abs(temp_normal.y()) <= epson && abs(temp_normal.z()) > epson)) { // temp_normal != Vec3d::UnitZ() Vec3d v_plane = temp_normal.cross(Vec3d::UnitZ()); cut_plane = v_plane.cross(temp_normal); } @@ -1092,6 +1093,9 @@ bool GLGizmoText::update_text_positions(const std::vector& texts) MeshSlicingParams slicing_params; slicing_params.trafo = transfo * mi->get_transformation().get_matrix() /** volume->get_transformation().get_matrix()*/; + // for debug + // its_write_obj(slice_meshs.its, "D:/debug_files/mesh.obj"); + // generate polygons const Polygons temp_polys = slice_mesh(slice_meshs.its, click_point.z(), slicing_params); diff --git a/src/slic3r/GUI/HMS.cpp b/src/slic3r/GUI/HMS.cpp index 87c5257a97..2f24569a6d 100644 --- a/src/slic3r/GUI/HMS.cpp +++ b/src/slic3r/GUI/HMS.cpp @@ -279,9 +279,22 @@ std::string get_hms_wiki_url(std::string error_code) std::string hms_host = wxGetApp().app_config->get_hms_host(); std::string lang_code = HMSQuery::hms_language_code(); std::string url = (boost::format("https://%1%/index.php?e=%2%&s=device_hms&lang=%3%") + % hms_host + % error_code + % lang_code).str(); + + DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); + if (!dev) return url; + MachineObject* obj = dev->get_selected_machine(); + if (!obj) return url; + + if (!obj->dev_id.empty()) { + url = (boost::format("https://%1%/index.php?e=%2%&d=%3%&s=device_hms&lang=%4%") % hms_host % error_code + % obj->dev_id % lang_code).str(); + } return url; } diff --git a/src/slic3r/GUI/IMSlider.cpp b/src/slic3r/GUI/IMSlider.cpp index 428659823e..7987ea7862 100644 --- a/src/slic3r/GUI/IMSlider.cpp +++ b/src/slic3r/GUI/IMSlider.cpp @@ -101,19 +101,19 @@ static std::string short_and_splitted_time(const std::string &time) // Format the dhm time. char buffer[64]; if (days > 0) - ::sprintf(buffer, "%dd%dh\n%dm", days, hours, minutes); + ::sprintf(buffer, "%dd%dh%dm", days, hours, minutes); else if (hours > 0) { if (hours < 10 && minutes < 10 && seconds < 10) ::sprintf(buffer, "%dh%dm%ds", hours, minutes, seconds); else if (hours > 10 && minutes > 10 && seconds > 10) - ::sprintf(buffer, "%dh\n%dm\n%ds", hours, minutes, seconds); + ::sprintf(buffer, "%dh%dm%ds", hours, minutes, seconds); else if ((minutes < 10 && seconds > 10) || (minutes > 10 && seconds < 10)) - ::sprintf(buffer, "%dh\n%dm%ds", hours, minutes, seconds); + ::sprintf(buffer, "%dh%dm%ds", hours, minutes, seconds); else - ::sprintf(buffer, "%dh%dm\n%ds", hours, minutes, seconds); + ::sprintf(buffer, "%dh%dm%ds", hours, minutes, seconds); } else if (minutes > 0) { if (minutes > 10 && seconds > 10) - ::sprintf(buffer, "%dm\n%ds", minutes, seconds); + ::sprintf(buffer, "%dm%ds", minutes, seconds); else ::sprintf(buffer, "%dm%ds", minutes, seconds); } else @@ -234,7 +234,7 @@ void IMSlider::SetTicksValues(const Info &custom_gcode_per_print_z) m_ticks.ticks.clear(); const std::vector &heights = custom_gcode_per_print_z.gcodes; for (auto h : heights) { - int tick = get_tick_from_value(h.print_z); + int tick = get_tick_from_value(h.print_z, true); if (tick >= 0) m_ticks.ticks.emplace(TickCode{tick, h.type, h.extruder, h.color, h.extra}); } @@ -404,8 +404,9 @@ void IMSlider::add_code_as_tick(Type type, int selected_extruder) } void IMSlider::delete_tick(const TickCode& tick) { + Type t = tick.type; // Avoid Use-After-Free issue, which resets the tick.type to 0 m_ticks.ticks.erase(tick); - post_ticks_changed_event(tick.type); + post_ticks_changed_event(t); } bool IMSlider::check_ticks_changed_event(Type type) @@ -662,10 +663,8 @@ void IMSlider::draw_ticks(const ImRect& slideable_region) { ImGui::RenderFrame(right_hover_box.Min, right_hover_box.Max, tick_hover_box_clr, false); show_tooltip(*tick_it); - if (context.IO.MouseClicked[0]) { - m_tick_value = tick_it->tick; - m_tick_rect = ImVec4(tick_hover_box.Min.x, tick_hover_box.Min.y, tick_hover_box.Max.x, tick_hover_box.Max.y); - } + m_tick_value = tick_it->tick; + m_tick_rect = ImVec4(tick_hover_box.Min.x, tick_hover_box.Min.y, tick_hover_box.Max.x, tick_hover_box.Max.y); } ++tick_it; } @@ -725,27 +724,78 @@ void IMSlider::show_tooltip(const std::string tooltip) { } void IMSlider::show_tooltip(const TickCode& tick){ + // Use previous layer's complete time as current layer's tick time, + // since ticks are added at the beginning of current layer + std::string time_str = ""; + // TODO: support first layer + if (tick.tick > 0) { + time_str = get_label(tick.tick - 1, ltEstimatedTime); + } + if (!time_str.empty()) { + time_str += "\n"; + } + switch (tick.type) { case CustomGCode::ColorChange: break; case CustomGCode::PausePrint: - show_tooltip(_u8L("Pause:") + " \"" + gcode(PausePrint) + "\""); + show_tooltip(time_str + _u8L("Pause:") + " \"" + gcode(PausePrint) + "\""); break; case CustomGCode::ToolChange: - show_tooltip(_u8L("Change Filament")); + show_tooltip(time_str + _u8L("Change Filament")); break; case CustomGCode::Template: - show_tooltip(_u8L("Custom Template:") + " \"" + gcode(Template) + "\""); + show_tooltip(time_str + _u8L("Custom Template:") + " \"" + gcode(Template) + "\""); break; case CustomGCode::Custom: - show_tooltip(_u8L("Custom G-code:") + " \"" + tick.extra + "\""); + show_tooltip(time_str + _u8L("Custom G-code:") + " \"" + tick.extra + "\""); break; default: break; } } +int IMSlider::get_tick_near_point(int v_min, int v_max, const ImVec2& pt, const ImRect& rect) { + ImS32 v_range = (v_min < v_max ? v_max - v_min : v_min - v_max); + + const ImGuiAxis axis = is_horizontal() ? ImGuiAxis_X : ImGuiAxis_Y; + const float region_usable_sz = (rect.Max[axis] - rect.Min[axis]); + const float region_usable_pos_min = rect.Min[axis]; + + const float abs_pos = pt[axis]; + + float pos_ratio = (region_usable_sz > 0.0f) ? ImClamp((abs_pos - region_usable_pos_min) / region_usable_sz, 0.0f, 1.0f) : 0.0f; + if (axis == ImGuiAxis_Y) + pos_ratio = 1.0f - pos_ratio; + + return v_min + (ImS32)(v_range * pos_ratio + 0.5f); +} + +void IMSlider::draw_tick_on_mouse_position(const ImRect& slideable_region) { + int v_min = GetMinValue(); + int v_max = GetMaxValue(); + ImGuiContext& context = *GImGui; + + int tick = get_tick_near_point(v_min, v_max, context.IO.MousePos, slideable_region); + + //draw tick + ImVec2 tick_offset = ImVec2(22.0f, 14.0f) * m_scale; + float tick_width = 1.0f * m_scale; + + const ImU32 tick_clr = IM_COL32(144, 144, 144, 255); + + float tick_pos = get_pos_from_value(v_min, v_max, tick, slideable_region); + ImRect tick_left = ImRect(slideable_region.GetCenter().x - tick_offset.x, tick_pos - tick_width, slideable_region.GetCenter().x - tick_offset.y, tick_pos); + ImRect tick_right = ImRect(slideable_region.GetCenter().x + tick_offset.y, tick_pos - tick_width, slideable_region.GetCenter().x + tick_offset.x, tick_pos); + ImGui::RenderFrame(tick_left.Min, tick_left.Max, tick_clr, false); + ImGui::RenderFrame(tick_right.Min, tick_right.Max, tick_clr, false); + + // draw layer time + std::string label = get_label(tick, ltEstimatedTime); + show_tooltip(label); +} + bool IMSlider::vertical_slider(const char* str_id, int* higher_value, int* lower_value, std::string& higher_label, std::string& lower_label,int v_min, int v_max, const ImVec2& size, SelectedSlider& selection, bool one_layer_flag, float scale) { ImGuiWindow* window = ImGui::GetCurrentWindow(); @@ -914,6 +964,11 @@ bool IMSlider::vertical_slider(const char* str_id, int* higher_value, int* lower pos_3 = pos_1 + triangle_offsets[2]; window->DrawList->AddTriangleFilled(pos_1, pos_2, pos_3, white_bg); ImGui::RenderText(text_start + text_padding, lower_label.c_str()); + + // draw mouse position + if (hovered) { + draw_tick_on_mouse_position(h_selected ? higher_slideable_region : lower_slideable_region); + } } if (one_layer_flag) { @@ -953,6 +1008,11 @@ bool IMSlider::vertical_slider(const char* str_id, int* higher_value, int* lower ImRect text_rect = ImRect(text_start, text_start + text_size); ImGui::RenderFrame(text_rect.Min, text_rect.Max, white_bg, false, text_frame_rounding); ImGui::RenderText(text_start + text_padding, higher_label.c_str()); + + // draw mouse position + if (hovered) { + draw_tick_on_mouse_position(one_slideable_region); + } } return value_changed; diff --git a/src/slic3r/GUI/IMSlider.hpp b/src/slic3r/GUI/IMSlider.hpp index a2fe6c0798..56f359793a 100644 --- a/src/slic3r/GUI/IMSlider.hpp +++ b/src/slic3r/GUI/IMSlider.hpp @@ -146,6 +146,7 @@ protected: void draw_background_and_groove(const ImRect& bg_rect, const ImRect& groove); void draw_colored_band(const ImRect& groove, const ImRect& slideable_region); void draw_ticks(const ImRect& slideable_region); + void draw_tick_on_mouse_position(const ImRect& slideable_region); void show_tooltip(const TickCode& tick); //menu void show_tooltip(const std::string tooltip); //menu bool vertical_slider(const char* str_id, int* higher_value, int* lower_value, @@ -159,6 +160,7 @@ private: double get_double_value(const SelectedSlider& selection); int get_tick_from_value(double value, bool force_lower_bound = false); float get_pos_from_value(int v_min, int v_max, int value, const ImRect& rect); + int get_tick_near_point(int v_min, int v_max, const ImVec2& pt, const ImRect& rect); std::string get_color_for_tool_change_tick(std::set::const_iterator it) const; // Get active extruders for tick. diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index d3cce20bfe..745754d7bd 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -257,7 +257,12 @@ void ArrangeJob::prepare_wipe_tower() // if wipe tower is explicitly disabled, no need to estimate DynamicPrintConfig ¤t_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; auto op = current_config.option("enable_prime_tower"); - if (op && op->getBool() == false || params.is_seq_print) return; + bool enable_prime_tower = op && op->getBool(); + if (!enable_prime_tower || params.is_seq_print) return; + bool smooth_timelapse = false; + auto sop = current_config.option("timelapse_type"); + if (sop) { smooth_timelapse = sop->getInt() == TimelapseType::tlSmooth; } + if (smooth_timelapse) { need_wipe_tower = true; } // estimate if we need wipe tower for all plates: // need wipe tower if some object has multiple extruders (has paint-on colors or support material) @@ -270,7 +275,7 @@ void ArrangeJob::prepare_wipe_tower() break; } } - + // if multile extruders have same bed temp, we need wipe tower // 允许不同材料落在相同盘,且所有选定对象中使用了多种热床温度相同的材料 if (params.allow_multi_materials_on_same_plate) { @@ -287,35 +292,24 @@ void ArrangeJob::prepare_wipe_tower() } BOOST_LOG_TRIVIAL(info) << "arrange: need_wipe_tower=" << need_wipe_tower; - if (need_wipe_tower) { - // check all plates to see if wipe tower is already there - ArrangePolygon wipe_tower_ap; - std::vector plates_have_wipe_tower(MAX_NUM_PLATES, false); - for (int bedid = 0; bedid < MAX_NUM_PLATES; bedid++) - if (auto wti = get_wipe_tower(*m_plater, bedid)) { - ArrangePolygon &&ap = get_wipetower_arrange_poly(&wti); - wipe_tower_ap = ap; - ap.bed_idx = bedid; - m_unselected.emplace_back(std::move(ap)); - plates_have_wipe_tower[bedid] = true; - } - // if wipe tower is not init yet (no wipe tower in any plate before arrangement) - //if (wipe_tower_ap.poly.empty()) { - // auto &print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); - // wipe_tower_ap.poly.contour.points = print.first_layer_wipe_tower_corners(false); - wipe_tower_ap.name = "WipeTower"; - wipe_tower_ap.is_virt_object = true; - wipe_tower_ap.is_wipe_tower = true; - //} - const GLCanvas3D* canvas3D=static_cast(m_plater->canvas3D()); - for (int bedid = 0; bedid < MAX_NUM_PLATES; bedid++) { - if (!plates_have_wipe_tower[bedid]) { - wipe_tower_ap.translation = {0, 0}; - wipe_tower_ap.poly.contour.points = canvas3D->estimate_wipe_tower_points(bedid, !only_on_partplate); - wipe_tower_ap.bed_idx = bedid; - m_unselected.emplace_back(wipe_tower_ap); - } + // check all plates to see if wipe tower is already there + ArrangePolygon wipe_tower_ap; + wipe_tower_ap.name = "WipeTower"; + wipe_tower_ap.is_virt_object = true; + wipe_tower_ap.is_wipe_tower = true; + const GLCanvas3D *canvas3D = static_cast(m_plater->canvas3D()); + for (int bedid = 0; bedid < MAX_NUM_PLATES; bedid++) { + if (auto wti = get_wipe_tower(*m_plater, bedid)) { + // wipe tower is already there + wipe_tower_ap = get_wipetower_arrange_poly(&wti); + wipe_tower_ap.bed_idx = bedid; + m_unselected.emplace_back(wipe_tower_ap); + } else if (need_wipe_tower) { + wipe_tower_ap.translation = {0, 0}; + wipe_tower_ap.poly.contour.points = canvas3D->estimate_wipe_tower_points(bedid, !only_on_partplate); + wipe_tower_ap.bed_idx = bedid; + m_unselected.emplace_back(wipe_tower_ap); } } } @@ -395,8 +389,13 @@ void ArrangeJob::prepare() params = init_arrange_params(m_plater); //BBS update extruder params and speed table before arranging - Plater::setExtruderParams(Model::extruderParamsMap); - Plater::setPrintSpeedTable(Model::printSpeedMap); + const Slic3r::DynamicPrintConfig& config = wxGetApp().preset_bundle->full_config(); + auto& print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); + auto print_config = print.config(); + int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); + + Model::setExtruderParams(config, numExtruders); + Model::setPrintSpeedTable(config, print_config); int state = m_plater->get_prepare_state(); if (state == Job::JobPrepareState::PREPARE_STATE_DEFAULT) { @@ -502,17 +501,17 @@ void ArrangeJob::process() const bool is_bbl = wxGetApp().preset_bundle->is_bbl_vendor(); if (is_bbl && params.avoid_extrusion_cali_region && global_config.opt_bool("scan_first_layer")) partplate_list.preprocess_nonprefered_areas(m_unselected, MAX_NUM_PLATES); - - update_arrange_params(params, *m_plater, m_selected); - update_selected_items_inflation(m_selected, *m_plater, params); - update_unselected_items_inflation(m_unselected, *m_plater, params); - Points bedpts = get_shrink_bedpts(*m_plater,params); + update_arrange_params(params, *m_plater, m_selected); + update_selected_items_inflation(m_selected, m_plater->config(), params); + update_unselected_items_inflation(m_unselected, m_plater->config(), params); + update_selected_items_axis_align(m_selected, m_plater->config(), params); + + Points bedpts = get_shrink_bedpts(m_plater->config(),params); double scaled_exclusion_gap = scale_(1); partplate_list.preprocess_exclude_areas(params.excluded_regions, 1, scaled_exclusion_gap); - BOOST_LOG_TRIVIAL(debug) << "arrange bed_shrink_x=" << params.bed_shrink_x - << "; bedpts:" << bedpts[0].transpose() << ", " << bedpts[1].transpose() << ", " << bedpts[2].transpose() << ", " << bedpts[3].transpose(); + BOOST_LOG_TRIVIAL(debug) << "arrange bedpts:" << bedpts[0].transpose() << ", " << bedpts[1].transpose() << ", " << bedpts[2].transpose() << ", " << bedpts[3].transpose(); params.stopcondition = [this]() { return was_canceled(); }; @@ -521,14 +520,14 @@ void ArrangeJob::process() }; { + BOOST_LOG_TRIVIAL(debug)<< "Arrange full params: "<< params.to_json(); BOOST_LOG_TRIVIAL(debug) << "items selected before arrange: "; for (auto selected : m_selected) BOOST_LOG_TRIVIAL(debug) << selected.name << ", extruder: " << selected.extrude_ids.back() << ", bed: " << selected.bed_idx << ", bed_temp: " << selected.first_bed_temp << ", print_temp: " << selected.print_temp; BOOST_LOG_TRIVIAL(debug) << "items unselected before arrange: "; for (auto item : m_unselected) - if (!item.is_virt_object) - BOOST_LOG_TRIVIAL(debug) << item.name << ", extruder: " << item.extrude_ids.back() << ", bed: " << item.bed_idx << ", trans: " << item.translation.transpose(); + BOOST_LOG_TRIVIAL(debug) << item.name << ", bed: " << item.bed_idx << ", trans: " << item.translation.transpose(); } arrangement::arrange(m_selected, m_unselected, bedpts, params); @@ -543,9 +542,7 @@ void ArrangeJob::process() << ", trans: " << unscale(selected.translation(X)) << ","<< unscale(selected.translation(Y)); BOOST_LOG_TRIVIAL(debug) << "items unselected after arrange: "; for (auto item : m_unselected) - if (!item.is_virt_object) - BOOST_LOG_TRIVIAL(debug) << item.name << ", extruder: " << item.extrude_ids.back() << ", bed: " << item.bed_idx - << ", trans: " << item.translation.transpose(); + BOOST_LOG_TRIVIAL(debug) << item.name << ", bed: " << item.bed_idx << ", trans: " << item.translation.transpose(); } arrangement::arrange(m_unprintable, {}, bedpts, params); @@ -735,18 +732,22 @@ arrangement::ArrangeParams init_arrange_params(Plater *p) arrangement::ArrangeParams params; const GLCanvas3D::ArrangeSettings &settings = static_cast(p->canvas3D())->get_arrange_settings(); auto & print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); + const PrintConfig& print_config = print.config(); + params.clearance_height_to_rod = print.config().extruder_clearance_height_to_rod.value; params.clearance_height_to_lid = print.config().extruder_clearance_height_to_lid.value; params.cleareance_radius = print.config().extruder_clearance_radius.value; params.printable_height = print.config().printable_height.value; params.allow_rotations = settings.enable_rotation; + params.align_center = print_config.best_object_pos.value; params.allow_multi_materials_on_same_plate = settings.allow_multi_materials_on_same_plate; params.avoid_extrusion_cali_region = settings.avoid_extrusion_cali_region; params.is_seq_print = settings.is_seq_print; params.min_obj_distance = scaled(settings.distance); params.bed_shrink_x = settings.bed_shrink_x; params.bed_shrink_y = settings.bed_shrink_y; + params.align_to_y_axis = settings.align_to_y_axis; int state = p->get_prepare_state(); if (state == Job::JobPrepareState::PREPARE_STATE_MENU) { @@ -760,17 +761,15 @@ arrangement::ArrangeParams init_arrange_params(Plater *p) return params; } -//after get selected.call this to update bed_shrink +//after get selected call this to update bed_shrink void update_arrange_params(arrangement::ArrangeParams ¶ms, const Plater &p, const arrangement::ArrangePolygons &selected) { const GLCanvas3D::ArrangeSettings &settings = static_cast(p.canvas3D())->get_arrange_settings(); auto & print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); double skirt_distance = print.has_skirt() ? print.config().skirt_distance.value : 0; - double brim_max = 0; - std::for_each(selected.begin(), selected.end(), [&](const ArrangePolygon &ap) { brim_max = std::max(brim_max, ap.brim_width); }); // Note: skirt_distance is now defined between outermost brim and skirt, not the object and skirt. // So we can't do max but do adding instead. - params.brim_skirt_distance = skirt_distance + brim_max; + params.brim_skirt_distance = skirt_distance; params.bed_shrink_x = settings.bed_shrink_x + params.brim_skirt_distance; params.bed_shrink_y = settings.bed_shrink_y + params.brim_skirt_distance; // for sequential print, we need to inflate the bed because cleareance_radius is so large @@ -781,55 +780,4 @@ void update_arrange_params(arrangement::ArrangeParams ¶ms, const Plater &p, } } -//it will bed accurate after call update_params -Points get_shrink_bedpts(const Plater &plater, const arrangement::ArrangeParams ¶ms) -{ - Points bedpts = get_bed_shape(*plater.config()); - // shrink bed by moving to center by dist - auto shrinkFun = [](Points &bedpts, double dist, int direction) { -#define SGN(x) ((x) >= 0 ? 1 : -1) - Point center = Polygon(bedpts).bounding_box().center(); - for (auto &pt : bedpts) pt[direction] += dist * SGN(center[direction] - pt[direction]); - }; - shrinkFun(bedpts, scaled(params.bed_shrink_x), 0); - shrinkFun(bedpts, scaled(params.bed_shrink_y), 1); - return bedpts; -} - -void update_selected_items_inflation(arrangement::ArrangePolygons &selected, const Plater &p, const arrangement::ArrangeParams ¶ms) { - // do not inflate brim_width. Objects are allowed to have overlapped brim. - Points bedpts = get_shrink_bedpts(p, params); - BoundingBox bedbb = Polygon(bedpts).bounding_box(); - std::for_each(selected.begin(), selected.end(), [&](ArrangePolygon &ap) { - ap.inflation = std::max(scaled(ap.brim_width), params.min_obj_distance / 2); - BoundingBox apbb = ap.poly.contour.bounding_box(); - auto diffx = bedbb.size().x() - apbb.size().x() - 5; - auto diffy = bedbb.size().y() - apbb.size().y() - 5; - if (diffx > 0 && diffy > 0) { - auto min_diff = std::min(diffx, diffy); - ap.inflation = std::min(min_diff / 2, ap.inflation); - } - }); -} - -void update_unselected_items_inflation(arrangement::ArrangePolygons &unselected, const Plater &p, const arrangement::ArrangeParams ¶ms) -{ - if (params.is_seq_print) { - float shift_dist = params.cleareance_radius / 2 - 5; - // dont forget to move the excluded region - for (auto ®ion : unselected) { - if (region.is_virt_object) region.poly.translate(-scaled(shift_dist), -scaled(shift_dist)); - } - } - // For occulusion regions, inflation should be larger to prevent genrating brim on them. - // However, extrusion cali regions are exceptional, since we can allow brim overlaps them. - // 屏蔽区域只需要膨胀brim宽度,防止brim长过去;挤出标定区域不需要膨胀,brim可以长过去。 - // 以前我们认为还需要膨胀clearance_radius/2,这其实是不需要的,因为这些区域并不会真的摆放物体, - // 其他物体的膨胀轮廓是可以跟它们重叠的。 - double scaled_exclusion_gap = scale_(1); - std::for_each(unselected.begin(), unselected.end(), - [&](auto &ap) { ap.inflation = !ap.is_virt_object ? std::max(scaled(ap.brim_width), params.min_obj_distance / 2) - : (ap.is_extrusion_cali_object ? 0 : scaled_exclusion_gap); }); -} - }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.hpp b/src/slic3r/GUI/Jobs/ArrangeJob.hpp index e4ec09b5ed..d51822296c 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.hpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.hpp @@ -80,14 +80,8 @@ arrangement::ArrangeParams get_arrange_params(Plater *p); arrangement::ArrangeParams init_arrange_params(Plater *p); -Points get_shrink_bedpts(const Plater& plater,const arrangement::ArrangeParams& params); - void update_arrange_params(arrangement::ArrangeParams ¶ms, const Plater &p, const arrangement::ArrangePolygons &selected); -void update_selected_items_inflation(arrangement::ArrangePolygons &selected, const Plater &p, const arrangement::ArrangeParams ¶ms); - -void update_unselected_items_inflation(arrangement::ArrangePolygons &unselected, const Plater &p, const arrangement::ArrangeParams ¶ms); - }} // namespace Slic3r::GUI #endif // ARRANGEJOB_HPP diff --git a/src/slic3r/GUI/Jobs/FillBedJob.cpp b/src/slic3r/GUI/Jobs/FillBedJob.cpp index c767373c9e..f96646096d 100644 --- a/src/slic3r/GUI/Jobs/FillBedJob.cpp +++ b/src/slic3r/GUI/Jobs/FillBedJob.cpp @@ -206,7 +206,7 @@ void FillBedJob::process() static_cast(m_plater->canvas3D())->get_arrange_settings(); update_arrange_params(params, *m_plater, m_selected); - m_bedpts = get_shrink_bedpts(*m_plater, params); + m_bedpts = get_shrink_bedpts(m_plater->config(), params); auto &partplate_list = m_plater->get_partplate_list(); auto &print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); @@ -216,8 +216,8 @@ void FillBedJob::process() if (is_bbl && params.avoid_extrusion_cali_region && global_config.opt_bool("scan_first_layer")) partplate_list.preprocess_nonprefered_areas(m_unselected, MAX_NUM_PLATES); - update_selected_items_inflation(m_selected, *m_plater, params); - update_unselected_items_inflation(m_unselected, *m_plater, params); + update_selected_items_inflation(m_selected, m_plater->config(), params); + update_unselected_items_inflation(m_unselected, m_plater->config(), params); bool do_stop = false; params.stopcondition = [this, &do_stop]() { diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index 5760bf7242..7da188fc10 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -31,7 +31,8 @@ static wxString sending_over_cloud_str = _L("Sending print job through clou PrintJob::PrintJob(std::shared_ptr pri, Plater* plater, std::string dev_id) : PlaterJob{ std::move(pri), plater }, - m_dev_id(dev_id) + m_dev_id(dev_id), + m_is_calibration_task(false) { m_print_job_completed_id = plater->get_print_finished_event(); } @@ -208,7 +209,7 @@ void PrintJob::process() params.filename = job_data._temp_path.string(); params.connection_type = this->connection_type; - result = m_agent->start_send_gcode_to_sdcard(params, nullptr, nullptr); + result = m_agent->start_send_gcode_to_sdcard(params, nullptr, nullptr, nullptr); if (result != 0) { BOOST_LOG_TRIVIAL(error) << "access code is invalid"; m_enter_ip_address_fun_fail(); @@ -280,6 +281,11 @@ void PrintJob::process() if (params.preset_name.empty() && m_print_type == "from_normal") { params.preset_name = wxString::Format("%s_plate_%d", m_project_name, curr_plate_idx).ToStdString(); } if (params.project_name.empty()) {params.project_name = m_project_name;} + if (m_is_calibration_task) { + params.project_name = m_project_name; + params.origin_model_id = ""; + } + wxString error_text; wxString msg_text; @@ -385,6 +391,12 @@ void PrintJob::process() return was_canceled(); }; + auto wait_fn = [this](int state, std::string job_info) { + // TODO + return true; + }; + + if (params.connection_type != "lan") { if (params.dev_ip.empty()) params.comments = "no_ip"; @@ -407,7 +419,7 @@ void PrintJob::process() BOOST_LOG_TRIVIAL(info) << "print_job: use ftp send print only"; this->update_status(curr_percent, _L("Sending print job over LAN")); is_try_lan_mode = true; - result = m_agent->start_local_print_with_record(params, update_fn, cancel_fn); + result = m_agent->start_local_print_with_record(params, update_fn, cancel_fn, wait_fn); if (result < 0) { error_text = wxString::Format("Access code:%s Ip address:%s", params.password, params.dev_ip); // try to send with cloud @@ -423,7 +435,7 @@ void PrintJob::process() // try to send local with record BOOST_LOG_TRIVIAL(info) << "print_job: try to start local print with record"; this->update_status(curr_percent, _L("Sending print job over LAN")); - result = m_agent->start_local_print_with_record(params, update_fn, cancel_fn); + result = m_agent->start_local_print_with_record(params, update_fn, cancel_fn, wait_fn); if (result == 0) { params.comments = ""; } @@ -438,13 +450,13 @@ void PrintJob::process() // try to send with cloud BOOST_LOG_TRIVIAL(warning) << "print_job: try to send with cloud"; this->update_status(curr_percent, _L("Sending print job through cloud service")); - result = m_agent->start_print(params, update_fn, cancel_fn); + result = m_agent->start_print(params, update_fn, cancel_fn, wait_fn); } } else { BOOST_LOG_TRIVIAL(info) << "print_job: send with cloud"; this->update_status(curr_percent, _L("Sending print job through cloud service")); - result = m_agent->start_print(params, update_fn, cancel_fn); + result = m_agent->start_print(params, update_fn, cancel_fn, wait_fn); } } } else { @@ -483,6 +495,8 @@ void PrintJob::process() BOOST_LOG_TRIVIAL(error) << "print_job: failed, result = " << result; } else { + // wait for printer mqtt ready the same job id + wxGetApp().plater()->record_slice_preset("print"); BOOST_LOG_TRIVIAL(error) << "print_job: send ok."; @@ -534,5 +548,9 @@ void PrintJob::connect_to_local_mqtt() this->update_status(0, wxEmptyString); } +void PrintJob::set_calibration_task(bool is_calibration) +{ + m_is_calibration_task = is_calibration; +} }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Jobs/PrintJob.hpp b/src/slic3r/GUI/Jobs/PrintJob.hpp index 97616f4af7..8fa902f7db 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.hpp +++ b/src/slic3r/GUI/Jobs/PrintJob.hpp @@ -63,6 +63,8 @@ public: std::string m_print_type; std::string m_dst_path; + bool m_is_calibration_task = false; + int m_print_from_sdc_plate_idx = 0; bool m_local_use_ssl_for_mqtt { true }; @@ -106,6 +108,7 @@ public: void connect_to_local_mqtt(); wxString get_http_error_msg(unsigned int status, std::string body); std::string truncate_string(const std::string& str, size_t maxLength); + void set_calibration_task(bool is_calibration); }; diff --git a/src/slic3r/GUI/Jobs/SendJob.cpp b/src/slic3r/GUI/Jobs/SendJob.cpp index 76af20cc1f..ba5dc450bb 100644 --- a/src/slic3r/GUI/Jobs/SendJob.cpp +++ b/src/slic3r/GUI/Jobs/SendJob.cpp @@ -139,7 +139,7 @@ void SendJob::process() params.filename = job_data._temp_path.string(); params.connection_type = this->connection_type; - result = m_agent->start_send_gcode_to_sdcard(params, nullptr, nullptr); + result = m_agent->start_send_gcode_to_sdcard(params, nullptr, nullptr, nullptr); if (result != 0) { BOOST_LOG_TRIVIAL(error) << "access code is invalid"; m_enter_ip_address_fun_fail(); @@ -317,7 +317,7 @@ void SendJob::process() // try to send local with record BOOST_LOG_TRIVIAL(info) << "send_job: try to send gcode to printer"; this->update_status(curr_percent, _L("Sending gcode file over LAN")); - result = m_agent->start_send_gcode_to_sdcard(params, update_fn, cancel_fn); + result = m_agent->start_send_gcode_to_sdcard(params, update_fn, cancel_fn, nullptr); if (result == BAMBU_NETWORK_ERR_FTP_UPLOAD_FAILED) { params.comments = "upload_failed"; } else { @@ -335,7 +335,7 @@ void SendJob::process() } else { if (this->has_sdcard) { this->update_status(curr_percent, _L("Sending gcode file over LAN")); - result = m_agent->start_send_gcode_to_sdcard(params, update_fn, cancel_fn); + result = m_agent->start_send_gcode_to_sdcard(params, update_fn, cancel_fn, nullptr); } else { this->update_status(curr_percent, _L("An SD card needs to be inserted before sending to printer.")); return; diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index eb63f9c6f2..0f2a9c3baa 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -179,11 +179,11 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_ set_miniaturizable(GetHandle()); #endif - //reset developer_mode to false and user_mode to comAdvanced - wxGetApp().app_config->set_bool("developer_mode", false); - if (wxGetApp().app_config->get("user_mode") == "develop") { - wxGetApp().app_config->set("user_mode", "advanced"); - } + if (!wxGetApp().app_config->has("user_mode")) { + wxGetApp().app_config->set("user_mode", "simple"); + wxGetApp().app_config->set_bool("developer_mode", false); + wxGetApp().app_config->save(); + } wxGetApp().app_config->set_bool("internal_developer_mode", false); @@ -876,23 +876,23 @@ void MainFrame::update_title() void MainFrame::show_publish_button(bool show) { - m_publish_btn->Show(show); - Layout(); + // m_publish_btn->Show(show); + // Layout(); } void MainFrame::show_calibration_button(bool show) { -#ifdef __APPLE__ - bool shown = m_menubar->FindMenu(_L("Calibration")) != wxNOT_FOUND; - if (shown == show) - ; - else if (show) - m_menubar->Insert(3, m_calib_menu, wxString::Format("&%s", _L("Calibration"))); - else - m_menubar->Remove(3); -#else - topbar()->ShowCalibrationButton(show); -#endif +// #ifdef __APPLE__ +// bool shown = m_menubar->FindMenu(_L("Calibration")) != wxNOT_FOUND; +// if (shown == show) +// ; +// else if (show) +// m_menubar->Insert(3, m_calib_menu, wxString::Format("&%s", _L("Calibration"))); +// else +// m_menubar->Remove(3); +// #else +// topbar()->ShowCalibrationButton(show); +// #endif show = !show; auto shown2 = m_tabpanel->FindPage(m_calibration) != wxNOT_FOUND; if (shown2 == show) @@ -1461,18 +1461,18 @@ wxBoxSizer* MainFrame::create_side_tools() m_slice_select = eSlicePlate; m_print_select = ePrintPlate; - m_publish_btn = new Button(this, _L("Upload"), "bar_publish", 0, FromDIP(16)); + // m_publish_btn = new Button(this, _L("Upload"), "bar_publish", 0, FromDIP(16)); m_slice_btn = new SideButton(this, _L("Slice plate"), ""); m_slice_option_btn = new SideButton(this, "", "sidebutton_dropdown", 0, FromDIP(14)); m_print_btn = new SideButton(this, _L("Print plate"), ""); m_print_option_btn = new SideButton(this, "", "sidebutton_dropdown", 0, FromDIP(14)); update_side_button_style(); - m_publish_btn->Hide(); + // m_publish_btn->Hide(); m_slice_option_btn->Enable(); m_print_option_btn->Enable(); - sizer->Add(m_publish_btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(1)); - sizer->Add(FromDIP(15), 0, 0, 0, 0); + // sizer->Add(m_publish_btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(1)); + // sizer->Add(FromDIP(15), 0, 0, 0, 0); sizer->Add(m_slice_option_btn, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(1)); sizer->Add(m_slice_btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(1)); sizer->Add(FromDIP(15), 0, 0, 0, 0); @@ -1482,25 +1482,25 @@ wxBoxSizer* MainFrame::create_side_tools() sizer->Layout(); - m_publish_btn->Bind(wxEVT_BUTTON, [this](auto& e) { - CallAfter([this] { - wxGetApp().open_publish_page_dialog(); + // m_publish_btn->Bind(wxEVT_BUTTON, [this](auto& e) { + // CallAfter([this] { + // wxGetApp().open_publish_page_dialog(); - if (!wxGetApp().getAgent()) { - BOOST_LOG_TRIVIAL(info) << "publish: no agent"; - return; - } + // if (!wxGetApp().getAgent()) { + // BOOST_LOG_TRIVIAL(info) << "publish: no agent"; + // return; + // } - // record - json j; - NetworkAgent* agent = GUI::wxGetApp().getAgent(); - }); - }); + // // record + // json j; + // NetworkAgent* agent = GUI::wxGetApp().getAgent(); + // }); + // }); m_slice_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& event) { //this->m_plater->select_view_3D("Preview"); - m_plater->update(); + m_plater->update(false, true); if (m_slice_select == eSliceAll) wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_SLICE_ALL)); else @@ -1858,12 +1858,12 @@ void MainFrame::update_side_button_style() std::pair(wxColour(0, 150, 136), StateColor::Normal) ); - m_publish_btn->SetMinSize(wxSize(FromDIP(125), FromDIP(24))); - m_publish_btn->SetCornerRadius(FromDIP(12)); - m_publish_btn->SetBackgroundColor(m_btn_bg_enable); - m_publish_btn->SetBorderColor(m_btn_bg_enable); - m_publish_btn->SetBackgroundColour(wxColour(59,68,70)); - m_publish_btn->SetTextColor(StateColor::darkModeColorFor("#FFFFFE")); + // m_publish_btn->SetMinSize(wxSize(FromDIP(125), FromDIP(24))); + // m_publish_btn->SetCornerRadius(FromDIP(12)); + // m_publish_btn->SetBackgroundColor(m_btn_bg_enable); + // m_publish_btn->SetBorderColor(m_btn_bg_enable); + // m_publish_btn->SetBackgroundColour(wxColour(59,68,70)); + // m_publish_btn->SetTextColor(StateColor::darkModeColorFor("#FFFFFE")); m_slice_btn->SetTextLayout(SideButton::EHorizontalOrientation::HO_Left, FromDIP(15)); m_slice_btn->SetCornerRadius(FromDIP(12)); diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 42b37fe53f..28ff66fd95 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -376,10 +376,10 @@ public: wxWindow* m_plater_page{ nullptr }; PrintHostQueueDialog* m_printhost_queue_dlg; - // BBS + mutable int m_print_select{ ePrintAll }; mutable int m_slice_select{ eSliceAll }; - Button* m_publish_btn{ nullptr }; + // Button* m_publish_btn{ nullptr }; SideButton* m_slice_btn{ nullptr }; SideButton* m_slice_option_btn{ nullptr }; SideButton* m_print_btn{ nullptr }; diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index df06b61682..6ab7c46d7e 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -153,7 +153,7 @@ void MediaPlayCtrl::Play() m_button_play->SetIcon("media_stop"); NetworkAgent *agent = wxGetApp().getAgent(); std::string agent_version = agent ? agent->get_version() : ""; - if (m_lan_proto > 0 && (m_lan_mode ||!m_remote_support) && !m_disable_lan && !m_lan_ip.empty()) { + if (m_lan_proto > 0 && (m_lan_mode || m_lan_proto == 1 || !m_remote_support) && !m_disable_lan && !m_lan_ip.empty()) { m_disable_lan = m_remote_support && !m_lan_mode; // try remote next time if (m_lan_proto == 1) m_url = "bambu:///local/" + m_lan_ip + ".?port=6000&user=" + m_lan_user + "&passwd=" + m_lan_passwd + "&device=" + m_machine + "&version=" + agent_version; @@ -161,7 +161,7 @@ void MediaPlayCtrl::Play() m_url = "bambu:///rtsps___" + m_lan_user + ":" + m_lan_passwd + "@" + m_lan_ip + "/streaming/live/1?device=" + m_machine + "&version=" + agent_version; else if (m_lan_proto == 3) m_url = "bambu:///rtsp___" + m_lan_user + ":" + m_lan_passwd + "@" + m_lan_ip + "/streaming/live/1?device=" + m_machine + "&version=" + agent_version; - BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl camera_url: " << m_url; + BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl: " << m_url.substr(0, 16); m_last_state = MEDIASTATE_LOADING; SetStatus(_L("Loading...")); if (wxGetApp().app_config->get("internal_developer_mode") == "true") { @@ -207,7 +207,7 @@ void MediaPlayCtrl::Play() url += "&device=" + m; url += "&version=" + v; } - BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl camera_url: " << url << ", machine: " << m_machine; + BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl: " << url.substr(0, 16) << ", machine: " << m_machine; CallAfter([this, m, url] { if (m != m_machine) { BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl drop late ttcode for machine: " << m; @@ -263,6 +263,7 @@ void MediaPlayCtrl::Stop(wxString const &msg) } + bool remote = m_url.find("/local/") == wxString::npos && m_url.find("/rtsp") == wxString::npos; if (last_state != wxMEDIASTATE_PLAYING && m_failed_code != 0 && m_last_failed_codes.find(m_failed_code) == m_last_failed_codes.end() && (m_user_triggered || m_failed_retry > 3)) { @@ -273,7 +274,6 @@ void MediaPlayCtrl::Stop(wxString const &msg) j["result"] = "failed"; j["user_triggered"] = m_user_triggered; j["failed_retry"] = m_failed_retry; - bool remote = m_url.find("/local/") == wxString::npos; j["tunnel"] = remote ? "remote" : "local"; j["code"] = m_failed_code; if (remote) @@ -285,7 +285,7 @@ void MediaPlayCtrl::Stop(wxString const &msg) m_url.clear(); ++m_failed_retry; - if (m_failed_code < 0 && last_state != wxMEDIASTATE_PLAYING && (!m_remote_support || m_lan_mode) && (m_failed_retry > 1 || m_user_triggered)) { + if (m_failed_code < 0 && last_state != wxMEDIASTATE_PLAYING && !remote && (m_failed_retry > 1 || m_user_triggered)) { m_next_retry = wxDateTime(); // stop retry if (wxGetApp().show_modal_ip_address_enter_dialog(_L("LAN Connection Failed (Failed to start liveview)"))) { m_failed_retry = 0; @@ -384,7 +384,7 @@ void MediaPlayCtrl::ToggleStream() url += "&device=" + m; url += "&version=" + v; } - BOOST_LOG_TRIVIAL(info) << "camera_url: " << url; + BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl::ToggleStream: " << url.substr(0, 16); CallAfter([this, m, url] { if (m != m_machine) return; if (url.empty() || !boost::algorithm::starts_with(url, "bambu:///")) { diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 2e5686c3ca..585d5a8322 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -1903,7 +1903,7 @@ void NotificationManager::push_slicing_error_notification(const std::string &tex push_notification_data({ NotificationType::SlicingError, NotificationLevel::ErrorNotificationLevel, 0, _u8L("Error:") + "\n" + text, link, callback }, 0); set_slicing_progress_hidden(); } -void NotificationManager::push_slicing_warning_notification(const std::string& text, bool gray, ModelObject const * obj, ObjectID oid, int warning_step, int warning_msg_id) +void NotificationManager::push_slicing_warning_notification(const std::string& text, bool gray, ModelObject const * obj, ObjectID oid, int warning_step, int warning_msg_id, NotificationLevel level/* = NotificationLevel::WarningNotificationLevel*/) { auto callback = obj ? [id = obj->id()](wxEvtHandler *) { auto & objects = wxGetApp().model().objects; @@ -1916,7 +1916,7 @@ void NotificationManager::push_slicing_warning_notification(const std::string& t } : std::function(); auto link = callback ? _u8L("Jump to") : ""; if (obj) link += std::string(" [") + obj->name + "]"; - NotificationData data { NotificationType::SlicingWarning, NotificationLevel::WarningNotificationLevel, 0, _u8L("Warning:") + "\n" + text, link, callback }; + NotificationData data { NotificationType::SlicingWarning, level, 0, _u8L("Warning:") + "\n" + text, link, callback }; data.sub_msg_id = warning_msg_id; data.ori_text = text; @@ -2072,6 +2072,14 @@ void NotificationManager::push_exporting_finished_notification(const std::string set_slicing_progress_hidden(); } +void NotificationManager::push_import_finished_notification(const std::string& path, const std::string& dir_path, bool on_removable) +{ + close_notification_of_type(NotificationType::ExportFinished); + NotificationData data{ NotificationType::ExportFinished, NotificationLevel::RegularNotificationLevel, on_removable ? 0 : 20, _u8L("Model file downloaded.") + "\n" + path }; + push_notification_data(std::make_unique(data, m_id_provider, m_evt_handler, on_removable, path, dir_path), 0); + set_slicing_progress_hidden(); +} + void NotificationManager::push_upload_job_notification(int id, float filesize, const std::string& filename, const std::string& host, float percentage) { // find if upload with same id was not already in notification diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 7127ce30e1..021f0446f8 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -200,7 +200,7 @@ public: // Creates Slicing Error notification with a custom text and no fade out. void push_slicing_error_notification(const std::string &text, std::vector objs); // Creates Slicing Warning notification with a custom text and no fade out. - void push_slicing_warning_notification(const std::string &text, bool gray, ModelObject const *obj, ObjectID oid, int warning_step, int warning_msg_id); + void push_slicing_warning_notification(const std::string &text, bool gray, ModelObject const *obj, ObjectID oid, int warning_step, int warning_msg_id, NotificationLevel level = NotificationLevel::WarningNotificationLevel); // marks slicing errors as gray void set_all_slicing_errors_gray(bool g); // marks slicing warings as gray @@ -236,6 +236,7 @@ public: void set_sla(bool b) { set_fff(!b); } // Exporting finished, show this information with path, button to open containing folder and if ejectable - eject button void push_exporting_finished_notification(const std::string& path, const std::string& dir_path, bool on_removable); + void push_import_finished_notification(const std::string& path, const std::string& dir_path, bool on_removable); // notifications with progress bar // slicing progress void init_slicing_progress_notification(std::function cancel_callback); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index c1f352a8e1..e49d64d485 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -78,6 +78,7 @@ const t_field& OptionsGroup::build_field(const t_config_option_key& id, const Co case coEnums: m_fields.emplace(id, Choice::Create(this->ctrl_parent(), opt, id)); break; + case coPoint: case coPoints: m_fields.emplace(id, PointCtrl::Create(this->ctrl_parent(), opt, id)); break; @@ -1033,6 +1034,9 @@ boost::any ConfigOptionsGroup::get_config_value(const DynamicPrintConfig& config case coEnums: ret = config.opt_int(opt_key, idx); break; + case coPoint: + ret = config.option(opt_key)->value; + break; case coPoints: if (opt_key == "printable_area") ret = config.option(opt_key)->values; @@ -1145,6 +1149,9 @@ boost::any ConfigOptionsGroup::get_config_value2(const DynamicPrintConfig& confi case coEnums: ret = config.opt_int(opt_key, idx); break; + case coPoint: + ret = config.option(opt_key)->value; + break; case coPoints: if (opt_key == "printable_area") ret = config.option(opt_key)->values; diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 5684c24822..4eece122d0 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -2106,7 +2106,7 @@ void PartPlate::duplicate_all_instance(unsigned int dup_count, bool need_skip, s ModelObject* newObj = m_model->add_object(*object); newObj->name = object->name +"_"+ std::to_string(index+1); int new_obj_id = m_model->objects.size() - 1; - for ( size_t new_instance_id = 0; new_instance_id < object->instances.size(); new_instance_id++ ) + for ( size_t new_instance_id = 0; new_instance_id < newObj->instances.size(); new_instance_id++ ) { obj_to_instance_set.emplace(std::pair(new_obj_id, new_instance_id)); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": duplicate object into plate: index_pair [%1%,%2%], obj_id %3%") % new_obj_id % new_instance_id % newObj->id().id; @@ -2115,6 +2115,31 @@ void PartPlate::duplicate_all_instance(unsigned int dup_count, bool need_skip, s } } + for (std::set>::iterator it = obj_to_instance_set.begin(); it != obj_to_instance_set.end(); ++it) + { + int obj_id = it->first; + int instance_id = it->second; + + if ((obj_id >= 0) && (obj_id < m_model->objects.size())) + { + ModelObject* object = m_model->objects[obj_id]; + ModelInstance* instance = object->instances[instance_id]; + + if (instance->printable) + { + instance->loaded_id = instance->id().id; + if (need_skip) { + while (skip_objects.find(instance->loaded_id) != skip_objects.end()) + { + instance->loaded_id ++; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": duplicated id %1% with skip, try new one %2%") %instance->id().id % instance->loaded_id; + } + } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": set obj %1% instance %2%'s loaded_id to its id %3%, name %4%") % obj_id %instance_id %instance->loaded_id % object->name; + } + } + } + return; } @@ -4518,7 +4543,7 @@ bool PartPlateList::set_shapes(const Pointfs& shape, const Pointfs& exclude_area pos = compute_shape_position(i, m_plate_cols); plate->set_shape(shape, exclude_areas, pos, height_to_lid, height_to_rod); } - + is_load_bedtype_textures = false;//reload textures calc_bounding_boxes(); auto check_texture = [](const std::string& texture) { @@ -4851,6 +4876,8 @@ int PartPlateList::store_to_3mf_structure(PlateDataPtrs& plate_data_list, bool w plate_data_item->gcode_prediction = std::to_string( (int) m_plate_list[i]->get_slice_result()->print_statistics.modes[static_cast(PrintEstimatedStatistics::ETimeMode::Normal)].time); plate_data_item->toolpath_outside = m_plate_list[i]->m_gcode_result->toolpath_outside; + plate_data_item->timelapse_warning_code = m_plate_list[i]->m_gcode_result->timelapse_warning_code; + m_plate_list[i]->set_timelapse_warning_code(plate_data_item->timelapse_warning_code); plate_data_item->is_label_object_enabled = m_plate_list[i]->m_gcode_result->label_object_enabled; Print *print = nullptr; m_plate_list[i]->get_print((PrintBase **) &print, nullptr, nullptr); @@ -4923,6 +4950,8 @@ int PartPlateList::load_from_3mf_structure(PlateDataPtrs& plate_data_list) ps.total_used_filament *= 1000; //koef gcode_result->toolpath_outside = plate_data_list[i]->toolpath_outside; gcode_result->label_object_enabled = plate_data_list[i]->is_label_object_enabled; + gcode_result->timelapse_warning_code = plate_data_list[i]->timelapse_warning_code; + m_plate_list[index]->set_timelapse_warning_code(plate_data_list[i]->timelapse_warning_code); m_plate_list[index]->slice_filaments_info = plate_data_list[i]->slice_filaments_info; gcode_result->warnings = plate_data_list[i]->warnings; if (m_plater && !plate_data_list[i]->thumbnail_file.empty()) { @@ -5054,15 +5083,17 @@ void PartPlateList::BedTextureInfo::TexturePart::update_buffer() void PartPlateList::init_bed_type_info() { - BedTextureInfo::TexturePart pc_part1( 5, 130, 10, 110, "bbl_bed_pc_left.svg"); - BedTextureInfo::TexturePart pc_part2( 74, -12, 150, 12, "bbl_bed_pc_bottom.svg"); - BedTextureInfo::TexturePart ep_part1( 4, 87, 12, 153, "bbl_bed_ep_left.svg"); - BedTextureInfo::TexturePart ep_part2( 72, -11, 150, 12, "bbl_bed_ep_bottom.svg"); - BedTextureInfo::TexturePart pei_part1( 6, 50, 12, 190, "bbl_bed_pei_left.svg"); - BedTextureInfo::TexturePart pei_part2(72, -11, 150, 12, "bbl_bed_pei_bottom.svg"); - BedTextureInfo::TexturePart pte_part1( 6, 40, 12, 200, "bbl_bed_pte_left.svg"); - BedTextureInfo::TexturePart pte_part2(72, -11, 150, 12, "bbl_bed_pte_bottom.svg"); - + BedTextureInfo::TexturePart pc_part1(10, 130, 10, 110, "bbl_bed_pc_left.svg"); + BedTextureInfo::TexturePart pc_part2(74, -10, 148, 12, "bbl_bed_pc_bottom.svg"); + BedTextureInfo::TexturePart ep_part1(7.5, 90, 12.5, 150, "bbl_bed_ep_left.svg"); + BedTextureInfo::TexturePart ep_part2(74, -10, 148, 12, "bbl_bed_ep_bottom.svg"); + BedTextureInfo::TexturePart pei_part1(7.5, 50, 12.5, 190, "bbl_bed_pei_left.svg"); + BedTextureInfo::TexturePart pei_part2(74, -10, 148, 12, "bbl_bed_pei_bottom.svg"); + BedTextureInfo::TexturePart pte_part1(10, 80, 10, 160, "bbl_bed_pte_left.svg"); + BedTextureInfo::TexturePart pte_part2(74, -10, 148, 12, "bbl_bed_pte_bottom.svg"); + for (size_t i = 0; i < btCount; i++) { + bed_texture_info[i].parts.clear(); + } bed_texture_info[btPC].parts.push_back(pc_part1); bed_texture_info[btPC].parts.push_back(pc_part2); bed_texture_info[btEP].parts.push_back(ep_part1); @@ -5072,8 +5103,19 @@ void PartPlateList::init_bed_type_info() bed_texture_info[btPTE].parts.push_back(pte_part1); bed_texture_info[btPTE].parts.push_back(pte_part2); + auto bed_ext = get_extents(m_shape); + int bed_width = bed_ext.size()(0); + int bed_height = bed_ext.size()(1); + float base_width = 256; + float base_height = 256; + float x_rate = bed_width / base_width; + float y_rate = bed_height / base_height; for (int i = 0; i < btCount; i++) { for (int j = 0; j < bed_texture_info[i].parts.size(); j++) { + bed_texture_info[i].parts[j].x *= x_rate; + bed_texture_info[i].parts[j].y *= y_rate; + bed_texture_info[i].parts[j].w *= x_rate; + bed_texture_info[i].parts[j].h *= y_rate; bed_texture_info[i].parts[j].update_buffer(); } } diff --git a/src/slic3r/GUI/PartPlate.hpp b/src/slic3r/GUI/PartPlate.hpp index b1bc521718..0b2c693cc3 100644 --- a/src/slic3r/GUI/PartPlate.hpp +++ b/src/slic3r/GUI/PartPlate.hpp @@ -144,6 +144,7 @@ private: GLUquadricObject* m_quadric; int m_hover_id; bool m_selected; + int m_timelapse_warning_code = 0; // BBS DynamicPrintConfig m_config; @@ -263,6 +264,9 @@ public: //set the plate's name void set_plate_name(const std::string& name); + void set_timelapse_warning_code(int code) { m_timelapse_warning_code = code; } + int timelapse_warning_code() { return m_timelapse_warning_code; } + //get the print's object, result and index void get_print(PrintBase **print, GCodeResult **result, int *index); @@ -560,16 +564,16 @@ public: class TexturePart { public: // position - int x; - int y; - int w; - int h; + float x; + float y; + float w; + float h; unsigned int vbo_id; std::string filename; GLTexture* texture { nullptr }; Vec2d offset; GeometryBuffer* buffer { nullptr }; - TexturePart(int xx, int yy, int ww, int hh, std::string file) { + TexturePart(float xx, float yy, float ww, float hh, std::string file){ x = xx; y = yy; w = ww; h = hh; filename = file; @@ -799,7 +803,8 @@ public: template void serialize(Archive& ar) { //ar(cereal::base_class(this)); - ar(m_shape, m_plate_width, m_plate_depth, m_plate_height, m_height_to_lid, m_height_to_rod, m_height_limit_mode, m_plate_count, m_current_plate, m_plate_list, unprintable_plate); + //Cancel undo/redo for m_shape ,Because the printing area of different models is different, currently if the grid changes, it cannot correspond to the model on the left ui + ar(m_plate_width, m_plate_depth, m_plate_height, m_height_to_lid, m_height_to_rod, m_height_limit_mode, m_plate_count, m_current_plate, m_plate_list, unprintable_plate); //ar(m_plate_width, m_plate_depth, m_plate_height, m_plate_count, m_current_plate); } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 11e25e4624..c7619866f4 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -40,6 +40,7 @@ #include #endif #include +#include #include "libslic3r/libslic3r.h" #include "libslic3r/Format/STL.hpp" @@ -174,7 +175,7 @@ wxDEFINE_EVENT(EVT_INSTALL_PLUGIN_HINT, wxCommandEvent); wxDEFINE_EVENT(EVT_PREVIEW_ONLY_MODE_HINT, wxCommandEvent); //BBS: change light/dark mode wxDEFINE_EVENT(EVT_GLCANVAS_COLOR_MODE_CHANGED, SimpleEvent); -//BBS: print +//BBS: print wxDEFINE_EVENT(EVT_PRINT_FROM_SDCARD_VIEW, SimpleEvent); @@ -1159,6 +1160,10 @@ void Sidebar::update_presets(Preset::Type preset_type) printer_tab->update(); } + bool isBBL = preset_bundle.is_bbl_vendor(); + wxGetApp().mainframe->show_calibration_button(!isBBL); + + break; } default: break; @@ -1451,7 +1456,7 @@ std::map Sidebar::build_filament_ams_list(MachineObject void Sidebar::load_ams_list(std::string const &device, MachineObject* obj) { std::map filament_ams_list = build_filament_ams_list(obj); - + if (!obj) { p->ams_list_device = device; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " clear list"; @@ -2333,6 +2338,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) "enable_support", "support_filament", "support_interface_filament", "support_top_z_distance", "support_bottom_z_distance", "raft_layers", "wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_extruder", + "best_object_pos" })) , sidebar(new Sidebar(q)) , notification_manager(std::make_unique(q)) @@ -2569,7 +2575,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) // update slice and print button wxGetApp().mainframe->update_slice_print_status(MainFrame::SlicePrintEventType::eEventSliceUpdate, true, false); - update(); + set_need_update(true); }); } if (wxGetApp().is_gcode_viewer()) @@ -2807,97 +2813,6 @@ void Plater::priv::select_view(const std::string& direction) assemble_view->select_view(direction); } } -// BBS set print speed table and find maximum speed -void Plater::setPrintSpeedTable(GlobalSpeedMap &printSpeedMap) { - Slic3r::DynamicPrintConfig config = wxGetApp().preset_bundle->full_config(); - printSpeedMap.maxSpeed = 0; - if (config.has("inner_wall_speed")) { - printSpeedMap.perimeterSpeed = config.opt_float("inner_wall_speed"); - if (printSpeedMap.perimeterSpeed > printSpeedMap.maxSpeed) - printSpeedMap.maxSpeed = printSpeedMap.perimeterSpeed; - } - if (config.has("outer_wall_speed")) { - printSpeedMap.externalPerimeterSpeed = config.opt_float("outer_wall_speed"); - printSpeedMap.maxSpeed = std::max(printSpeedMap.maxSpeed, printSpeedMap.externalPerimeterSpeed); - } - if (config.has("sparse_infill_speed")) { - printSpeedMap.infillSpeed = config.opt_float("sparse_infill_speed"); - if (printSpeedMap.infillSpeed > printSpeedMap.maxSpeed) - printSpeedMap.maxSpeed = printSpeedMap.infillSpeed; - } - if (config.has("internal_solid_infill_speed")) { - printSpeedMap.solidInfillSpeed = config.opt_float("internal_solid_infill_speed"); - if (printSpeedMap.solidInfillSpeed > printSpeedMap.maxSpeed) - printSpeedMap.maxSpeed = printSpeedMap.solidInfillSpeed; - } - if (config.has("top_surface_speed")) { - printSpeedMap.topSolidInfillSpeed = config.opt_float("top_surface_speed"); - if (printSpeedMap.topSolidInfillSpeed > printSpeedMap.maxSpeed) - printSpeedMap.maxSpeed = printSpeedMap.topSolidInfillSpeed; - } - if (config.has("support_speed")) { - printSpeedMap.supportSpeed = config.opt_float("support_speed"); - - if (printSpeedMap.supportSpeed > printSpeedMap.maxSpeed) - printSpeedMap.maxSpeed = printSpeedMap.supportSpeed; - } - if (config.has("small_perimeter_speed")) { - printSpeedMap.smallPerimeterSpeed = config.get_abs_value("small_perimeter_speed"); - - if (printSpeedMap.smallPerimeterSpeed > printSpeedMap.maxSpeed) - printSpeedMap.maxSpeed = printSpeedMap.smallPerimeterSpeed; - } - /* "inner_wall_speed", "outer_wall_speed", "sparse_infill_speed", "internal_solid_infill_speed", - "top_surface_speed", "support_speed", "support_object_xy_distance", "support_interface_speed", - "bridge_speed", "gap_infill_speed", "travel_speed", "initial_layer_speed"*/ - - auto& print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); - auto print_config = print.config(); - printSpeedMap.bed_poly.points = get_bed_shape(*(wxGetApp().plater()->config())); - Pointfs excluse_area_points = print_config.bed_exclude_area.values; - Polygons exclude_polys; - Polygon exclude_poly; - for (int i = 0; i < excluse_area_points.size(); i++) { - auto pt = excluse_area_points[i]; - exclude_poly.points.emplace_back(scale_(pt.x()), scale_(pt.y())); - if (i % 4 == 3) { // exclude areas are always rectangle - exclude_polys.push_back(exclude_poly); - exclude_poly.points.clear(); - } - } - printSpeedMap.bed_poly = diff({ printSpeedMap.bed_poly }, exclude_polys)[0]; -} - -// find temperature of heatend and bed and matierial of an given extruder -void Plater::setExtruderParams(std::map& extParas) { - extParas.clear(); - Slic3r::DynamicPrintConfig config = wxGetApp().preset_bundle->full_config(); - // BBS - int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); - for (unsigned int i = 0; i != numExtruders; ++i) { - std::string matName = ""; - // BBS - int bedTemp = 35; - double endTemp = 0.f; - if (config.has("filament_type")) { - matName = config.opt_string("filament_type", i); - } - if (config.has("nozzle_temperature")) { - endTemp = config.opt_int("nozzle_temperature", i); - } - - // FIXME: curr_bed_type is now a plate config rather than a global config. - // Currently bed temp is not used for brim generation, so just comment it for now. -#if 0 - if (config.has("curr_bed_type")) { - BedType curr_bed_type = config.opt_enum("curr_bed_type"); - bedTemp = config.opt_int(get_bed_temp_key(curr_bed_type), i); - } -#endif - if (i == 0) extParas.insert({ i,{matName, bedTemp, endTemp} }); - extParas.insert({ i + 1,{matName, bedTemp, endTemp} }); - } -} wxColour Plater::get_next_color_for_filament() { @@ -2930,7 +2845,12 @@ wxString Plater::get_slice_warning_string(GCodeProcessorResult::SliceWarning& wa return _L("The bed temperature exceeds filament's vitrification temperature. Please open the front door of printer before printing to avoid nozzle clog."); } else if (warning.msg == NOZZLE_HRC_CHECKER) { return _L("The nozzle hardness required by the filament is higher than the default nozzle hardness of the printer. Please replace the hardened nozzle or filament, otherwise, the nozzle will be attrited or damaged."); - } else { + } else if (warning.msg == NOT_SUPPORT_TRADITIONAL_TIMELAPSE) { + return _L("Enabling traditional timelapse photography may cause surface imperfections. It is recommended to change to smooth mode."); + } else if (warning.msg == NOT_GENERATE_TIMELAPSE) { + return wxString(); + } + else { return wxString(warning.msg); } } @@ -2963,8 +2883,13 @@ void Plater::priv::select_view_3D(const std::string& name, bool no_slice) else if (name == "Preview") { BOOST_LOG_TRIVIAL(info) << "select preview"; //BBS update extruder params and speed table before slicing - Plater::setExtruderParams(Slic3r::Model::extruderParamsMap); - Plater::setPrintSpeedTable(Slic3r::Model::printSpeedMap); + const Slic3r::DynamicPrintConfig& config = wxGetApp().preset_bundle->full_config(); + auto& print = q->get_partplate_list().get_current_fff_print(); + auto print_config = print.config(); + int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); + + Model::setExtruderParams(config, numExtruders); + Model::setPrintSpeedTable(config, print_config); set_current_panel(preview, no_slice); } else if (name == "Assemble") { @@ -4853,7 +4778,7 @@ bool Plater::priv::replace_volume_with_stl(int object_idx, int volume_idx, const Model new_model; try { - new_model = Model::read_from_file(path, nullptr, nullptr, LoadStrategy::AddDefaultInstances); + new_model = Model::read_from_file(path, nullptr, nullptr, LoadStrategy::AddDefaultInstances | LoadStrategy::LoadModel); for (ModelObject* model_object : new_model.objects) { model_object->center_around_origin(); model_object->ensure_on_bed(); @@ -5876,7 +5801,11 @@ void Plater::priv::on_slicing_update(SlicingStatusEvent &evt) // Now process state.warnings. for (auto const& warning : state.warnings) { if (warning.current) { - notification_manager->push_slicing_warning_notification(warning.message, false, model_object, object_id, warning_step, warning.message_id); + NotificationManager::NotificationLevel notif_level = NotificationManager::NotificationLevel::WarningNotificationLevel; + if (evt.status.message_type == PrintStateBase::SlicingNotificationType::SlicingReplaceInitEmptyLayers | PrintStateBase::SlicingNotificationType::SlicingEmptyGcodeLayers) { + notif_level = NotificationManager::NotificationLevel::SeriousWarningNotificationLevel; + } + notification_manager->push_slicing_warning_notification(warning.message, false, model_object, object_id, warning_step, warning.message_id, notif_level); add_warning(warning, object_id.id); } } @@ -6045,8 +5974,8 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent &evt) } } else { std::vector ptrs; - for (auto oid : message.second) - { + for (auto oid : message.second) + { const PrintObject *print_object = this->background_process.m_fff_print->get_object(ObjectID(oid)); if (print_object) { ptrs.push_back(print_object->model_object()); } } @@ -6258,8 +6187,13 @@ void Plater::priv::on_action_slice_plate(SimpleEvent&) if (q != nullptr) { BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received slice plate event\n" ; //BBS update extruder params and speed table before slicing - Plater::setExtruderParams(Slic3r::Model::extruderParamsMap); - Plater::setPrintSpeedTable(Slic3r::Model::printSpeedMap); + const Slic3r::DynamicPrintConfig& config = wxGetApp().preset_bundle->full_config(); + auto& print = q->get_partplate_list().get_current_fff_print(); + auto print_config = print.config(); + int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); + + Model::setExtruderParams(config, numExtruders); + Model::setPrintSpeedTable(config, print_config); m_slice_all = false; q->reslice(); q->select_view_3D("Preview"); @@ -6272,8 +6206,13 @@ void Plater::priv::on_action_slice_all(SimpleEvent&) if (q != nullptr) { BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received slice project event\n" ; //BBS update extruder params and speed table before slicing - Plater::setExtruderParams(Slic3r::Model::extruderParamsMap); - Plater::setPrintSpeedTable(Slic3r::Model::printSpeedMap); + const Slic3r::DynamicPrintConfig& config = wxGetApp().preset_bundle->full_config(); + auto& print = q->get_partplate_list().get_current_fff_print(); + auto print_config = print.config(); + int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); + + Model::setExtruderParams(config, numExtruders); + Model::setPrintSpeedTable(config, print_config); m_slice_all = true; m_slice_all_only_has_gcode = true; m_cur_slice_plate = 0; @@ -7642,10 +7581,10 @@ void Plater::priv::update_after_undo_redo(const UndoRedo::Snapshot& snapshot, bo // triangle meshes may have gotten released from the scene or the background processing, therefore now being calculated into the Undo / Redo stack size. this->undo_redo_stack().release_least_recently_used(); //YS_FIXME update obj_list from the deserialized model (maybe store ObjectIDs into the tree?) (no selections at this point of time) - get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? + get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? assemble_view->get_canvas3d()->get_selection().set_deserialized(GUI::Selection::EMode(this->undo_redo_stack().selection_deserialized().mode), this->undo_redo_stack().selection_deserialized().volumes_and_instances) : this->view3D->get_canvas3d()->get_selection().set_deserialized(GUI::Selection::EMode(this->undo_redo_stack().selection_deserialized().mode), this->undo_redo_stack().selection_deserialized().volumes_and_instances); - get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? + get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? assemble_view->get_canvas3d()->get_gizmos_manager().update_after_undo_redo(snapshot) : this->view3D->get_canvas3d()->get_gizmos_manager().update_after_undo_redo(snapshot); @@ -8039,26 +7978,25 @@ int Plater::save_project(bool saveAs) //BBS import model by model id void Plater::import_model_id(wxString download_info) { - //std::string download_origin_url = wxGetApp().url_decode(download_info.ToStdString()); - - std::string download_origin_url = download_info.ToStdString(); - std::string download_url; - std::string filename; + wxString download_origin_url = download_info; + wxString download_url; + wxString filename; + wxString separator = "&name="; try { - std::vector origin_array = wxGetApp().split_str(download_origin_url, "&name="); - if (origin_array.size() >= 2) { + size_t namePos = download_info.Find(separator); + if (namePos != wxString::npos) { + download_url = download_info.Mid(0, namePos); + filename = download_info.Mid(namePos + separator.Length()); - download_url = origin_array[0]; - filename = origin_array[1]; } - else if (!download_origin_url.empty()) { - - fs::path download_path = fs::path(download_origin_url); + else { + fs::path download_path = fs::path(download_origin_url.wx_str()); download_url = download_origin_url; filename = download_path.filename().string(); } + } catch (const std::exception& error) { @@ -8066,7 +8004,8 @@ void Plater::import_model_id(wxString download_info) } bool download_ok = false; - /* save to a file */ + int retry_count = 0; + const int max_retries = 3; /* jump to 3D eidtor */ wxGetApp().mainframe->select_tab((size_t)MainFrame::TabPosition::tp3DEditor); @@ -8094,7 +8033,7 @@ void Plater::import_model_id(wxString download_info) p->project.reset(); /* prepare project and profile */ - boost::thread import_thread = Slic3r::create_thread([&percent, &cont, &cancel, &msg, &target_path, &download_ok, download_url, &filename] { + boost::thread import_thread = Slic3r::create_thread([&percent, &cont, &cancel, &retry_count, max_retries, &msg, &target_path, &download_ok, download_url, &filename] { NetworkAgent* m_agent = Slic3r::GUI::wxGetApp().getAgent(); if (!m_agent) return; @@ -8115,7 +8054,7 @@ void Plater::import_model_id(wxString download_info) try { vecFiles.clear(); - wxString extension = fs::path(filename).extension().c_str(); + wxString extension = fs::path(filename.wx_str()).extension().c_str(); auto name = filename.substr(0, filename.length() - extension.length() - 1); for (const auto& iter : boost::filesystem::directory_iterator(target_path)) @@ -8138,7 +8077,7 @@ void Plater::import_model_id(wxString download_info) //update filename if (is_already_exist && vecFiles.size() >= 1) { - wxString extension = fs::path(filename).extension().c_str(); + wxString extension = fs::path(filename.wx_str()).extension().c_str(); wxString name = filename.substr(0, filename.length() - extension.length()); filename = wxString::Format("%s(%d)%s", name, vecFiles.size() + 1, extension).ToStdString(); } @@ -8158,43 +8097,49 @@ void Plater::import_model_id(wxString download_info) } //target_path /= (boost::format("%1%_%2%.3mf") % filename % unique).str(); - target_path /= fs::path(wxString(filename).wc_str()); + target_path /= fs::path(filename.wc_str()); fs::path tmp_path = target_path; tmp_path += format(".%1%", ".download"); - auto url = download_url; - auto http = Http::get(url); - http.on_progress([&percent, &cont, &msg](Http::Progress progress, bool& cancel) { - if (!cont) cancel = true; - if (progress.dltotal != 0) { - percent = progress.dlnow * 100 / progress.dltotal; - } - msg = wxString::Format(_L("Project downloaded %d%%"), percent); - }) - .on_error([&msg, &cont](std::string body, std::string error, unsigned http_status) { - (void)body; - BOOST_LOG_TRIVIAL(error) << format("Error getting: `%1%`: HTTP %2%, %3%", - body, - http_status, - error); - msg = wxString::Format("Download Failed! body=%s, error=%s, status=%d", body, error, http_status); - cont = false; - return; + + auto http = Http::get(download_url.ToStdString()); + + while (cont && retry_count < max_retries) { + retry_count++; + http.on_progress([&percent, &cont, &msg](Http::Progress progress, bool& cancel) { + if (!cont) cancel = true; + if (progress.dltotal != 0) { + percent = progress.dlnow * 100 / progress.dltotal; + } + msg = wxString::Format(_L("Project downloaded %d%%"), percent); + }) + .on_error([&msg, &cont, &retry_count, max_retries](std::string body, std::string error, unsigned http_status) { + (void)body; + BOOST_LOG_TRIVIAL(error) << format("Error getting: `%1%`: HTTP %2%, %3%", + body, + http_status, + error); + + if (retry_count == max_retries) { + msg = _L("Importing to Bambu Studio failed. Please download the file and manually import it."); + cont = false; + } }) .on_complete([&cont, &download_ok, tmp_path, target_path](std::string body, unsigned /* http_status */) { - fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc); - file.write(body.c_str(), body.size()); - file.close(); - fs::rename(tmp_path, target_path); - cont = false; - download_ok = true; - }) - .perform_sync(); + fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc); + file.write(body.c_str(), body.size()); + file.close(); + fs::rename(tmp_path, target_path); + cont = false; + download_ok = true; + }).perform_sync(); - // for break while - cont = false; - }); + // for break while + //cont = false; + } + + }); while (cont && cont_dlg) { wxMilliSleep(50); @@ -8216,8 +8161,7 @@ void Plater::import_model_id(wxString download_info) if (download_ok) { BOOST_LOG_TRIVIAL(trace) << "import_model_id: target_path = " << target_path.string(); /* load project */ - this->load_project(encode_path(target_path.string().c_str())); - + this->load_project(target_path.wstring()); /*BBS set project info after load project, project info is reset in load project */ //p->project.project_model_id = model_id; //p->project.project_design_id = design_id; @@ -8227,10 +8171,15 @@ void Plater::import_model_id(wxString download_info) } // show save new project - p->set_project_filename(wxString(filename)); + p->set_project_filename(filename); + p->notification_manager->push_import_finished_notification(target_path.string(), target_path.parent_path().string(), false); } else { - if (!msg.empty()) wxMessageBox(msg); + if (!msg.empty()) { + MessageDialog msg_wingow(nullptr, msg, wxEmptyString, wxICON_WARNING | wxOK); + msg_wingow.SetSize(wxSize(FromDIP(480), -1)); + msg_wingow.ShowModal(); + } return; } } @@ -9598,16 +9547,17 @@ void Plater::add_file() } } -void Plater::update(bool conside_update_flag) +void Plater::update(bool conside_update_flag, bool force_background_processing_update) { + unsigned int flag = force_background_processing_update ? (unsigned int)Plater::priv::UpdateParams::FORCE_BACKGROUND_PROCESSING_UPDATE : 0; if (conside_update_flag) { if (need_update()) { - p->update(); + p->update(flag); p->set_need_update(false); } } else - p->update(); + p->update(flag); } void Plater::object_list_changed() { p->object_list_changed(); } @@ -11085,7 +11035,7 @@ void Plater::print_job_finished(wxCommandEvent &evt) p->enter_prepare_mode(); } - + Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) return; @@ -11220,7 +11170,7 @@ void Plater::on_filaments_change(size_t num_filaments) for (int i = 0; i < plate_list.get_plate_count(); ++i) { PartPlate* part_plate = plate_list.get_plate(i); part_plate->update_first_layer_print_sequence(num_filaments); - } + } for (ModelObject* mo : wxGetApp().model().objects) { for (ModelVolume* mv : mo->volumes) { @@ -11481,7 +11431,7 @@ void Plater::update_print_error_info(int code, std::string msg, std::string extr if (p->main_frame->m_calibration) p->main_frame->m_calibration->update_print_error_info(code, msg, extra); } - + wxString Plater::get_project_filename(const wxString& extension) const { return p->get_project_filename(extension); @@ -12299,7 +12249,7 @@ int Plater::select_plate_by_hover_id(int hover_id, bool right_click, bool isModi if (!ret) { PlateNameEditDialog dlg(this, wxID_ANY, _L("Edit Plate Name")); PartPlate * curr_plate = p->partplate_list.get_curr_plate(); - + wxString curr_plate_name = from_u8(curr_plate->get_plate_name()); dlg.set_plate_name(curr_plate_name); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 11d94c658a..62c505f5ad 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -259,9 +259,7 @@ public: void update_all_plate_thumbnails(bool force_update = false); void invalid_all_plate_thumbnails(); void force_update_all_plate_thumbnails(); - //BBS static functions that update extruder params and speed table - static void setPrintSpeedTable(Slic3r::GlobalSpeedMap& printSpeedMap); - static void setExtruderParams(std::map& extParas); + static wxColour get_next_color_for_filament(); static wxString get_slice_warning_string(GCodeProcessorResult::SliceWarning& warning); @@ -274,7 +272,7 @@ public: const wxString& get_last_loaded_gcode() const { return m_last_loaded_gcode; } - void update(bool conside_update_flag = false); + void update(bool conside_update_flag = false, bool force_background_processing_update = false); //BBS void object_list_changed(); void stop_jobs(); @@ -292,7 +290,7 @@ public: bool is_view3D_overhang_shown() const; void show_view3D_overhang(bool show); - + bool is_sidebar_collapsed() const; void collapse_sidebar(bool show); diff --git a/src/slic3r/GUI/PrintOptionsDialog.cpp b/src/slic3r/GUI/PrintOptionsDialog.cpp index 1f71f7cef9..04106abc6f 100644 --- a/src/slic3r/GUI/PrintOptionsDialog.cpp +++ b/src/slic3r/GUI/PrintOptionsDialog.cpp @@ -55,6 +55,12 @@ PrintOptionsDialog::PrintOptionsDialog(wxWindow* parent) } evt.Skip(); }); + m_cb_sup_sound->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& evt) { + if (obj) { + obj->command_xcam_control_allow_prompt_sound(m_cb_sup_sound->GetValue()); + } + evt.Skip(); + }); wxGetApp().UpdateDlgDarkUI(this); } @@ -131,14 +137,23 @@ void PrintOptionsDialog::update_options(MachineObject* obj_) m_cb_auto_recovery->Hide(); line4->Hide(); } + if (obj_->is_function_supported(PrinterFunction::FUNC_PROMPT_SOUND)) { + text_sup_sound->Show(); + m_cb_sup_sound->Show(); + line5->Show(); + } + else { + text_sup_sound->Hide(); + m_cb_sup_sound->Hide(); + line5->Hide(); + } this->Freeze(); - auto test1 = obj_->xcam_first_layer_inspector; - auto test2 = obj_->xcam_buildplate_marker_detector; - auto test3 = obj_->xcam_auto_recovery_step_loss; + m_cb_first_layer->SetValue(obj_->xcam_first_layer_inspector); m_cb_plate_mark->SetValue(obj_->xcam_buildplate_marker_detector); m_cb_auto_recovery->SetValue(obj_->xcam_auto_recovery_step_loss); + m_cb_sup_sound->SetValue(obj_->xcam_allow_prompt_sound); m_cb_ai_monitoring->SetValue(obj_->xcam_ai_monitoring); for (auto i = AiMonitorSensitivityLevel::LOW; i < LEVELS_NUM; i = (AiMonitorSensitivityLevel) (i + 1)) { @@ -256,6 +271,22 @@ wxBoxSizer* PrintOptionsDialog::create_settings_group(wxWindow* parent) sizer->Add(line4, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20)); sizer->Add(0,0,0,wxTOP, FromDIP(20)); + //Allow prompt sound + line_sizer = new wxBoxSizer(wxHORIZONTAL); + m_cb_sup_sound = new CheckBox(parent); + text_sup_sound = new wxStaticText(parent, wxID_ANY, _L("Allow Prompt Sound")); + text_sup_sound->SetFont(Label::Body_14); + line_sizer->Add(FromDIP(5), 0, 0, 0); + line_sizer->Add(m_cb_sup_sound, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5)); + line_sizer->Add(text_sup_sound, 1, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5)); + sizer->Add(0, 0, 0, wxTOP, FromDIP(15)); + sizer->Add(line_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(18)); + line_sizer->Add(FromDIP(5), 0, 0, 0); + + line5 = new StaticLine(parent, false); + line5->SetLineColour(STATIC_BOX_LINE_COL); + sizer->Add(line5, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20)); + ai_monitoring_level_list->Connect( wxEVT_COMBOBOX, wxCommandEventHandler(PrintOptionsDialog::set_ai_monitor_sensitivity), NULL, this ); return sizer; diff --git a/src/slic3r/GUI/PrintOptionsDialog.hpp b/src/slic3r/GUI/PrintOptionsDialog.hpp index e9221ef7fc..e348d64faf 100644 --- a/src/slic3r/GUI/PrintOptionsDialog.hpp +++ b/src/slic3r/GUI/PrintOptionsDialog.hpp @@ -26,6 +26,7 @@ protected: CheckBox* m_cb_ai_monitoring; CheckBox* m_cb_plate_mark; CheckBox* m_cb_auto_recovery; + CheckBox* m_cb_sup_sound; wxStaticText* text_first_layer; wxStaticText* text_ai_monitoring; wxStaticText* text_ai_monitoring_caption; @@ -33,10 +34,12 @@ protected: wxStaticText* text_plate_mark; wxStaticText* text_plate_mark_caption; wxStaticText* text_auto_recovery; + wxStaticText* text_sup_sound; StaticLine* line1; StaticLine* line2; StaticLine* line3; StaticLine* line4; + StaticLine* line5; wxBoxSizer* create_settings_group(wxWindow* parent); bool print_halt = false; diff --git a/src/slic3r/GUI/Project.cpp b/src/slic3r/GUI/Project.cpp index 814040f520..1d6e535bd7 100644 --- a/src/slic3r/GUI/Project.cpp +++ b/src/slic3r/GUI/Project.cpp @@ -310,11 +310,18 @@ std::map> ProjectPanel::Reload(wxString aux_path) pfile_obj["filename"] = wxGetApp().url_encode(file_path_obj.filename().string().c_str()); pfile_obj["size"] = formatBytes((unsigned long)filelen); + std::string file_extension = file_path_obj.extension().string(); + boost::algorithm::to_lower(file_extension); + //image - if (file_path_obj.extension() == ".jpg" || - file_path_obj.extension() == ".jpeg" || - file_path_obj.extension() == ".png" || - file_path_obj.extension() == ".bmp") + if (file_extension == ".jpg" || + file_extension == ".jpeg" || + file_extension == ".pjpeg" || + file_extension == ".png" || + file_extension == ".jfif" || + file_extension == ".pjp" || + file_extension == ".webp" || + file_extension == ".bmp") { wxString base64_str = to_base64(file_path); @@ -343,25 +350,29 @@ std::string ProjectPanel::formatBytes(unsigned long bytes) wxString ProjectPanel::to_base64(std::string file_path) { - std::map base64_format; - base64_format[".jpg"] = wxBITMAP_TYPE_JPEG; - base64_format[".jpeg"] = wxBITMAP_TYPE_JPEG; - base64_format[".png"] = wxBITMAP_TYPE_PNG; - base64_format[".bmp"] = wxBITMAP_TYPE_BMP; + std::ifstream imageFile(encode_path(file_path.c_str()), std::ios::binary); + if (!imageFile) { + return wxEmptyString; + } - std::string extension = file_path.substr(file_path.rfind("."), file_path.length()); + std::ostringstream imageStream; + imageStream << imageFile.rdbuf(); - auto image = new wxImage(encode_path(file_path.c_str())); - wxMemoryOutputStream mem; - image->SaveFile(mem, base64_format[extension]); + std::string binaryImageData = imageStream.str(); + + std::string extension; + size_t last_dot = file_path.find_last_of("."); + + if (last_dot != std::string::npos) { + extension = file_path.substr(last_dot + 1); + } + + wxString bease64_head = wxString::Format("data:image/%s;base64,", extension); - wxString km = wxBase64Encode(mem.GetOutputStreamBuffer()->GetBufferStart(), - mem.GetSize()); std::wstringstream wss; - wss << L"data:image/jpg;base64,"; - //wss << wxBase64Encode(km.data(), km.size()); - wss << km; + wss << bease64_head; + wss << wxBase64Encode(binaryImageData.data(), binaryImageData.size()); wxString base64_str = wss.str(); return base64_str; diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 706324f21a..59cecca282 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -225,14 +225,14 @@ void MachineObjectPanel::doRender(wxDC &dc) } auto sizet = dc.GetTextExtent(dev_name); auto text_end = 0; - + if (m_show_edit) { text_end = size.x - m_unbind_img.GetBmpSize().x - 30; } else { text_end = size.x - m_unbind_img.GetBmpSize().x; } - + wxString finally_name = dev_name; if (sizet.x > (text_end - left)) { auto limit_width = text_end - left - dc.GetTextExtent("...").x - 15; @@ -268,7 +268,7 @@ void MachineObjectPanel::doRender(wxDC &dc) dc.DrawBitmap(m_edit_name_img.bmp(), left, (size.y - m_edit_name_img.GetBmpSize().y) / 2); } } - + } void MachineObjectPanel::update_machine_info(MachineObject *info, bool is_my_devices) @@ -867,14 +867,16 @@ void SelectMachinePopup::OnLeftUp(wxMouseEvent &event) static wxString MACHINE_BED_TYPE_STRING[BED_TYPE_COUNT] = { //_L("Auto"), _L("Bambu Cool Plate") + " / " + _L("PLA Plate"), - _L("Bamabu Engineering Plate"), - _L("Bamabu High Temperature Plate")}; + _L("Bambu Engineering Plate"), + _L("Bambu Smooth PEI Plate") + "/" + _L("High temperature Plate"), + _L("Bambu Textured PEI Plate")}; static std::string MachineBedTypeString[BED_TYPE_COUNT] = { //"auto", "pc", - "pei", "pe", + "pei", + "pte", }; void SelectMachineDialog::stripWhiteSpace(std::string& str) @@ -1205,7 +1207,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) m_sizer_prepare->Add(0, 0, 1, wxTOP, FromDIP(12)); auto hyperlink_sizer = new wxBoxSizer( wxHORIZONTAL ); - m_hyperlink = new wxHyperlinkCtrl(m_panel_prepare, wxID_ANY, _L("Can't connect to the printer"), wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); + m_hyperlink = new wxHyperlinkCtrl(m_panel_prepare, wxID_ANY, _L("Click here if you can't connect to the printer"), wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); hyperlink_sizer->Add(m_hyperlink, 0, wxALIGN_CENTER | wxALL, 5); m_sizer_prepare->Add(hyperlink_sizer, 0, wxALIGN_CENTER | wxALL, 5); @@ -1297,7 +1299,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) m_st_txt_error_desc = new Label(m_sw_print_failed_info, wxEmptyString); st_title_error_desc->SetForegroundColour(0x909090); st_title_error_desc_doc->SetForegroundColour(0x909090); - m_st_txt_error_desc->SetForegroundColour(0x909090); + m_st_txt_error_desc->SetForegroundColour(0x909090); st_title_error_desc->SetFont(::Label::Body_13); st_title_error_desc_doc->SetFont(::Label::Body_13); m_st_txt_error_desc->SetFont(::Label::Body_13); @@ -1314,7 +1316,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) m_st_txt_extra_info = new Label(m_sw_print_failed_info, wxEmptyString); st_title_extra_info->SetForegroundColour(0x909090); st_title_extra_info_doc->SetForegroundColour(0x909090); - m_st_txt_extra_info->SetForegroundColour(0x909090); + m_st_txt_extra_info->SetForegroundColour(0x909090); st_title_extra_info->SetFont(::Label::Body_13); st_title_extra_info_doc->SetFont(::Label::Body_13); m_st_txt_extra_info->SetFont(::Label::Body_13); @@ -1369,7 +1371,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(11)); m_sizer_main->Add(m_statictext_printer_msg, 0, wxALIGN_CENTER_HORIZONTAL, 0); m_sizer_main->Add(0, 1, 0, wxTOP, FromDIP(16)); - m_sizer_main->Add(m_sizer_select, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(40)); + m_sizer_main->Add(m_sizer_select, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, FromDIP(30)); m_sizer_main->Add(0, 1, 0, wxTOP, FromDIP(10)); m_sizer_main->Add(m_line_schedule, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(30)); m_sizer_main->Add(m_simplebook, 0, wxALIGN_CENTER_HORIZONTAL, 0); @@ -1440,7 +1442,7 @@ void SelectMachineDialog::init_bind() } } } - }); + }); m_bitmap_last_plate->Bind(wxEVT_LEFT_DOWN, [this](auto& e) { if (m_print_plate_idx > 0) { @@ -1541,10 +1543,10 @@ wxWindow *SelectMachineDialog::create_ams_checkbox(wxString title, wxWindow *par sizer_checkbox->Add(text, 0, wxALIGN_CENTER, 0); enable_ams = new ScalableBitmap(this, "enable_ams", 16); - auto img_ams_tip = new wxStaticBitmap(checkbox, wxID_ANY, enable_ams->bmp(), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0); + img_ams_tip = new wxStaticBitmap(checkbox, wxID_ANY, enable_ams->bmp(), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0); sizer_checkbox->Add(img_ams_tip, 0, wxALIGN_CENTER | wxLEFT, FromDIP(5)); - img_ams_tip->Bind(wxEVT_ENTER_WINDOW, [this, img_ams_tip](auto& e) { + img_ams_tip->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { wxPoint img_pos = img_ams_tip->ClientToScreen(wxPoint(0, 0)); wxPoint popup_pos(img_pos.x, img_pos.y + img_ams_tip->GetRect().height); m_mapping_tip_popup.Position(popup_pos, wxSize(0, 0)); @@ -1561,7 +1563,6 @@ wxWindow *SelectMachineDialog::create_ams_checkbox(wxString title, wxWindow *par img_ams_tip->Bind(wxEVT_LEAVE_WINDOW, [this](wxMouseEvent& e) { m_mapping_tip_popup.Dismiss(); }); - ams_tip = img_ams_tip; checkbox->SetSizer(sizer_checkbox); checkbox->Layout(); @@ -1637,7 +1638,7 @@ wxWindow *SelectMachineDialog::create_item_checkbox(wxString title, wxWindow *pa config->set_str("print", param, "0"); } }); - + text->Bind(wxEVT_LEFT_DOWN, [this, check, param](wxMouseEvent &) { //if (!m_checkbox_state_list[param]) {return;} check->SetValue(check->GetValue() ? false : true); @@ -1673,15 +1674,17 @@ void SelectMachineDialog::update_select_layout(MachineObject *obj) && obj->is_support_print_with_timelapse() && is_show_timelapse()) { select_timelapse->Show(); + update_timelapse_enable_status(); } else { select_timelapse->Hide(); } m_sizer_select->Layout(); + Layout(); Fit(); } -void SelectMachineDialog::prepare_mode() +void SelectMachineDialog::prepare_mode(bool refresh_button) { // disable combobox m_comboBox_printer->Enable(); @@ -1696,7 +1699,9 @@ void SelectMachineDialog::prepare_mode() if (wxIsBusy()) wxEndBusyCursor(); - Enable_Send_Button(true); + if (refresh_button) { + Enable_Send_Button(true); + } m_status_bar->reset(); if (m_simplebook->GetSelection() != 0) { @@ -1726,7 +1731,7 @@ void SelectMachineDialog::sending_mode() Fit(); } - + if (m_print_page_mode != PrintPageModeSending) { m_print_page_mode = PrintPageModeSending; for (auto it = m_materialList.begin(); it != m_materialList.end(); it++) { @@ -2014,12 +2019,6 @@ void SelectMachineDialog::show_status(PrintDialogStatus status, std::vectorEnable(); - // m_panel_warn m_simplebook - if (status == PrintDialogStatus::PrintStatusSending) { - sending_mode(); - } else { - prepare_mode(); - } // other if (status == PrintDialogStatus::PrintStatusInit) { @@ -2161,6 +2160,30 @@ void SelectMachineDialog::show_status(PrintDialogStatus status, std::vectorget_partplate_list().get_curr_plate(); + for (auto warning : plate->get_slice_result()->warnings) { + if (warning.msg == NOT_GENERATE_TIMELAPSE) { + if (warning.error_code == "1001C001") { + msg_text = _L("When enable spiral vase mode, machines with I3 structure will not generate timelapse videos."); + } + else if (warning.error_code == "1001C002") { + msg_text = _L("When print by object, machines with I3 structure will not generate timelapse videos."); + } + } + } + update_print_status_msg(msg_text, true, true); + Enable_Send_Button(true); + Enable_Refresh_Button(true); + } + + // m_panel_warn m_simplebook + if (status == PrintDialogStatus::PrintStatusSending) { + sending_mode(); + } + else { + prepare_mode(false); } } @@ -2260,14 +2283,23 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event) PartPlate* plate = m_plater->get_partplate_list().get_curr_plate(); - + for (auto warning : plate->get_slice_result()->warnings) { if (warning.msg == BED_TEMP_TOO_HIGH_THAN_FILAMENT) { - if ((obj_->printer_type == "BL-P001" || obj_->printer_type == "BL-P002")) { + if ((obj_->get_printer_series() == PrinterSeries::SERIES_X1)) { confirm_text.push_back(Plater::get_slice_warning_string(warning) + "\n"); has_slice_warnings = true; } } + else if (warning.msg == NOT_SUPPORT_TRADITIONAL_TIMELAPSE) { + if (obj_->get_printer_arch() == PrinterArch::ARCH_I3 && m_checkbox_list["timelapse"]->GetValue()) { + confirm_text.push_back(Plater::get_slice_warning_string(warning) + "\n"); + has_slice_warnings = true; + } + } + else if (warning.msg == NOT_GENERATE_TIMELAPSE) { + continue; + } else { wxString error_info = Plater::get_slice_warning_string(warning); if (error_info.IsEmpty()) { @@ -2345,7 +2377,7 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event) else { this->on_send_print(); } - + }); confirm_text.push_back(_L("Please click the confirm button if you still want to proceed with printing.") + "\n"); @@ -2939,7 +2971,6 @@ void SelectMachineDialog::on_timer(wxTimerEvent &event) if (!obj_ || obj_->amsList.empty() || obj_->ams_exist_bits == 0 - || !obj_->m_is_support_show_bak || !obj_->ams_support_auto_switch_filament_flag || !obj_->ams_auto_switch_filament_flag || !obj_->is_function_supported(PrinterFunction::FUNC_FILAMENT_BACKUP) @@ -3028,6 +3059,8 @@ void SelectMachineDialog::update_ams_check(MachineObject* obj) && obj->ams_support_use_ams && obj->has_ams()) { select_use_ams->Show(); + if (obj->printer_type == "N1") {img_ams_tip->Hide();} + else {img_ams_tip->Show();} } else { select_use_ams->Hide(); } @@ -3144,7 +3177,7 @@ void SelectMachineDialog::update_show_status() } } - if (is_blocking_printing()) { + if (m_print_type == PrintFromType::FROM_NORMAL && is_blocking_printing()) { show_status(PrintDialogStatus::PrintStatusUnsupportedPrinter); return; } @@ -3173,6 +3206,11 @@ void SelectMachineDialog::update_show_status() } } + if (has_timelapse_warning()) { + show_status(PrintDialogStatus::PrintStatusTimelapseWarning); + return; + } + // no ams if (!obj_->has_ams() || !m_checkbox_list["use_ams"]->GetValue()) { if (!has_tips(obj_)) @@ -3239,6 +3277,35 @@ void SelectMachineDialog::update_show_status() } } +bool SelectMachineDialog::has_timelapse_warning() +{ + PartPlate *plate = m_plater->get_partplate_list().get_curr_plate(); + for (auto warning : plate->get_slice_result()->warnings) { + if (warning.msg == NOT_GENERATE_TIMELAPSE) { + return true; + } + } + + return false; +} + +void SelectMachineDialog::update_timelapse_enable_status() +{ + AppConfig *config = wxGetApp().app_config; + if (!has_timelapse_warning()) { + if (!config || config->get("print", "timelapse") == "0") + m_checkbox_list["timelapse"]->SetValue(false); + else + m_checkbox_list["timelapse"]->SetValue(true); + select_timelapse->Enable(true); + } else { + m_checkbox_list["timelapse"]->SetValue(false); + select_timelapse->Enable(false); + if (config) { config->set_str("print", "timelapse", "0"); } + } +} + + bool SelectMachineDialog::is_show_timelapse() { auto compare_version = [](const std::string &version1, const std::string &version2) -> bool { @@ -3342,7 +3409,7 @@ void SelectMachineDialog::on_dpi_changed(const wxRect &suggested_rect) enable_ams_mapping->msw_rescale(); amsmapping_tip->SetBitmap(enable_ams_mapping->bmp()); enable_ams->msw_rescale(); - ams_tip->SetBitmap(enable_ams->bmp()); + img_ams_tip->SetBitmap(enable_ams->bmp()); m_button_refresh->SetMinSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE); m_button_refresh->SetCornerRadius(FromDIP(12)); @@ -3350,11 +3417,11 @@ void SelectMachineDialog::on_dpi_changed(const wxRect &suggested_rect) m_button_ensure->SetCornerRadius(FromDIP(12)); m_status_bar->msw_rescale(); - for (auto checkpire : m_checkbox_list) { + for (auto checkpire : m_checkbox_list) { checkpire.second->Rescale(); } - for (auto material1 : m_materialList) { + for (auto material1 : m_materialList) { material1.second->item->msw_rescale(); } @@ -3435,7 +3502,7 @@ void SelectMachineDialog::set_default() filename = m_plater->get_export_gcode_filename("", true); if (filename.empty()) filename = _L("Untitled"); } - + fs::path filename_path(filename.c_str()); m_current_project_name = wxString::FromUTF8(filename_path.filename().string()); @@ -3531,7 +3598,7 @@ void SelectMachineDialog::set_default_normal() std::vector materials; std::vector brands; std::vector display_materials; - + auto preset_bundle = wxGetApp().preset_bundle; for (auto filament_name : preset_bundle->filament_presets) { for (auto iter = preset_bundle->filaments.lbegin(); iter != preset_bundle->filaments.end(); iter++) { @@ -3549,7 +3616,7 @@ void SelectMachineDialog::set_default_normal() } } - //init MaterialItem + //init MaterialItem auto extruders = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_used_extruders(); BitmapCache bmcache; @@ -3716,8 +3783,8 @@ void SelectMachineDialog::set_default_from_sdcard() materials.push_back(fo.type); brands.push_back(fo.brand); } - - //init MaterialItem + + //init MaterialItem MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { int id = iter->first; @@ -3732,7 +3799,7 @@ void SelectMachineDialog::set_default_from_sdcard() m_materialList.clear(); m_filaments.clear(); - + for (auto i = 0; i < m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info.size(); i++) { FilamentInfo fo = m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info[i]; @@ -3900,7 +3967,7 @@ bool SelectMachineDialog::Show(bool show) if (obj_->is_connected()) { obj_->disconnect(); } - + } } } diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index d49f29fd38..168092fb66 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -272,7 +272,8 @@ enum PrintDialogStatus { PrintStatusNotSupportedSendToSDCard, PrintStatusNotSupportedPrintAll, PrintStatusBlankPlate, - PrintStatusUnsupportedPrinter + PrintStatusUnsupportedPrinter, + PrintStatusTimelapseWarning }; std::string get_print_status_info(PrintDialogStatus status); @@ -385,7 +386,7 @@ protected: ScalableBitmap * print_weight{nullptr}; wxStaticBitmap * amsmapping_tip{nullptr}; ScalableBitmap * enable_ams_mapping{nullptr}; - wxStaticBitmap * ams_tip{nullptr}; + wxStaticBitmap * img_ams_tip{nullptr}; wxStaticBitmap * img_ams_backup{nullptr}; ScalableBitmap * enable_ams{nullptr}; @@ -400,7 +401,7 @@ public: void check_fcous_state(wxWindow* window); void popup_filament_backup(); void update_select_layout(MachineObject *obj); - void prepare_mode(); + void prepare_mode(bool refresh_button = true); void sending_mode(); void finish_mode(); void sync_ams_mapping_result(std::vector& result); @@ -443,6 +444,8 @@ public: void update_print_error_info(int code, std::string msg, std::string extra); void set_flow_calibration_state(bool state); bool is_show_timelapse(); + bool has_timelapse_warning(); + void update_timelapse_enable_status(); bool is_same_printer_model(); bool is_blocking_printing(); bool has_tips(MachineObject* obj); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index aa6e3ad0a3..916194443d 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -15,6 +15,9 @@ #include "RecenterDialog.hpp" #include "CalibUtils.hpp" +#include +#include +#include namespace Slic3r { namespace GUI { @@ -30,6 +33,7 @@ static const wxFont SWITCH_FONT = Label::Body_10; /* const values */ static const int bed_temp_range[2] = {20, 120}; static const int nozzle_temp_range[2] = {20, 300}; +static const int nozzle_chamber_range[2] = {20, 60}; /* colors */ static const wxColour STATUS_PANEL_BG = wxColour(238, 238, 238); @@ -83,6 +87,8 @@ static std::vector message_containing_done{ "12FF 8007" }; +static wxImage fail_image; + /* size */ #define PAGE_TITLE_HEIGHT FromDIP(36) @@ -103,12 +109,34 @@ static std::vector message_containing_done{ #define TASK_BUTTON_SIZE2 (wxSize(-1, FromDIP(24))) #define Z_BUTTON_SIZE (wxSize(FromDIP(52), FromDIP(52))) #define MISC_BUTTON_PANEL_SIZE (wxSize(FromDIP(136), FromDIP(55))) -#define MISC_BUTTON_SIZE (wxSize(FromDIP(66), FromDIP(51))) +#define MISC_BUTTON_2FAN_SIZE (wxSize(FromDIP(66), FromDIP(51))) #define MISC_BUTTON_3FAN_SIZE (wxSize(FromDIP(44), FromDIP(51))) #define TEMP_CTRL_MIN_SIZE (wxSize(FromDIP(122), FromDIP(52))) #define AXIS_MIN_SIZE (wxSize(FromDIP(220), FromDIP(220))) #define EXTRUDER_IMAGE_SIZE (wxSize(FromDIP(48), FromDIP(76))) +static void market_model_scoring_page(int design_id) +{ + std::string url; + std::string country_code = GUI::wxGetApp().app_config->get_country_code(); + std::string model_http_url = GUI::wxGetApp().get_model_http_url(country_code); + if (GUI::wxGetApp().getAgent()->get_model_mall_detail_url(&url, std::to_string(design_id)) == 0) { + std::string user_id = GUI::wxGetApp().getAgent()->get_user_id(); + boost::algorithm::replace_first(url, "models", "u/" + user_id + "/rating"); + // Prevent user_id from containing design_id + size_t sign_in = url.find("/rating"); + std::string sub_url = url.substr(0, sign_in + 7); + url.erase(0, sign_in + 7); + boost::algorithm::replace_first(url, std::to_string(design_id), ""); + url = sub_url + url; + try { + if (!url.empty()) { wxLaunchDefaultBrowser(url); } + } catch (...) { + return; + } + } +} + PrintingTaskPanel::PrintingTaskPanel(wxWindow* parent, PrintingTaskType type) : wxPanel(parent, wxID_ANY,wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL) { @@ -121,7 +149,6 @@ PrintingTaskPanel::~PrintingTaskPanel() { } - void PrintingTaskPanel::create_panel(wxWindow* parent) { wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); @@ -357,28 +384,10 @@ void PrintingTaskPanel::create_panel(wxWindow* parent) penel_bottons->SetSizer(bSizer_buttons); penel_bottons->Layout(); - StateColor btn_bg_green(std::pair(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled), std::pair(wxColour(0, 137, 123), StateColor::Pressed), - std::pair(wxColour(38, 166, 154), StateColor::Hovered), std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal)); - StateColor btn_bd_green(std::pair(AMS_CONTROL_WHITE_COLOUR, StateColor::Disabled), std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Enabled)); - - m_button_market_scoring = new Button(parent, _L("Immediately score")); - m_button_market_scoring->SetBackgroundColor(btn_bg_green); - m_button_market_scoring->SetBorderColor(btn_bd_green); - m_button_market_scoring->SetTextColor(wxColour("#FFFFFE")); - m_button_market_scoring->SetSize(wxSize(FromDIP(128), FromDIP(26))); - m_button_market_scoring->SetMinSize(wxSize(-1, FromDIP(26))); - m_button_market_scoring->SetCornerRadius(FromDIP(13)); - - wxBoxSizer *bSizer_market_scoring = new wxBoxSizer(wxHORIZONTAL); - bSizer_market_scoring->Add(m_button_market_scoring); - bSizer_market_scoring->Add(0, 0, 1, wxEXPAND, 0); - m_button_market_scoring->Hide(); - bSizer_subtask_info->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(14)); bSizer_subtask_info->Add(bSizer_task_name, 0, wxEXPAND|wxRIGHT, FromDIP(18)); bSizer_subtask_info->Add(m_staticText_profile_value, 0, wxEXPAND | wxTOP, FromDIP(5)); bSizer_subtask_info->Add(m_printing_stage_value, 0, wxEXPAND | wxTOP, FromDIP(5)); - bSizer_subtask_info->Add(bSizer_market_scoring, 0, wxEXPAND | wxTOP, FromDIP(5)); bSizer_subtask_info->Add(penel_bottons, 0, wxEXPAND | wxTOP, FromDIP(10)); bSizer_subtask_info->Add(m_panel_progress, 0, wxEXPAND|wxRIGHT, FromDIP(25)); @@ -432,6 +441,76 @@ void PrintingTaskPanel::create_panel(wxWindow* parent) sizer->Add(m_panel_error_txt, 0, wxEXPAND | wxALL, 0); sizer->Add(0, FromDIP(12), 0); + m_score_staticline = new wxPanel(parent, wxID_ANY); + m_score_staticline->SetBackgroundColour(wxColour(238, 238, 238)); + m_score_staticline->Layout(); + m_score_staticline->Hide(); + sizer->Add(0, 0, 0, wxTOP, FromDIP(15)); + sizer->Add(m_score_staticline, 0, wxEXPAND | wxALL, FromDIP(10)); + + m_score_subtask_info = new wxPanel(parent, wxID_ANY); + m_score_subtask_info->SetBackgroundColour(*wxWHITE); + + wxBoxSizer * static_score_sizer = new wxBoxSizer(wxVERTICAL); + wxStaticText *static_score_text = new wxStaticText(m_score_subtask_info, wxID_ANY, _L("How do you like this printing file?"), wxDefaultPosition, wxDefaultSize, 0); + static_score_text->Wrap(-1); + static_score_sizer->Add(static_score_text, 1, wxEXPAND | wxALL, FromDIP(10)); + m_has_rated_prompt = new wxStaticText(m_score_subtask_info, wxID_ANY, _L("(The model has already been rated. Your rating will overwrite the previous rating.)"), wxDefaultPosition, wxDefaultSize, 0); + m_has_rated_prompt->Wrap(-1); + m_has_rated_prompt->SetForegroundColour(*wxRED); + m_has_rated_prompt->SetFont(::Label::Body_10); + m_has_rated_prompt->Hide(); + + m_star_count = 0; + wxBoxSizer *static_score_star_sizer = new wxBoxSizer(wxHORIZONTAL); + m_score_star.resize(5); + for (int i = 0; i < m_score_star.size(); ++i) { + m_score_star[i] = new ScalableButton(m_score_subtask_info, wxID_ANY, "score_star_dark", wxEmptyString, wxSize(FromDIP(26), FromDIP(26)), wxDefaultPosition, + wxBU_EXACTFIT | wxNO_BORDER, true, 26); + m_score_star[i]->Bind(wxEVT_LEFT_DOWN, [this, i](auto &e) { + for (int j = 0; j < m_score_star.size(); ++j) { + ScalableBitmap light_star = ScalableBitmap(nullptr, "score_star_light", 26); + m_score_star[j]->SetBitmap(light_star.bmp()); + if (m_score_star[j] == m_score_star[i]) { + m_star_count = j + 1; + break; + } + } + for (int k = m_star_count; k < m_score_star.size(); ++k) { + ScalableBitmap dark_star = ScalableBitmap(nullptr, "score_star_dark", 26); + m_score_star[k]->SetBitmap(dark_star.bmp()); + } + m_star_count_dirty = true; + m_button_market_scoring->Enable(true); + }); + static_score_star_sizer->Add(m_score_star[i], 0, wxEXPAND | wxLEFT, FromDIP(10)); + } + + StateColor btn_bg_green(std::pair(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled), std::pair(wxColour(27, 136, 68), StateColor::Pressed), + std::pair(wxColour(61, 203, 115), StateColor::Hovered), std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal)); + StateColor btn_bd_green(std::pair(AMS_CONTROL_WHITE_COLOUR, StateColor::Disabled), std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Enabled)); + + m_button_market_scoring = new Button(m_score_subtask_info, _L("Rate")); + m_button_market_scoring->SetBackgroundColor(btn_bg_green); + m_button_market_scoring->SetBorderColor(btn_bd_green); + m_button_market_scoring->SetTextColor(wxColour("#FFFFFE")); + m_button_market_scoring->SetSize(wxSize(FromDIP(128), FromDIP(26))); + m_button_market_scoring->SetMinSize(wxSize(-1, FromDIP(26))); + m_button_market_scoring->SetCornerRadius(FromDIP(13)); + m_button_market_scoring->Enable(false); + + static_score_star_sizer->Add(0, 0, 1, wxEXPAND, 0); + static_score_star_sizer->Add(m_button_market_scoring, 0, wxEXPAND | wxRIGHT, FromDIP(10)); + static_score_sizer->Add(static_score_star_sizer, 0, wxEXPAND, FromDIP(10)); + static_score_sizer->Add(m_has_rated_prompt, 1, wxEXPAND | wxALL, FromDIP(10)); + + m_score_subtask_info->SetSizer(static_score_sizer); + m_score_subtask_info->Layout(); + m_score_subtask_info->Hide(); + + sizer->Add(m_score_subtask_info, 0, wxEXPAND | wxALL, 0); + sizer->Add(0, FromDIP(12), 0); + if (m_type == CALIBRATION) { m_panel_printing_title->Hide(); m_bitmap_thumbnail->Hide(); @@ -444,6 +523,17 @@ void PrintingTaskPanel::create_panel(wxWindow* parent) parent->Fit(); } +void PrintingTaskPanel::set_has_reted_text(bool has_rated) +{ + if (has_rated) { + m_has_rated_prompt->Show(); + } else { + m_has_rated_prompt->Hide(); + } + Layout(); + Fit(); +} + void PrintingTaskPanel::msw_rescale() { m_panel_printing_title->SetSize(wxSize(-1, FromDIP(PAGE_TITLE_HEIGHT))); @@ -637,6 +727,33 @@ void PrintingTaskPanel::show_profile_info(bool show, wxString profile /*= wxEmpt } } +void PrintingTaskPanel::market_scoring_show() +{ + m_score_staticline->Show(); + m_score_subtask_info->Show(); +} + +void PrintingTaskPanel::market_scoring_hide() +{ + m_score_staticline->Hide(); + m_score_subtask_info->Hide(); +} + +void PrintingTaskPanel::set_star_count(int star_count) +{ + m_star_count = star_count; + + for (int i = 0; i < m_score_star.size(); ++i) { + if (i < star_count) { + ScalableBitmap light_star = ScalableBitmap(nullptr, "score_star_light", 26); + m_score_star[i]->SetBitmap(light_star.bmp()); + } else { + ScalableBitmap dark_star = ScalableBitmap(nullptr, "score_star_dark", 26); + m_score_star[i]->SetBitmap(dark_star.bmp()); + } + } +} + StatusBasePanel::StatusBasePanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style, const wxString &name) : wxScrolledWindow(parent, id, pos, size, wxHSCROLL | wxVSCROLL) { @@ -783,6 +900,17 @@ wxBoxSizer *StatusBasePanel::create_monitoring_page() m_bmToggleBtn_timelapse->Hide(); bSizer_monitoring_title->Add(m_bmToggleBtn_timelapse, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5)); +#if !BBL_RELEASE_TO_PUBLIC + m_staticText_timelapse->Show(); + m_bmToggleBtn_timelapse->Show(); + m_bmToggleBtn_timelapse->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent &e) { + if (e.IsChecked()) + wxGetApp().getAgent()->start_subscribe("tunnel"); + else + wxGetApp().getAgent()->stop_subscribe("tunnel"); + }); +#endif + //m_bitmap_camera_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_camera , wxDefaultPosition, wxSize(FromDIP(32), FromDIP(18)), 0); //m_bitmap_camera_img->SetMinSize(wxSize(FromDIP(32), FromDIP(18))); //bSizer_monitoring_title->Add(m_bitmap_camera_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5)); @@ -984,15 +1112,17 @@ wxBoxSizer *StatusBasePanel::create_temp_control(wxWindow *parent) sizer->Add(line, 0, wxEXPAND | wxLEFT | wxRIGHT, 12); wxWindowID frame_id = wxWindow::NewControlId(); - m_tempCtrl_frame = new TempInput(parent, frame_id, TEMP_BLANK_STR, TEMP_BLANK_STR, wxString("monitor_frame_temp"), wxString("monitor_frame_temp"), wxDefaultPosition, + m_tempCtrl_chamber = new TempInput(parent, frame_id, TEMP_BLANK_STR, TEMP_BLANK_STR, wxString("monitor_frame_temp"), wxString("monitor_frame_temp"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER); - m_tempCtrl_frame->SetReadOnly(true); - m_tempCtrl_frame->SetMinSize(TEMP_CTRL_MIN_SIZE); - m_tempCtrl_frame->SetBorderWidth(FromDIP(2)); - m_tempCtrl_frame->SetTextColor(tempinput_text_colour); - m_tempCtrl_frame->SetBorderColor(tempinput_border_colour); + m_tempCtrl_chamber->SetReadOnly(true); + m_tempCtrl_chamber->SetMinTemp(nozzle_chamber_range[0]); + m_tempCtrl_chamber->SetMaxTemp(nozzle_chamber_range[1]); + m_tempCtrl_chamber->SetMinSize(TEMP_CTRL_MIN_SIZE); + m_tempCtrl_chamber->SetBorderWidth(FromDIP(2)); + m_tempCtrl_chamber->SetTextColor(tempinput_text_colour); + m_tempCtrl_chamber->SetBorderColor(tempinput_border_colour); - sizer->Add(m_tempCtrl_frame, 0, wxEXPAND | wxALL, 1); + sizer->Add(m_tempCtrl_chamber, 0, wxEXPAND | wxALL, 1); line = new StaticLine(parent); line->SetLineColour(STATIC_BOX_LINE_COL); sizer->Add(line, 0, wxEXPAND | wxLEFT | wxRIGHT, 12); @@ -1012,8 +1142,8 @@ wxBoxSizer *StatusBasePanel::create_misc_control(wxWindow *parent) /* create speed control */ m_switch_speed = new ImageSwitchButton(parent, m_bitmap_speed_active, m_bitmap_speed); m_switch_speed->SetLabels(_L("100%"), _L("100%")); - m_switch_speed->SetMinSize(MISC_BUTTON_SIZE); - m_switch_speed->SetMaxSize(MISC_BUTTON_SIZE); + m_switch_speed->SetMinSize(MISC_BUTTON_2FAN_SIZE); + m_switch_speed->SetMaxSize(MISC_BUTTON_2FAN_SIZE); m_switch_speed->SetPadding(FromDIP(3)); m_switch_speed->SetBorderWidth(FromDIP(2)); m_switch_speed->SetFont(Label::Head_13); @@ -1029,8 +1159,8 @@ wxBoxSizer *StatusBasePanel::create_misc_control(wxWindow *parent) /* create lamp control */ m_switch_lamp = new ImageSwitchButton(parent, m_bitmap_lamp_on, m_bitmap_lamp_off); m_switch_lamp->SetLabels(_L("Lamp"), _L("Lamp")); - m_switch_lamp->SetMinSize(MISC_BUTTON_SIZE); - m_switch_lamp->SetMaxSize(MISC_BUTTON_SIZE); + m_switch_lamp->SetMinSize(MISC_BUTTON_2FAN_SIZE); + m_switch_lamp->SetMaxSize(MISC_BUTTON_2FAN_SIZE); m_switch_lamp->SetPadding(FromDIP(3)); m_switch_lamp->SetBorderWidth(FromDIP(2)); m_switch_lamp->SetFont(Label::Head_13); @@ -1109,10 +1239,14 @@ wxBoxSizer *StatusBasePanel::create_misc_control(wxWindow *parent) m_fan_panel->SetBackgroundColor(parent->GetBackgroundColour()); }); + m_switch_block_fan = new wxPanel(m_fan_panel); + m_switch_block_fan->SetBackgroundColour(parent->GetBackgroundColour()); + fan_line_sizer->Add(0, 0, 0, wxLEFT, FromDIP(2)); fan_line_sizer->Add(m_switch_nozzle_fan, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM , FromDIP(2)); fan_line_sizer->Add(m_switch_printing_fan, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, FromDIP(2)); fan_line_sizer->Add(m_switch_cham_fan, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM , FromDIP(2)); + fan_line_sizer->Add(m_switch_block_fan, 1, wxEXPAND | wxTOP | wxBOTTOM , FromDIP(2)); fan_line_sizer->Add(0, 0, 0, wxLEFT, FromDIP(2)); m_fan_panel->SetSizer(fan_line_sizer); @@ -1131,12 +1265,12 @@ void StatusBasePanel::reset_temp_misc_control() m_tempCtrl_nozzle->GetTextCtrl()->SetValue(TEMP_BLANK_STR); m_tempCtrl_bed->SetLabel(TEMP_BLANK_STR); m_tempCtrl_bed->GetTextCtrl()->SetValue(TEMP_BLANK_STR); - m_tempCtrl_frame->SetLabel(TEMP_BLANK_STR); - m_tempCtrl_frame->GetTextCtrl()->SetValue(TEMP_BLANK_STR); + m_tempCtrl_chamber->SetLabel(TEMP_BLANK_STR); + m_tempCtrl_chamber->GetTextCtrl()->SetValue(TEMP_BLANK_STR); m_button_unload->Show(); m_tempCtrl_nozzle->Enable(true); - m_tempCtrl_frame->Enable(true); + m_tempCtrl_chamber->Enable(true); m_tempCtrl_bed->Enable(true); // reset misc control @@ -1351,11 +1485,11 @@ wxBoxSizer *StatusBasePanel::create_ams_group(wxWindow *parent) return sizer; } -void StatusBasePanel::show_ams_group(bool show, bool support_virtual_tray, bool support_extrustion_cali) +void StatusBasePanel::show_ams_group(bool show) { m_ams_control->Show(true); m_ams_control_box->Show(true); - m_ams_control->show_noams_mode(show, support_virtual_tray, support_extrustion_cali); + m_ams_control->show_noams_mode(); if (m_show_ams_group != show) { Fit(); } @@ -1459,6 +1593,8 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co m_buttons.push_back(m_bpButton_e_down_10); obj = nullptr; + m_score_data = new ScoreData; + m_score_data->rating_id = -1; /* set default values */ m_switch_lamp->SetValue(false); m_switch_printing_fan->SetValue(false); @@ -1478,6 +1614,8 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co on_set_bed_temp(); } else if (id == m_tempCtrl_nozzle->GetType()) { on_set_nozzle_temp(); + } else if (id == m_tempCtrl_chamber->GetType()) { + on_set_chamber_temp(); } }); @@ -1495,10 +1633,12 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co m_tempCtrl_bed->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_bed_temp_set_focus), NULL, this); m_tempCtrl_nozzle->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_kill_focus), NULL, this); m_tempCtrl_nozzle->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_set_focus), NULL, this); + m_tempCtrl_chamber->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(StatusPanel::on_cham_temp_kill_focus), NULL, this); + m_tempCtrl_chamber->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_cham_temp_set_focus), NULL, this); m_switch_lamp->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_lamp_switch), NULL, this); m_switch_nozzle_fan->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_nozzle_fan_switch), NULL, this); // TODO m_switch_printing_fan->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_nozzle_fan_switch), NULL, this); - m_switch_cham_fan->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_nozzle_fan_switch), NULL, this); + m_switch_cham_fan->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_nozzle_fan_switch), NULL, this); m_bpButton_xy->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_axis_ctrl_xy), NULL, this); // TODO m_bpButton_z_10->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_axis_ctrl_z_up_10), NULL, this); m_bpButton_z_1->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_axis_ctrl_z_up_1), NULL, this); @@ -1569,6 +1709,10 @@ StatusPanel::~StatusPanel() if (sdcard_hint_dlg != nullptr) delete sdcard_hint_dlg; + + if (m_score_data != nullptr) { + delete m_score_data; + } } void StatusPanel::init_scaled_buttons() @@ -1591,8 +1735,65 @@ void StatusPanel::init_scaled_buttons() } void StatusPanel::on_market_scoring(wxCommandEvent &event) { - if (obj && obj->get_modeltask() && obj->get_modeltask()->design_id > 0) { - market_model_scoring_page(obj->get_modeltask()->design_id); + if (obj && obj->get_modeltask() && obj->get_modeltask()->design_id > 0 && m_rating_result.contains("id")) { // model is mall model and has rating_id + + if (m_score_data && m_score_data->rating_id == m_rating_result["id"].get()) { // current score data for model is same as mall model + ScoreDialog m_score_dlg(this, m_score_data); + int ret = m_score_dlg.ShowModal(); + + if (ret == wxID_OK) { + m_score_data->rating_id = -1; + m_project_task_panel->set_star_count_dirty(false); + m_print_finish = false; + return; + } + if (m_score_data != nullptr) { + delete m_score_data; + m_score_data = nullptr; + } + m_score_data = new ScoreData(m_score_dlg.get_score_data()); // when user do not submit score, store the data for next opening the score dialog + m_project_task_panel->set_star_count(m_score_data->star_count); + } else { + //to do: if user has rated the model, show the comment on the dialog + int star_count = 0; + if (m_rating_result.contains("content")) + star_count = m_project_task_panel->get_star_count_dirty() ? m_project_task_panel->get_star_count() : m_rating_result["score"].get(); + bool success_print = true; + if (m_rating_result.contains("successPrinted")) + success_print = m_rating_result["successPrinted"].get(); + ScoreDialog m_score_dlg(this, obj->get_modeltask()->design_id, obj->get_modeltask()->model_id, obj->get_modeltask()->profile_id, + m_rating_result["id"].get(), success_print, star_count); + + if (m_rating_result.contains("content")) { + std::string comment = m_rating_result["content"].get(); + if (!comment.empty()) { + m_score_dlg.set_comment(comment); + } + } + + if (m_rating_result.contains("images")) { + std::vector images_json_array; + images_json_array = m_rating_result["images"].get>(); + m_score_dlg.set_cloud_bitmap(images_json_array); + } + + int ret = m_score_dlg.ShowModal(); + + if (ret == wxID_OK) { + m_score_data->rating_id = -1; + m_project_task_panel->set_star_count_dirty(false); + m_print_finish = false; + return; + } + if (m_score_data != nullptr) { + delete m_score_data; + m_score_data = nullptr; + } + m_score_data = new ScoreData(m_score_dlg.get_score_data()); + m_project_task_panel->set_star_count(m_score_data->star_count); + } + + } } @@ -1696,6 +1897,7 @@ bool StatusPanel::is_task_changed(MachineObject* obj) last_subtask = obj->subtask_; last_profile_id = obj->profile_id_; last_task_id = obj->task_id_; + request_model_info_flag = false; return true; } return false; @@ -1709,6 +1911,14 @@ void StatusPanel::update(MachineObject *obj) update_subtask(obj); m_project_task_panel->Thaw(); +#if !BBL_RELEASE_TO_PUBLIC + m_staticText_timelapse + ->SetLabel(obj->is_lan_mode_printer() ? "Local Mqtt" : obj->is_tunnel_mqtt ? "Tunnel Mqtt" : "Cloud Mqtt"); + m_bmToggleBtn_timelapse + ->Enable(!obj->is_lan_mode_printer()); + m_bmToggleBtn_timelapse + ->SetValue(obj->is_tunnel_mqtt); +#endif m_machine_ctrl_panel->Freeze(); @@ -1725,11 +1935,9 @@ void StatusPanel::update(MachineObject *obj) if (obj) { // update extrusion calibration - if (obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI)) { - if (m_extrusion_cali_dlg) { - m_extrusion_cali_dlg->update_machine_obj(obj); - m_extrusion_cali_dlg->update(); - } + if (m_extrusion_cali_dlg) { + m_extrusion_cali_dlg->update_machine_obj(obj); + m_extrusion_cali_dlg->update(); } // update calibration status @@ -1747,23 +1955,30 @@ void StatusPanel::update(MachineObject *obj) || obj->is_function_supported(PrinterFunction::FUNC_BUILDPLATE_MARKER_DETECT) || obj->is_function_supported(PrinterFunction::FUNC_AUTO_RECOVERY_STEP_LOSS)) { m_options_btn->Show(); - if (print_options_dlg == nullptr) { - print_options_dlg = new PrintOptionsDialog(this); - print_options_dlg->update_machine_obj(obj); - } else { + if (print_options_dlg) { print_options_dlg->update_machine_obj(obj); + print_options_dlg->update_options(obj); } - print_options_dlg->update_options(obj); } else { m_options_btn->Hide(); } + //support edit chamber temp if (obj->is_function_supported(PrinterFunction::FUNC_CHAMBER_TEMP)) { - m_tempCtrl_frame->Enable(); + m_tempCtrl_chamber->SetReadOnly(false); + m_tempCtrl_chamber->Enable(); } else { - m_tempCtrl_frame->SetLabel(TEMP_BLANK_STR); - m_tempCtrl_frame->GetTextCtrl()->SetValue(TEMP_BLANK_STR); - m_tempCtrl_frame->Disable(); + m_tempCtrl_chamber->SetReadOnly(true); + + if (obj->get_printer_series() == PrinterSeries::SERIES_X1) { + m_tempCtrl_chamber->SetTagTemp(TEMP_BLANK_STR); + }if (obj->get_printer_series() == PrinterSeries::SERIES_P1P) + { + m_tempCtrl_chamber->SetLabel(TEMP_BLANK_STR); + m_tempCtrl_chamber->GetTextCtrl()->SetValue(TEMP_BLANK_STR); + } + + m_tempCtrl_chamber->Disable(); } if (!obj->dev_connection_type.empty()) { @@ -1771,33 +1986,11 @@ void StatusPanel::update(MachineObject *obj) if (iter_connect_type != m_print_connect_types.end()) { if (iter_connect_type->second != obj->dev_connection_type) { - //lan = > cloud if (iter_connect_type->second == "lan" && obj->dev_connection_type == "cloud") { - /*wxString txt = _L("Disconnected from printer [%s] due to LAN mode disabled.Please reconnect the printer by logging in with your user account."); - wxString msg = wxString::Format(txt, obj->dev_name); - if (!m_show_mode_changed) { - m_show_mode_changed = true; - MessageDialog msg_wingow(nullptr, msg, wxEmptyString, wxICON_WARNING | wxOK); - msg_wingow.SetSize(wxSize(FromDIP(600), FromDIP(200))); - if (msg_wingow.ShowModal() == wxID_OK || msg_wingow.ShowModal() == wxID_CLOSE) { - m_show_mode_changed = false; - } - }*/ m_print_connect_types[obj->dev_id] = obj->dev_connection_type; } - //cloud = > lan if (iter_connect_type->second == "cloud" && obj->dev_connection_type == "lan") { - /*wxString txt = _L("Disconnected from printer [%s] due to LAN mode enabled.Please reconnect the printer by inputting Access Code which can be gotten from printer screen."); - wxString msg = wxString::Format(txt, obj->dev_name); - if (!m_show_mode_changed) { - m_show_mode_changed = true; - MessageDialog msg_wingow(nullptr, msg, wxEmptyString, wxICON_WARNING | wxOK); - msg_wingow.SetSize(wxSize(FromDIP(600), FromDIP(200))); - if (msg_wingow.ShowModal() == wxID_OK || msg_wingow.ShowModal() == wxID_CLOSE) { - m_show_mode_changed = false; - } - }*/ m_print_connect_types[obj->dev_id] = obj->dev_connection_type; } } @@ -1819,28 +2012,6 @@ void StatusPanel::show_recenter_dialog() { obj->command_go_home(); } -void StatusPanel::market_model_scoring_page(int design_id) -{ - std::string url; - std::string country_code = GUI::wxGetApp().app_config->get_country_code(); - std::string model_http_url = GUI::wxGetApp().get_model_http_url(country_code); - if (GUI::wxGetApp().getAgent()->get_model_mall_detail_url(&url, std::to_string(design_id)) == 0) { - std::string user_id = GUI::wxGetApp().getAgent()->get_user_id(); - boost::algorithm::replace_first(url, "models", "u/" + user_id + "/rating"); - // Prevent user_id from containing design_id - size_t sign_in = url.find("/rating"); - std::string sub_url = url.substr(0, sign_in + 7); - url.erase(0, sign_in + 7); - boost::algorithm::replace_first(url, std::to_string(design_id), ""); - url = sub_url + url; - try { - if (!url.empty()) { wxLaunchDefaultBrowser(url); } - } catch (...) { - return; - } - } -} - void StatusPanel::show_error_message(MachineObject* obj, wxString msg, std::string print_error_str) { if (msg.IsEmpty()) { @@ -1865,13 +2036,11 @@ void StatusPanel::show_error_message(MachineObject* obj, wxString msg, std::stri m_print_error_dlg->update_title_style(_L("Warning"), SecondaryCheckDialog::ButtonStyle::ONLY_CONFIRM, this); } m_print_error_dlg->update_text(msg); - m_print_error_dlg->Bind(EVT_SECONDARY_CHECK_CONFIRM, [this, obj](wxCommandEvent& e) { if (obj) { obj->command_clean_print_error(obj->subtask_id_, obj->print_error); } }); - m_print_error_dlg->Bind(EVT_SECONDARY_CHECK_RETRY, [this, obj](wxCommandEvent& e) { if (m_ams_control) { @@ -1967,7 +2136,7 @@ void StatusPanel::show_printing_status(bool ctrl_area, bool temp_area) if (!temp_area) { m_tempCtrl_nozzle->Enable(false); m_tempCtrl_bed->Enable(false); - m_tempCtrl_frame->Enable(false); + m_tempCtrl_chamber->Enable(false); m_switch_speed->Enable(false); m_switch_speed->SetValue(false); m_switch_lamp->Enable(false); @@ -1977,7 +2146,7 @@ void StatusPanel::show_printing_status(bool ctrl_area, bool temp_area) } else { m_tempCtrl_nozzle->Enable(); m_tempCtrl_bed->Enable(); - m_tempCtrl_frame->Enable(); + m_tempCtrl_chamber->Enable(); m_switch_speed->Enable(); m_switch_speed->SetValue(true); m_switch_lamp->Enable(); @@ -2008,6 +2177,13 @@ void StatusPanel::update_temp_ctrl(MachineObject *obj) } m_tempCtrl_nozzle->SetCurrTemp((int) obj->nozzle_temp); + int nozzle_max_temp = 0; + if (DeviceManager::get_nozzle_max_temperature(obj->printer_type, nozzle_max_temp)) { + if (m_tempCtrl_nozzle) m_tempCtrl_nozzle->SetMaxTemp(nozzle_max_temp); + } + else { + if (m_tempCtrl_nozzle) m_tempCtrl_nozzle->SetMaxTemp(nozzle_temp_range[1]); + } if (m_temp_nozzle_timeout > 0) { m_temp_nozzle_timeout--; @@ -2021,8 +2197,21 @@ void StatusPanel::update_temp_ctrl(MachineObject *obj) m_tempCtrl_nozzle->SetIconNormal(); } - m_tempCtrl_frame->SetCurrTemp(obj->chamber_temp); - m_tempCtrl_frame->SetTagTemp(obj->chamber_temp); + m_tempCtrl_chamber->SetCurrTemp(obj->chamber_temp); + // update temprature if not input temp target + if (m_temp_chamber_timeout > 0) { + m_temp_chamber_timeout--; + } + else { + if (!cham_temp_input) { m_tempCtrl_chamber->SetTagTemp(obj->chamber_temp_target); } + } + + if ((obj->chamber_temp_target - obj->chamber_temp) >= TEMP_THRESHOLD_VAL) { + m_tempCtrl_chamber->SetIconActive(); + } + else { + m_tempCtrl_chamber->SetIconNormal(); + } } void StatusPanel::update_misc_ctrl(MachineObject *obj) @@ -2041,10 +2230,18 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) } } + if (obj->is_core_xy()) { + m_staticText_z_tip->SetLabel(_L("Bed")); + } else { + m_staticText_z_tip->SetLabel("Z"); + } + // update extruder icon update_extruder_status(obj); + bool is_suppt_aux_fun = obj->is_function_supported(PrinterFunction::FUNC_AUX_FAN); bool is_suppt_cham_fun = obj->is_function_supported(PrinterFunction::FUNC_CHAMBER_FAN); + //update cham fan if (m_current_support_cham_fan != is_suppt_cham_fun) { if (is_suppt_cham_fun) { @@ -2056,15 +2253,35 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) } else { m_switch_cham_fan->Hide(); - m_switch_nozzle_fan->SetMinSize(MISC_BUTTON_SIZE); - m_switch_nozzle_fan->SetMaxSize(MISC_BUTTON_SIZE); - m_switch_printing_fan->SetMinSize(MISC_BUTTON_SIZE); - m_switch_printing_fan->SetMaxSize(MISC_BUTTON_SIZE); + m_switch_nozzle_fan->SetMinSize(MISC_BUTTON_2FAN_SIZE); + m_switch_nozzle_fan->SetMaxSize(MISC_BUTTON_2FAN_SIZE); + m_switch_printing_fan->SetMinSize(MISC_BUTTON_2FAN_SIZE); + m_switch_printing_fan->SetMaxSize(MISC_BUTTON_2FAN_SIZE); } m_misc_ctrl_sizer->Layout(); } + if (m_current_support_aux_fan != is_suppt_aux_fun) { + if (is_suppt_aux_fun) { + m_switch_printing_fan->Show(); + m_switch_nozzle_fan->SetMinSize(MISC_BUTTON_3FAN_SIZE); + m_switch_nozzle_fan->SetMaxSize(MISC_BUTTON_3FAN_SIZE); + m_switch_cham_fan->SetMinSize(MISC_BUTTON_3FAN_SIZE); + m_switch_cham_fan->SetMaxSize(MISC_BUTTON_3FAN_SIZE); + } + else { + m_switch_printing_fan->Hide(); + m_switch_nozzle_fan->SetMinSize(MISC_BUTTON_2FAN_SIZE); + m_switch_nozzle_fan->SetMaxSize(MISC_BUTTON_2FAN_SIZE); + m_switch_cham_fan->SetMinSize(MISC_BUTTON_2FAN_SIZE); + m_switch_cham_fan->SetMaxSize(MISC_BUTTON_2FAN_SIZE); + } + + m_misc_ctrl_sizer->Layout(); + } + + // nozzle fan if (m_switch_nozzle_fan_timeout > 0) { m_switch_nozzle_fan_timeout--; @@ -2120,7 +2337,8 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) m_switch_speed->SetLabels(text_speed, text_speed); } - m_current_support_cham_fan = is_suppt_cham_fun?true:false; + m_current_support_aux_fan = is_suppt_aux_fun; + m_current_support_cham_fan = is_suppt_cham_fun; } void StatusPanel::update_extruder_status(MachineObject* obj) @@ -2163,9 +2381,9 @@ void StatusPanel::update_ams(MachineObject *obj) CalibUtils::emit_get_PA_calib_info(obj->nozzle_diameter, ""); } - bool is_support_extrusion_cali = obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI); - bool is_support_virtual_tray = obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_TYAY); + bool is_support_virtual_tray = obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_TYAY); bool is_support_filament_backup = obj->is_function_supported(PrinterFunction::FUNC_FILAMENT_BACKUP); + AMSModel ams_mode = AMSModel::GENERIC_AMS; if (!obj || !obj->is_connected() @@ -2181,13 +2399,20 @@ void StatusPanel::update_ams(MachineObject *obj) BOOST_LOG_TRIVIAL(trace) << "machine object" << obj->dev_name << " was disconnected, set show_ams_group is false"; } - show_ams_group(false, obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_TYAY), is_support_extrusion_cali); + + if (obj->printer_type == "N1") { ams_mode = AMSModel::EXTRA_AMS; } + m_ams_control->SetAmsModel(AMSModel::NO_AMS, ams_mode); + + show_ams_group(false); m_ams_control->show_auto_refill(false); } else { - show_ams_group(true, obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_TYAY), is_support_extrusion_cali); + if (obj->printer_type == "N1") { ams_mode = AMSModel::EXTRA_AMS; } + m_ams_control->SetAmsModel(ams_mode, ams_mode); - if (!obj->m_is_support_show_bak || !is_support_filament_backup || !obj->ams_support_auto_switch_filament_flag) { + show_ams_group(true); + + if (!is_support_filament_backup || !obj->ams_support_auto_switch_filament_flag) { m_ams_control->show_auto_refill(false); } else { @@ -2219,7 +2444,7 @@ void StatusPanel::update_ams(MachineObject *obj) //} // must select a current can - m_ams_control->UpdateAms(ams_info, false, is_support_extrusion_cali); + m_ams_control->UpdateAms(ams_info, false); last_tray_exist_bits = obj->tray_exist_bits; last_ams_exist_bits = obj->ams_exist_bits; @@ -2253,13 +2478,15 @@ void StatusPanel::update_ams(MachineObject *obj) // set segment 3 if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_ID)) { - m_ams_control->SetExtruder(obj->is_filament_at_extruder(), true, obj->vt_tray.get_color()); + m_ams_control->SetExtruder(obj->is_filament_at_extruder(), true, obj->m_ams_id, obj->vt_tray.get_color()); } else { - m_ams_control->SetExtruder(obj->is_filament_at_extruder(), false, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id)); + m_ams_control->SetExtruder(obj->is_filament_at_extruder(), false, obj->m_ams_id, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id)); } if (obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) { + update_filament_step(); + if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_ID) && (obj->m_tray_now != std::to_string(VIRTUAL_TRAY_ID) || obj->m_tray_now != "255")) { // wait to heat hotend if (obj->ams_status_sub == 0x02) { @@ -2330,6 +2557,14 @@ void StatusPanel::update_ams(MachineObject *obj) else { m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD); } + } + else if (obj->ams_status_sub == 0x08) { + if (!obj->is_ams_unload()) { + m_ams_control->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_LOAD); + } + else { + m_ams_control->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_UNLOAD); + } } else { m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_UNLOAD); } @@ -2387,10 +2622,10 @@ void StatusPanel::update_ams(MachineObject *obj) is_curr_tray_selected = true; } - update_ams_control_state(is_support_extrusion_cali, is_curr_tray_selected); + update_ams_control_state(is_curr_tray_selected); } -void StatusPanel::update_ams_control_state(bool is_support_virtual_tray, bool is_curr_tray_selected) +void StatusPanel::update_ams_control_state(bool is_curr_tray_selected) { // set default value to true bool enable[ACTION_BTN_COUNT]; @@ -2398,21 +2633,18 @@ void StatusPanel::update_ams_control_state(bool is_support_virtual_tray, bool is enable[ACTION_BTN_LOAD] = true; enable[ACTION_BTN_UNLOAD] = true; - if (!is_support_virtual_tray) { - enable[ACTION_BTN_CALI] = false; - } - else { - if (obj->is_in_printing()) { - if (obj->is_in_extrusion_cali()) { - enable[ACTION_BTN_LOAD] = false; - enable[ACTION_BTN_UNLOAD] = false; - enable[ACTION_BTN_CALI] = true; - } else { - enable[ACTION_BTN_CALI] = false; - } - } else { + if (obj->is_in_printing()) { + if (obj->is_in_extrusion_cali()) { + enable[ACTION_BTN_LOAD] = false; + enable[ACTION_BTN_UNLOAD] = false; enable[ACTION_BTN_CALI] = true; } + else { + enable[ACTION_BTN_CALI] = false; + } + } + else { + enable[ACTION_BTN_CALI] = true; } if (obj->is_in_printing() && !obj->can_resume()) { @@ -2492,18 +2724,24 @@ void StatusPanel::update_basic_print_data(bool def) void StatusPanel::update_model_info() { + auto get_subtask_fn = [this](BBLModelTask* subtask) { + if (obj && obj->subtask_id_ == subtask->task_id) { + obj->set_modeltask(subtask); + } + }; + + if (wxGetApp().getAgent() && obj) { BBLSubTask* curr_task = obj->get_subtask(); if (curr_task) { BBLModelTask* curr_model_task = obj->get_modeltask(); - if (!curr_model_task) { + if (!curr_model_task && !request_model_info_flag) { curr_model_task = new BBLModelTask(); curr_model_task->task_id = curr_task->task_id; - int result = wxGetApp().getAgent()->get_subtask(curr_model_task); - - if (result > -1) { - obj->set_modeltask(curr_model_task); + request_model_info_flag = true; + if (!curr_model_task->task_id.empty() && curr_model_task->task_id.compare("0") != 0) { + wxGetApp().getAgent()->get_subtask(curr_model_task, get_subtask_fn); } } } @@ -2528,7 +2766,7 @@ void StatusPanel::update_subtask(MachineObject *obj) reset_printing_values(); } else if (obj->is_in_printing() || obj->print_status == "FINISH") { if (obj->is_in_prepare() || obj->print_status == "SLICING") { - m_project_task_panel->get_market_scoring_button()->Hide(); + m_project_task_panel->market_scoring_hide(); m_project_task_panel->enable_abort_button(false); m_project_task_panel->enable_pause_resume_button(false, "pause_disable"); wxString prepare_text; @@ -2577,33 +2815,61 @@ void StatusPanel::update_subtask(MachineObject *obj) m_project_task_panel->enable_abort_button(false); m_project_task_panel->enable_pause_resume_button(false, "resume_disable"); if (wxGetApp().has_model_mall()) { + //determine whether the model is mall model bool is_market_task = obj->get_modeltask() && obj->get_modeltask()->design_id > 0; if (is_market_task) { - m_project_task_panel->get_market_scoring_button()->Show(); - BOOST_LOG_TRIVIAL(info) << "SHOW_SCORE_BTU: design_id [" << obj->get_modeltask()->design_id << "] print_finish [" << m_print_finish << "]"; - if (!m_print_finish && IsShownOnScreen()) { - m_print_finish = true; - int job_id = obj->get_modeltask()->job_id; - if (wxGetApp().app_config->get("not_show_score_dialog") != "1" && rated_model_id.find(job_id) == rated_model_id.end()) { - MessageDialog dlg(this, _L("Please give a score for your favorite Bambu Market model."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Score"), - wxYES_NO | wxYES_DEFAULT | wxCENTRE); - dlg.show_dsa_button(); - int old_design_id = obj->get_modeltask()->design_id; - auto res = dlg.ShowModal(); - if (dlg.get_checkbox_state()) { wxGetApp().app_config->set("not_show_score_dialog", "1"); } - if (res == wxID_YES) { market_model_scoring_page(old_design_id); } - rated_model_id.insert(job_id); - BOOST_LOG_TRIVIAL(info) << "SHOW_SCORE_DLG: design_id [" << old_design_id << "] print_finish [" << m_print_finish << "] not_show [" - << wxGetApp().app_config->get("not_show_score_dialog") << "] job_id [" << job_id << "]"; - } + NetworkAgent *agent = wxGetApp().getAgent(); + if (agent && IsShownOnScreen() && !m_print_finish) { + + int job_id = obj->get_modeltask()->job_id; + boost::thread([this, agent, job_id] { + try { + std::string rating_result; + unsigned int http_code = 0; + std::string http_error; + int rating_id = -1; + int res = agent->get_model_mall_rating_result(job_id, rating_result, http_code, http_error); + if (0 == res) { + m_rating_result = json::parse(rating_result); + if (m_rating_result.contains("id")) { + rating_id = m_rating_result["id"].get(); + m_project_task_panel->market_scoring_show(); + BOOST_LOG_TRIVIAL(info) << "show scoring page"; + bool is_update = model_score_is_update(); + // this mall model has score, user do not click star, Initialize scores only once per print startup program + if (is_update || + (!m_project_task_panel->get_star_count_dirty() && !m_print_finish && IsShownOnScreen() && m_rating_result.contains("score"))) { + int star_count = m_rating_result["score"].get(); + m_project_task_panel->set_star_count(star_count); + BOOST_LOG_TRIVIAL(info) << "Initialize scores"; + m_project_task_panel->set_star_count_dirty(true); + m_print_finish = true; + if (0 != star_count) { + m_project_task_panel->get_market_scoring_button()->Enable(true); + m_project_task_panel->set_has_reted_text(true); + } else { + m_project_task_panel->set_has_reted_text(false); + } + } + } + } + } catch (...) { + m_project_task_panel->market_scoring_hide(); + BOOST_LOG_TRIVIAL(info) << "get mall model rating id failed and hide scoring page"; + } + }); } - } else { - m_project_task_panel->get_market_scoring_button()->Hide(); + BOOST_LOG_TRIVIAL(info) << "SHOW_SCORE_BTU: design_id [" << obj->get_modeltask()->design_id << "] print_finish [" << m_print_finish << "]"; + + } else { // model is not mall model. hide scoring page + m_project_task_panel->market_scoring_hide(); } + } else { // have no model mall, hide scoring page + m_project_task_panel->market_scoring_hide(); } - } else { + } else { // model printing is not finished, hide scoring page m_project_task_panel->enable_abort_button(true); - m_project_task_panel->get_market_scoring_button()->Hide(); + m_project_task_panel->market_scoring_hide(); if (m_print_finish) { m_print_finish = false; } @@ -2647,6 +2913,21 @@ void StatusPanel::update_subtask(MachineObject *obj) this->Layout(); } +bool StatusPanel::model_score_is_update() +{ + try { + if (m_last_result["id"] != m_rating_result["id"] || m_last_result["content"] != m_rating_result["content"] || m_last_result["images"] != m_rating_result["images"]) { + m_last_result = m_rating_result; + return true; + } + } catch (...) { + BOOST_LOG_TRIVIAL(info) << "m_last_result first initial"; + m_last_result = m_rating_result; + } + + return false; +} + void StatusPanel::update_cloud_subtask(MachineObject *obj) { if (!obj) return; @@ -2708,7 +2989,7 @@ void StatusPanel::reset_printing_values() m_project_task_panel->update_progress_percent(NA_STR, wxEmptyString); - m_project_task_panel->get_market_scoring_button()->Hide(); + m_project_task_panel->market_scoring_hide(); update_basic_print_data(false); m_project_task_panel->update_left_time(NA_STR); m_project_task_panel->update_layers_num(true, wxString::Format(_L("Layer: %s"), NA_STR)); @@ -2887,53 +3168,64 @@ void StatusPanel::on_set_nozzle_temp() } } +void StatusPanel::on_set_chamber_temp() +{ + wxString str = m_tempCtrl_chamber->GetTextCtrl()->GetValue(); + try { + long chamber_temp; + if (str.ToLong(&chamber_temp) && obj) { + set_hold_count(m_temp_chamber_timeout); + obj->command_set_chamber(chamber_temp); + } + } + catch (...) { + ; + } +} + void StatusPanel::on_ams_load(SimpleEvent &event) { BOOST_LOG_TRIVIAL(info) << "on_ams_load"; on_ams_load_curr(); } +void StatusPanel::update_filament_step() +{ + m_ams_control->UpdateStepCtrl(obj->is_filament_at_extruder()); + if (!obj->is_filament_at_extruder()) { + m_is_load_with_temp = true; + } + else { + m_is_load_with_temp = false; + } +} + void StatusPanel::on_ams_load_curr() { if (obj) { std::string curr_ams_id = m_ams_control->GetCurentAms(); std::string curr_can_id = m_ams_control->GetCurrentCan(curr_ams_id); - m_ams_control->UpdateStepCtrl(obj->is_filament_at_extruder()); - if(!obj->is_filament_at_extruder()){ - m_is_load_with_temp = true; - }else{ - m_is_load_with_temp = false; - } - + update_filament_step(); //virtual tray if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_ID)) == 0) { - /*if (con_load_dlg == nullptr) { - con_load_dlg = new SecondaryCheckDialog(this->GetParent(), wxID_ANY, _L("Confirm")); - con_load_dlg->Bind(EVT_SECONDARY_CHECK_CONFIRM, [this](wxCommandEvent& e) {*/ - int old_temp = -1; - int new_temp = -1; - AmsTray* curr_tray = &obj->vt_tray; + int old_temp = -1; + int new_temp = -1; + AmsTray* curr_tray = &obj->vt_tray; - if (!curr_tray) return; + if (!curr_tray) return; - try { - if (!curr_tray->nozzle_temp_max.empty() && !curr_tray->nozzle_temp_min.empty()) - old_temp = (atoi(curr_tray->nozzle_temp_min.c_str()) + atoi(curr_tray->nozzle_temp_max.c_str())) / 2; - if (!obj->vt_tray.nozzle_temp_max.empty() && !obj->vt_tray.nozzle_temp_min.empty()) - new_temp = (atoi(obj->vt_tray.nozzle_temp_min.c_str()) + atoi(obj->vt_tray.nozzle_temp_max.c_str())) / 2; - } - catch (...) { - ; - } - obj->command_ams_switch(VIRTUAL_TRAY_ID, old_temp, new_temp); - /*} - ); + try { + if (!curr_tray->nozzle_temp_max.empty() && !curr_tray->nozzle_temp_min.empty()) + old_temp = (atoi(curr_tray->nozzle_temp_min.c_str()) + atoi(curr_tray->nozzle_temp_max.c_str())) / 2; + if (!obj->vt_tray.nozzle_temp_max.empty() && !obj->vt_tray.nozzle_temp_min.empty()) + new_temp = (atoi(obj->vt_tray.nozzle_temp_min.c_str()) + atoi(obj->vt_tray.nozzle_temp_max.c_str())) / 2; } - con_load_dlg->update_text(_L("Please confirm the filament is ready?")); - con_load_dlg->on_show();*/ - return; + catch (...) { + ; + } + obj->command_ams_switch(VIRTUAL_TRAY_ID, old_temp, new_temp); } std::map::iterator it = obj->amsList.find(curr_ams_id); @@ -2990,6 +3282,7 @@ void StatusPanel::on_ams_setting_click(SimpleEvent &event) if (obj) { m_ams_setting_dlg->update_insert_material_read_mode(obj->ams_insert_flag); m_ams_setting_dlg->update_starting_read_mode(obj->ams_power_on_flag); + m_ams_setting_dlg->update_image(obj->printer_type == "N1"?"generic":"f1"); std::string ams_id = m_ams_control->GetCurentShowAms(); if (obj->amsList.size() == 0) { /* wxString txt = _L("AMS settings are not supported for external spool"); @@ -3247,7 +3540,6 @@ void StatusPanel::on_ams_selected(wxCommandEvent &event) } catch (...) { ; } - //update_ams_control_state(curr_ams_id, obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI)); } } } @@ -3299,6 +3591,18 @@ void StatusPanel::on_fan_changed(wxCommandEvent& event) } } +void StatusPanel::on_cham_temp_kill_focus(wxFocusEvent& event) +{ + event.Skip(); + cham_temp_input = false; +} + +void StatusPanel::on_cham_temp_set_focus(wxFocusEvent& event) +{ + event.Skip(); + cham_temp_input = true; +} + void StatusPanel::on_bed_temp_kill_focus(wxFocusEvent &event) { event.Skip(); @@ -3417,8 +3721,8 @@ void StatusPanel::on_nozzle_fan_switch(wxCommandEvent &event) m_fan_control_popup = new FanControlPopup(this); if (obj) { - bool is_suppt_cham_fun = obj->is_function_supported(PrinterFunction::FUNC_CHAMBER_FAN); - m_fan_control_popup->update_show_mode(is_suppt_cham_fun); + m_fan_control_popup->show_cham_fan(obj->is_function_supported(PrinterFunction::FUNC_CHAMBER_FAN)); + m_fan_control_popup->show_aux_fan(obj->is_function_supported(PrinterFunction::FUNC_AUX_FAN)); } auto pos = m_switch_nozzle_fan->GetScreenPosition(); @@ -3579,6 +3883,7 @@ void StatusPanel::set_default() m_switch_lamp_timeout = 0; m_temp_nozzle_timeout = 0; m_temp_bed_timeout = 0; + m_temp_chamber_timeout = 0; m_switch_nozzle_fan_timeout = 0; m_switch_printing_fan_timeout = 0; m_switch_cham_fan_timeout = 0; @@ -3589,7 +3894,7 @@ void StatusPanel::set_default() m_bitmap_recording_img->Hide(); m_bitmap_vcamera_img->Hide(); m_setting_button->Show(); - m_tempCtrl_frame->Show(); + m_tempCtrl_chamber->Show(); m_options_btn->Show(); reset_temp_misc_control(); @@ -3723,17 +4028,17 @@ void StatusPanel::msw_rescale() m_line_nozzle->SetSize(wxSize(-1, FromDIP(1))); m_tempCtrl_bed->SetMinSize(TEMP_CTRL_MIN_SIZE); m_tempCtrl_bed->Rescale(); - m_tempCtrl_frame->SetMinSize(TEMP_CTRL_MIN_SIZE); - m_tempCtrl_frame->Rescale(); + m_tempCtrl_chamber->SetMinSize(TEMP_CTRL_MIN_SIZE); + m_tempCtrl_chamber->Rescale(); m_bitmap_speed.msw_rescale(); m_bitmap_speed_active.msw_rescale(); m_switch_speed->SetImages(m_bitmap_speed, m_bitmap_speed); - m_switch_speed->SetMinSize(MISC_BUTTON_SIZE); + m_switch_speed->SetMinSize(MISC_BUTTON_2FAN_SIZE); m_switch_speed->Rescale(); m_switch_lamp->SetImages(m_bitmap_lamp_on, m_bitmap_lamp_off); - m_switch_lamp->SetMinSize(MISC_BUTTON_SIZE); + m_switch_lamp->SetMinSize(MISC_BUTTON_2FAN_SIZE); m_switch_lamp->Rescale(); m_switch_nozzle_fan->SetImages(m_bitmap_fan_on, m_bitmap_fan_off); m_switch_nozzle_fan->Rescale(); @@ -3759,4 +4064,658 @@ void StatusPanel::msw_rescale() Refresh(); } -}} // namespace Slic3r::GUI +ScoreDialog::ScoreDialog(wxWindow *parent, int design_id, std::string model_id, int profile_id, int rating_id, bool success_printed, int star_count) + : DPIDialog(parent, wxID_ANY, _L("Rate the Print Profile"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER) + , m_design_id(design_id) + , m_model_id(model_id) + , m_profile_id(profile_id) + , m_star_count(star_count) + , m_rating_id(rating_id) + , m_success_printed(success_printed) + , m_upload_status_code(StatusCode::CODE_NUMBER) +{ + m_tocken.reset(new int(0)); + + wxBoxSizer *m_main_sizer = get_main_sizer(); + + this->SetSizer(m_main_sizer); + Fit(); + Layout(); + wxGetApp().UpdateDlgDarkUI(this); +} + +ScoreDialog::ScoreDialog(wxWindow *parent, ScoreData *score_data) + : DPIDialog(parent, wxID_ANY, _L("Rate the Print Profile"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER) + , m_design_id(score_data->design_id) + , m_rating_id(score_data->rating_id) + , m_model_id(score_data->model_id) + , m_profile_id(score_data->profile_id) + , m_star_count(score_data->star_count) + , m_success_printed(score_data->success_printed) + , m_upload_status_code(StatusCode::CODE_NUMBER) +{ + m_tocken.reset(new int(0)); + + wxBoxSizer *m_main_sizer = get_main_sizer(score_data->local_to_url_image, score_data->comment_text); + + m_image_url_paths = score_data->image_url_paths; + + + this->SetSizer(m_main_sizer); + Fit(); + Layout(); + wxGetApp().UpdateDlgDarkUI(this); + +} + +ScoreDialog::~ScoreDialog() {} + +void ScoreDialog::on_dpi_changed(const wxRect &suggested_rect) {} + +void ScoreDialog::OnBitmapClicked(wxMouseEvent &event) +{ + wxStaticBitmap *clickedBitmap = dynamic_cast(event.GetEventObject()); + if (m_image.find(clickedBitmap) != m_image.end()) { + if (!m_image[clickedBitmap].is_selected) { + for (auto panel : m_image[clickedBitmap].image_broad) { + panel->Show(); + } + m_image[clickedBitmap].is_selected = true; + m_selected_image_list.insert(clickedBitmap); + } else { + for (auto panel : m_image[clickedBitmap].image_broad) { + panel->Hide(); + } + m_image[clickedBitmap].is_selected = false; + m_selected_image_list.erase(clickedBitmap); + m_selected_image_list.erase(clickedBitmap); + } + } + if (m_selected_image_list.empty()) + m_delete_photo->Hide(); + else + m_delete_photo->Show(); + Fit(); + Layout(); + +} + + std::set > ScoreDialog::add_need_upload_imgs() +{ + std::set> need_upload_images; + for (auto bitmap : m_image) { + if (!bitmap.second.is_uploaded) { + wxString &local_image_path = bitmap.second.local_image_url; + if (!local_image_path.empty()) { need_upload_images.insert(std::make_pair(bitmap.first, local_image_path)); } + } + } + return need_upload_images; +} + + + +std::pair ScoreDialog::create_local_thumbnail(wxString &local_path) +{ + std::pair bitmap_to_image_msg; + if (local_path.empty()) return bitmap_to_image_msg; + + ImageMsg cur_image_msg; + cur_image_msg.local_image_url = local_path; + cur_image_msg.img_url_paths = ""; + cur_image_msg.is_uploaded = false; + + wxStaticBitmap *imageCtrl = new wxStaticBitmap(this, wxID_ANY, wxBitmap(wxImage(local_path, wxBITMAP_TYPE_ANY).Rescale(FromDIP(80), FromDIP(60))), wxDefaultPosition, + wxDefaultSize, 0); + imageCtrl->Bind(wxEVT_LEFT_DOWN, &ScoreDialog::OnBitmapClicked, this); + + m_image_sizer->Add(create_broad_sizer(imageCtrl, cur_image_msg), 0, wxALL, 5); + + bitmap_to_image_msg.first = imageCtrl; + bitmap_to_image_msg.second = cur_image_msg; + + return bitmap_to_image_msg; +} + +std::pair ScoreDialog::create_oss_thumbnail(std::string &oss_path) +{ + std::pair bitmap_to_image_msg; + if (oss_path.empty()) return bitmap_to_image_msg; + + ImageMsg cur_image_msg; + cur_image_msg.local_image_url = ""; + cur_image_msg.img_url_paths = oss_path; + cur_image_msg.is_uploaded = true; + + + wxImage image(Slic3r::resources_dir() + "/images/oss_picture_loading.png", wxBITMAP_TYPE_ANY); + wxStaticBitmap *imageCtrl = new wxStaticBitmap(this, wxID_ANY, wxBitmap(image.Rescale(FromDIP(80), FromDIP(60))), wxDefaultPosition, wxDefaultSize, 0); + imageCtrl->Bind(wxEVT_LEFT_DOWN, &ScoreDialog::OnBitmapClicked, this); + + Slic3r::Http http = Slic3r::Http::get(oss_path); + std::string suffix = oss_path.substr(oss_path.find_last_of(".") + 1); + http.header("accept", "image/" + suffix) //"image/" + suffix + .header("Accept-Encoding", "gzip") + .on_complete([this, imageCtrl, time = std::weak_ptr(m_tocken)](std::string body, unsigned int status) { + if (time.expired()) return; + wxMemoryInputStream stream(body.data(), body.size()); + wxImage success_image; + if (success_image.LoadFile(stream, wxBITMAP_TYPE_ANY)) { + CallAfter([this, success_image, imageCtrl]() { update_static_bitmap(imageCtrl, success_image); }); + + } else { + CallAfter([this, imageCtrl]() { update_static_bitmap(imageCtrl, fail_image); }); + } + }) + .on_error([this, imageCtrl, &oss_path](std::string body, std::string error, unsigned status) { + BOOST_LOG_TRIVIAL(info) << "load oss picture failed, oss path: " << oss_path << " status:" << status << " error:" << error; + CallAfter([this, imageCtrl]() { update_static_bitmap(imageCtrl, fail_image); }); + }).perform(); + + m_image_sizer->Add(create_broad_sizer(imageCtrl, cur_image_msg), 0, wxALL, 5); + + bitmap_to_image_msg.first = imageCtrl; + bitmap_to_image_msg.second = cur_image_msg; + + return bitmap_to_image_msg; +} + +void ScoreDialog::update_static_bitmap(wxStaticBitmap* static_bitmap, wxImage image) +{ + static_bitmap->SetBitmap(wxBitmap(image.Rescale(FromDIP(80), FromDIP(60)))); + Layout(); + Fit(); + //Refresh(); +} + +wxBoxSizer *ScoreDialog::create_broad_sizer(wxStaticBitmap *bitmap, ImageMsg& cur_image_msg) +{ + // tb: top and bottom lr: left and right + auto m_image_tb_broad = new wxBoxSizer(wxVERTICAL); + auto line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); + line_top->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA)); + m_image_tb_broad->Add(line_top, 0, wxEXPAND, 0); + cur_image_msg.image_broad.push_back(line_top); + line_top->Hide(); + + auto m_image_lr_broad = new wxBoxSizer(wxHORIZONTAL); + auto line_left = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(1, -1), wxTAB_TRAVERSAL); + line_left->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA)); + m_image_lr_broad->Add(line_left, 0, wxEXPAND, 0); + cur_image_msg.image_broad.push_back(line_left); + line_left->Hide(); + + m_image_lr_broad->Add(bitmap, 0, wxALL, 5); + + auto line_right = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(1, -1), wxTAB_TRAVERSAL); + line_right->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA)); + m_image_lr_broad->Add(line_right, 0, wxEXPAND, 0); + m_image_tb_broad->Add(m_image_lr_broad, 0, wxEXPAND, 0); + cur_image_msg.image_broad.push_back(line_right); + line_right->Hide(); + + auto line_bottom = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); + line_bottom->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA)); + m_image_tb_broad->Add(line_bottom, 0, wxEXPAND, 0); + cur_image_msg.image_broad.push_back(line_bottom); + line_bottom->Hide(); + + cur_image_msg.is_selected = false; + cur_image_msg.image_tb_broad = m_image_tb_broad; + + return m_image_tb_broad; +} + +void ScoreDialog::init() { + SetBackgroundColour(*wxWHITE); + SetMinSize(wxSize(FromDIP(540), FromDIP(380))); + + fail_image = wxImage(Slic3r::resources_dir() + "/images/oss_picture_load_failed.png", wxBITMAP_TYPE_ANY); + // icon + std::string icon_path = (boost::format("%1%/images/BambuStudio.ico") % resources_dir()).str(); + SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO)); +} + +wxBoxSizer *ScoreDialog::get_score_sizer() { + wxBoxSizer *score_sizer = new wxBoxSizer(wxHORIZONTAL); + wxStaticText *static_score_text = new wxStaticText(this, wxID_ANY, _L("Rate"), wxDefaultPosition, wxDefaultSize, 0); + static_score_text->Wrap(-1); + score_sizer->Add(static_score_text, 1, wxEXPAND | wxLEFT, FromDIP(24)); + score_sizer->Add(0, 0, 1, wxEXPAND, 0); + return score_sizer; +} + +wxBoxSizer *ScoreDialog::get_star_sizer() +{ + wxBoxSizer *static_score_star_sizer = new wxBoxSizer(wxHORIZONTAL); + m_score_star.resize(5); + for (int i = 0; i < m_score_star.size(); ++i) { + if (!m_success_printed && m_star_count > 3) { + m_star_count = 3; + warning_text->Show(); + Layout(); + Fit(); + } + if (i < m_star_count) { + m_score_star[i] = new ScalableButton(this, wxID_ANY, "score_star_light", wxEmptyString, wxSize(FromDIP(26), FromDIP(26)), wxDefaultPosition, + wxBU_EXACTFIT | wxNO_BORDER, true, 26); + } else + m_score_star[i] = new ScalableButton(this, wxID_ANY, "score_star_dark", wxEmptyString, wxSize(FromDIP(26), FromDIP(26)), wxDefaultPosition, + wxBU_EXACTFIT | wxNO_BORDER, true, 26); + + m_score_star[i]->Bind(wxEVT_LEFT_DOWN, [this, i](auto &e) { + if (!m_success_printed && i >= 3) { + warning_text->Show(); + Layout(); + Fit(); + return; + } else { + warning_text->Hide(); + Layout(); + Fit(); + } + for (int j = 0; j < m_score_star.size(); ++j) { + ScalableBitmap light_star = ScalableBitmap(nullptr, "score_star_light", 26); + m_score_star[j]->SetBitmap(light_star.bmp()); + if (m_score_star[j] == m_score_star[i]) { + m_star_count = j + 1; + break; + } + } + for (int k = m_star_count; k < m_score_star.size(); ++k) { + ScalableBitmap dark_star = ScalableBitmap(nullptr, "score_star_dark", 26); + m_score_star[k]->SetBitmap(dark_star.bmp()); + } + }); + static_score_star_sizer->Add(m_score_star[i], 0, wxEXPAND | wxLEFT, FromDIP(20)); + } + + return static_score_star_sizer; +} + +wxBoxSizer* ScoreDialog::get_comment_text_sizer() { + wxBoxSizer* m_comment_sizer = new wxBoxSizer(wxHORIZONTAL); + wxStaticText *static_comment_text = new wxStaticText(this, wxID_ANY, _L("Comment"), wxDefaultPosition, wxDefaultSize, 0); + static_comment_text->Wrap(-1); + m_comment_sizer->Add(static_comment_text, 1, wxEXPAND | wxLEFT, FromDIP(24)); + m_comment_sizer->Add(0, 0, 1, wxEXPAND, 0); + return m_comment_sizer; +} + +void ScoreDialog::create_comment_text(const wxString& comment) { + m_comment_text = new wxTextCtrl(this, wxID_ANY, "", wxDefaultPosition, wxSize(FromDIP(492), FromDIP(104)), wxTE_MULTILINE); + if (wxGetApp().dark_mode()) { + m_comment_text->SetForegroundColour(wxColor(*wxWHITE)); + } else + m_comment_text->SetForegroundColour(wxColor(*wxBLACK)); + if (!comment.empty()) { + m_comment_text->SetValue(comment); + } + m_comment_text->SetHint(_L("Rate this print")); + m_comment_text->SetBackgroundColour(*wxWHITE); + //m_comment_text->SetForegroundColour(wxColor("#BBBBBB")); + m_comment_text->SetMinSize(wxSize(FromDIP(492), FromDIP(104))); + + m_comment_text->Bind(wxEVT_SET_FOCUS, [this](auto &event) { + if (wxGetApp().dark_mode()) { + m_comment_text->SetForegroundColour(wxColor(*wxWHITE)); + } else + m_comment_text->SetForegroundColour(wxColor(*wxBLACK)); + m_comment_text->Refresh(); + event.Skip(); + }); +} + +wxBoxSizer *ScoreDialog::get_photo_btn_sizer() { + wxBoxSizer * m_photo_sizer = new wxBoxSizer(wxHORIZONTAL); + ScalableBitmap little_photo = wxGetApp().dark_mode() ? ScalableBitmap(this, "single_little_photo_dark", 20) : ScalableBitmap(this, "single_little_photo", 20); + wxStaticBitmap *little_photo_img = new wxStaticBitmap(this, wxID_ANY, little_photo.bmp(), wxDefaultPosition, wxSize(FromDIP(20), FromDIP(20)), 0); + m_photo_sizer->Add(little_photo_img, 0, wxEXPAND | wxLEFT, FromDIP(24)); + m_add_photo = new Label(this, _L("Add Photo")); + m_add_photo->SetBackgroundColour(*wxWHITE); + //m_add_photo->SetForegroundColour(wxColor("#898989")); + m_add_photo->SetSize(wxSize(-1, FromDIP(20))); + m_photo_sizer->Add(m_add_photo, 0, wxEXPAND | wxLEFT, FromDIP(12)); + + m_delete_photo = new Label(this, _L("Delete Photo")); + m_delete_photo->SetBackgroundColour(*wxWHITE); + //m_delete_photo->SetForegroundColour(wxColor("#898989")); + m_delete_photo->SetSize(wxSize(-1, FromDIP(20))); + m_photo_sizer->Add(m_delete_photo, 0, wxEXPAND | wxLEFT, FromDIP(12)); + m_delete_photo->Hide(); + m_photo_sizer->Add(0, 0, 1, wxEXPAND, 0); + + m_add_photo->Bind(wxEVT_LEFT_DOWN, [this](auto &e) { + // add photo logic + wxFileDialog openFileDialog(this, "Select Images", "", "", "Image files (*.png;*.jpg)|*.png;*.jpg", wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE); + + if (openFileDialog.ShowModal() == wxID_CANCEL) return; + + wxArrayString filePaths; + openFileDialog.GetPaths(filePaths); + //wxArrayString filePaths_reduction; + std::vector> local_path; + for (int i = 0; i < filePaths.GetCount(); i++) { //It's ugly, but useful + bool is_repeat = false; + for (auto image : m_image) { + if (filePaths[i] == image.second.local_image_url) { + is_repeat = true; + continue; + } + } + if (!is_repeat) { + local_path.push_back(std::make_pair(filePaths[i], "")); + if (local_path.size() + m_image.size() > m_photo_nums) { + break; + } + } + + } + + load_photo(local_path); + + m_image_sizer->Layout(); + this->Fit(); + this->Layout(); + }); + + m_delete_photo->Bind(wxEVT_LEFT_DOWN, [this](auto &e) { + for (auto it = m_selected_image_list.begin(); it != m_selected_image_list.end();) { + auto bitmap = *it; + m_image_sizer->Detach(m_image[bitmap].image_tb_broad); + m_image[bitmap].image_tb_broad->DeleteWindows(); + + m_image.erase(bitmap); + it = m_selected_image_list.erase(it); + } + m_image_url_paths.clear(); + for (const std::pair &bitmap : m_image) { + if (bitmap.second.is_uploaded) { + if (!bitmap.second.img_url_paths.empty()) { + m_image_url_paths.push_back(bitmap.second.img_url_paths); + } + } + } + m_delete_photo->Hide(); + Layout(); + Fit(); + }); + + return m_photo_sizer; +} + +wxBoxSizer *ScoreDialog::get_button_sizer() +{ + wxBoxSizer *bSizer_button = new wxBoxSizer(wxHORIZONTAL); + bSizer_button->Add(0, 0, 1, wxEXPAND, 0); + + StateColor btn_bg_green(std::pair(wxColour(27, 136, 68), StateColor::Pressed), std::pair(wxColour(61, 203, 115), StateColor::Hovered), + std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal)); + + m_button_ok = new Button(this, _L("Submit")); + m_button_ok->SetBackgroundColor(btn_bg_green); + m_button_ok->SetBorderColor(*wxWHITE); + m_button_ok->SetTextColor(wxColour(0xFFFFFE)); + m_button_ok->SetFont(Label::Body_12); + m_button_ok->SetSize(wxSize(FromDIP(58), FromDIP(24))); + m_button_ok->SetMinSize(wxSize(FromDIP(58), FromDIP(24))); + m_button_ok->SetCornerRadius(FromDIP(12)); + bSizer_button->Add(m_button_ok, 0, wxRIGHT, FromDIP(24)); + + m_button_ok->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { + m_upload_status_code = StatusCode::UPLOAD_PROGRESS; + + if (m_star_count == 0) { + MessageDialog dlg(this, _L("Please click on the star first."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("InFo"), wxOK); + dlg.ShowModal(); + return; + } + + std::set> need_upload_images = add_need_upload_imgs(); + + std::string comment = into_u8(m_comment_text->GetValue()); + unsigned int http_code; + std::string http_error; + wxString error_info; + + if (!need_upload_images.empty()) { + std::string config; + int ret = wxGetApp().getAgent()->get_oss_config(config, wxGetApp().app_config->get_country_code(), http_code, http_error); + if (ret == -1) { + error_info += into_u8(_L("Get oss config failed.")) + "\n\thttp code: " + std::to_string(http_code) + "\n\thttp error: " + http_error; + m_upload_status_code = StatusCode::UPLOAD_EXIST_ISSUE; + } + if (m_upload_status_code == StatusCode::UPLOAD_PROGRESS) { + int need_upload_nums = need_upload_images.size(); + int upload_nums = 0; + int upload_failed_nums = 0; + ProgressDialog *progress_dialog = new ProgressDialog(_L("Upload Pictrues"), _L("Number of images successfully uploaded") + ": " + std::to_string(upload_nums) + "/" + std::to_string(need_upload_nums), need_upload_nums, this); + for (std::set>::iterator it = need_upload_images.begin(); it != need_upload_images.end();) { + std::pair need_upload = *it; + std::string need_upload_uf8 = into_u8(need_upload.second); + //Local path when incoming, cloud path when outgoing + ret = wxGetApp().getAgent()->put_rating_picture_oss(config, need_upload_uf8, m_model_id, m_profile_id, http_code, http_error); + std::unordered_map::iterator iter; + switch (ret) { + case 0: + upload_nums++; + iter = m_image.find(need_upload.first); + if (m_image.end() != iter) { + iter->second.img_url_paths = need_upload_uf8; + iter->second.is_uploaded = true; + m_image_url_paths.push_back(need_upload_uf8); + } + it++; + progress_dialog->Update(upload_nums, _L("Number of images successfully uploaded") + ": " + std::to_string(upload_nums) + "/" + std::to_string(need_upload_nums)); + progress_dialog->Fit(); + BOOST_LOG_TRIVIAL(info) << "put_rating_picture_oss: model_id [" << m_model_id << "] profile_id [" << m_profile_id << "] http_code [" << http_code + << "] http_error [" << http_error << "] config [" << config << "] image_path [" << need_upload.second << "]"; + break; + case -1: + error_info += need_upload.second + _L(" upload failed").ToUTF8().data() + "\n\thttp code:" + std::to_string(http_code) + "\n\thttp_error:" + http_error + "\n"; + m_upload_status_code = StatusCode::UPLOAD_IMG_FAILED; + ++it; + break; + case BAMBU_NETWORK_ERR_PARSE_CONFIG_FAILED: + error_info += need_upload.second + _L(" upload config prase failed\n").ToUTF8().data() + "\n"; + m_upload_status_code = StatusCode::UPLOAD_IMG_FAILED; + ++it; + break; + case BAMBU_NETWORK_ERR_NO_CORRESPONDING_BUCKET: + error_info += need_upload.second + _L(" No corresponding storage bucket\n").ToUTF8().data() + "\n"; + m_upload_status_code = StatusCode::UPLOAD_IMG_FAILED; + ++it; + break; + case BAMBU_NETWORK_ERR_OPEN_FILE_FAILED: + error_info += need_upload.second + _L(" can not be opened\n").ToUTF8().data() + "\n"; + m_upload_status_code = StatusCode::UPLOAD_IMG_FAILED; + ++it; + break; + } + } + progress_dialog->Hide(); + if (progress_dialog) { + delete progress_dialog; + progress_dialog = nullptr; + } + + if (m_upload_status_code == StatusCode::UPLOAD_IMG_FAILED) { + std::string upload_failed_images = into_u8(_L("The following issues occurred during the process of uploading images. Do you want to ignore them?\n\n")); + MessageDialog dlg_info(this, upload_failed_images + error_info, wxString(_L("info")), wxOK | wxNO | wxCENTER); + if (dlg_info.ShowModal() == wxID_OK) { + m_upload_status_code = StatusCode::UPLOAD_PROGRESS; + } + } + } + } + + if (m_upload_status_code == StatusCode::UPLOAD_PROGRESS) { + int ret = wxGetApp().getAgent()->put_model_mall_rating(m_rating_id, m_star_count, comment, m_image_url_paths, http_code, http_error); + MessageDialog *dlg_info; + switch (ret) { + case 0: EndModal(wxID_OK); break; + case BAMBU_NETWORK_ERR_GET_RATING_ID_FAILED: + dlg_info = new MessageDialog(this, _L("Synchronizing the printing results. Please retry a few seconds later."), wxString(_L("info")), wxOK | wxCENTER); + dlg_info->ShowModal(); + delete dlg_info; + break; + default: // Upload failed and obtaining instance_id failed + if (ret == -1) + error_info += _L("Upload failed\n").ToUTF8().data(); + else + error_info += _L("obtaining instance_id failed\n").ToUTF8().data(); + if (!error_info.empty()) { BOOST_LOG_TRIVIAL(info) << error_info; } + + dlg_info = new MessageDialog(this, + _L("Your comment result cannot be uploaded due to some reasons. As follows:\n\n error code: ") + std::to_string(http_code) + + "\n " + _L("error message: ") + http_error + _L("\n\nWould you like to redirect to the webpage for rating?"), + wxString(_L("info")), wxOK | wxNO | wxCENTER); + if (dlg_info->ShowModal() == wxID_OK) { + market_model_scoring_page(m_design_id); + EndModal(wxID_OK); + } + delete dlg_info; + break; + } + } else if (m_upload_status_code == StatusCode::UPLOAD_IMG_FAILED) { + MessageDialog *dlg_info = new MessageDialog(this, _L("Some of your images failed to upload. Would you like to redirect to the webpage for rating?"), + wxString(_L("info")), wxOK | wxNO | wxCENTER); + if (dlg_info->ShowModal() == wxID_OK) { + market_model_scoring_page(m_design_id); + EndModal(wxID_OK); + } + delete dlg_info; + if (!error_info.empty()) { BOOST_LOG_TRIVIAL(info) << error_info; } + } + }); + + StateColor btn_bg_white(std::pair(wxColour(206, 206, 206), StateColor::Pressed), std::pair(wxColour(238, 238, 238), StateColor::Hovered), + std::pair(*wxWHITE, StateColor::Normal)); + + m_button_cancel = new Button(this, _L("Cancel")); + m_button_cancel->SetBackgroundColor(btn_bg_white); + m_button_cancel->SetBorderColor(wxColour(38, 46, 48)); + m_button_cancel->SetFont(Label::Body_12); + m_button_cancel->SetSize(wxSize(FromDIP(58), FromDIP(24))); + m_button_cancel->SetMinSize(wxSize(FromDIP(58), FromDIP(24))); + m_button_cancel->SetCornerRadius(FromDIP(12)); + bSizer_button->Add(m_button_cancel, 0, wxRIGHT, FromDIP(24)); + + m_button_cancel->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { EndModal(wxID_CANCEL); }); + + return bSizer_button; +} + +void ScoreDialog::load_photo(const std::vector> &filePaths) +{ + for (size_t i = 0; i < filePaths.size(); ++i) { + if (m_image.size() < m_photo_nums) { + std::pair local_to_url_path = filePaths[i]; + wxString filePath = local_to_url_path.first; + + ImageMsg cur_image_msg; + + if (filePath.empty()) { // local img path is empty, oss url path is exist + std::string oss_url_path = local_to_url_path.second; + //to do: load oss image, create wxStaticBitmap + + if (!oss_url_path.empty()) { + m_image.insert(create_oss_thumbnail(oss_url_path)); + } + continue; + } else { + m_image.insert(create_local_thumbnail(filePath)); + } + + } else { + MessageDialog *dlg_info_up_to_8 = new MessageDialog(this, _L("You can select up to 16 images."), wxString(_L("info")), wxOK | wxCENTER); + dlg_info_up_to_8->ShowModal(); + break; + } + + } +} + +wxBoxSizer *ScoreDialog::get_main_sizer(const std::vector> &images, const wxString &comment) +{ + init(); + wxBoxSizer *m_main_sizer = new wxBoxSizer(wxVERTICAL); + // top line + auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); + m_line_top->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA)); + m_main_sizer->Add(m_line_top, 0, wxEXPAND, 0); + m_main_sizer->Add(0, 0, 0, wxTOP, FromDIP(32)); + + warning_text = new wxStaticText(this, wxID_ANY, _L("At least one successful print record of this print profile is required \nto give a positive rating(4 or 5stars).")); + warning_text->SetForegroundColour(*wxRED); + warning_text->SetFont(::Label::Body_13); + + wxBoxSizer *score_sizer = get_score_sizer(); + m_main_sizer->Add(score_sizer, 0, wxEXPAND, FromDIP(20)); + m_main_sizer->Add(0, 0, 0, wxBOTTOM, FromDIP(8)); + + wxBoxSizer *static_score_star_sizer = get_star_sizer(); + m_main_sizer->Add(static_score_star_sizer, 0, wxEXPAND | wxBOTTOM, FromDIP(20)); + + m_main_sizer->Add(warning_text, 0, wxEXPAND | wxLEFT, FromDIP(24)); + m_main_sizer->Add(0, 0, 0, wxBOTTOM, FromDIP(8)); + warning_text->Hide(); + + wxBoxSizer *m_comment_sizer = get_comment_text_sizer(); + m_main_sizer->Add(m_comment_sizer, 0, wxEXPAND, FromDIP(20)); + m_main_sizer->Add(0, 0, 0, wxBOTTOM, FromDIP(8)); + + create_comment_text(comment); + m_main_sizer->Add(m_comment_text, 0, wxLEFT, FromDIP(24)); + + wxBoxSizer *m_photo_sizer = get_photo_btn_sizer(); + m_main_sizer->Add(m_photo_sizer, 0, wxEXPAND | wxTOP, FromDIP(8)); + + m_image_sizer = new wxGridSizer(5, FromDIP(5), FromDIP(5)); + if (!images.empty()) { + load_photo(images); + } + m_main_sizer->Add(m_image_sizer, 0, wxEXPAND | wxLEFT, FromDIP(24)); + m_main_sizer->Add(0, 0, 1, wxEXPAND, 0); + + wxBoxSizer *bSizer_button = get_button_sizer(); + m_main_sizer->Add(bSizer_button, 0, wxEXPAND | wxBOTTOM, FromDIP(24)); + + return m_main_sizer; +} + +ScoreData ScoreDialog::get_score_data() { + ScoreData score_data; + score_data.rating_id = m_rating_id; + score_data.design_id = m_design_id; + score_data.model_id = m_model_id; + score_data.profile_id = m_profile_id; + score_data.star_count = m_star_count; + score_data.success_printed = m_success_printed; + score_data.comment_text = m_comment_text->GetValue(); + score_data.image_url_paths = m_image_url_paths; + for (auto img : m_image) { score_data.local_to_url_image.push_back(std::make_pair(img.second.local_image_url, img.second.img_url_paths)); } + + return score_data; +} + +void ScoreDialog::set_comment(std::string comment) +{ + if (m_comment_text) { + + m_comment_text->SetValue(wxString::FromUTF8(comment)); + } +} + +void ScoreDialog::set_cloud_bitmap(std::vector cloud_bitmaps) +{ + m_image_url_paths = cloud_bitmaps; + for (std::string &url : cloud_bitmaps) { + if (std::string::npos == url.find(m_model_id)) continue; + m_image.insert(create_oss_thumbnail(url)); + } + Layout(); + Fit(); +} + +} // namespace GUI +} // namespace Slic3r diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index 4879cb86f0..6b7d4eef70 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -61,12 +61,102 @@ enum PrintingTaskType { CALIBRATION, }; +struct ScoreData +{ + int rating_id; + int design_id; + std::string model_id; + int profile_id; + int star_count; + bool success_printed; + wxString comment_text; + std::vector image_url_paths; + std::set need_upload_images; + std::vector> local_to_url_image; +}; + +typedef std::function OnGetSubTaskFn; + +class ScoreDialog : public GUI::DPIDialog +{ +public: + ScoreDialog(wxWindow *parent, int design_id, std::string model_id, int profile_id, int rating_id, bool success_printed, int star_count = 0); + ScoreDialog(wxWindow *parent, ScoreData *score_data); + ~ScoreDialog(); + + int get_rating_id() { return m_rating_id; } + ScoreData get_score_data(); + void set_comment(std::string comment); + void set_cloud_bitmap(std::vector cloud_bitmaps); + +protected: + enum StatusCode { + UPLOAD_PROGRESS = 0, + UPLOAD_EXIST_ISSUE, + UPLOAD_IMG_FAILED, + CODE_NUMBER + }; + + std::shared_ptr m_tocken; + const int m_photo_nums = 16; + int m_rating_id; + int m_design_id; + std::string m_model_id; + int m_profile_id; + int m_star_count; + bool m_success_printed; + std::vector m_image_url_paths; + StatusCode m_upload_status_code; + + struct ImageMsg + { + wxString local_image_url; //local image path + std::string img_url_paths; // oss url path + vector image_broad; + bool is_selected; + bool is_uploaded; // load + wxBoxSizer * image_tb_broad = nullptr; + }; + + std::vector m_score_star; + wxTextCtrl * m_comment_text = nullptr; + Button * m_button_ok = nullptr; + Button * m_button_cancel = nullptr; + Label * m_add_photo = nullptr; + Label * m_delete_photo = nullptr; + wxGridSizer * m_image_sizer = nullptr; + wxStaticText * warning_text = nullptr; + std::unordered_map m_image; + std::unordered_set m_selected_image_list; + + void init(); + void update_static_bitmap(wxStaticBitmap *static_bitmap, wxImage image); + void create_comment_text(const wxString &comment = ""); + void load_photo(const std::vector> &filePaths); + void on_dpi_changed(const wxRect &suggested_rect) override; + void OnBitmapClicked(wxMouseEvent &event); + + wxBoxSizer * create_broad_sizer(wxStaticBitmap *bitmap, ImageMsg &cur_image_msg); + wxBoxSizer * get_score_sizer(); + wxBoxSizer * get_star_sizer(); + wxBoxSizer * get_comment_text_sizer(); + wxBoxSizer * get_photo_btn_sizer(); + wxBoxSizer * get_button_sizer(); + wxBoxSizer * get_main_sizer(const std::vector> &images = std::vector>(), const wxString &comment = ""); + + std::set> add_need_upload_imgs(); + std::pair create_local_thumbnail(wxString &local_path); + std::pair create_oss_thumbnail(std::string &oss_path); + +}; + class PrintingTaskPanel : public wxPanel { public: PrintingTaskPanel(wxWindow* parent, PrintingTaskType type); ~PrintingTaskPanel(); void create_panel(wxWindow* parent); + private: MachineObject* m_obj; @@ -91,6 +181,7 @@ private: // Orca: show print end time wxStaticText * m_staticText_progress_end; wxStaticText* m_staticText_layers; + wxStaticText * m_has_rated_prompt; wxStaticBitmap* m_bitmap_thumbnail; wxStaticBitmap* m_bitmap_static_use_time; wxStaticBitmap* m_bitmap_static_use_weight; @@ -98,6 +189,12 @@ private: ScalableButton* m_button_abort; Button* m_button_market_scoring; Button* m_button_clean; + wxPanel * m_score_subtask_info; + wxPanel * m_score_staticline; + // score page + int m_star_count; + std::vector m_score_star; + bool m_star_count_dirty = false; ProgressBar* m_gauge_progress; Label* m_error_text; @@ -122,6 +219,8 @@ public: void update_layers_num(bool show, wxString num = wxEmptyString); void show_priting_use_info(bool show, wxString time = wxEmptyString, wxString weight = wxEmptyString); void show_profile_info(bool show, wxString profile = wxEmptyString); + void market_scoring_show(); + void market_scoring_hide(); public: ScalableButton* get_abort_button() {return m_button_abort;}; @@ -129,6 +228,13 @@ public: Button* get_market_scoring_button() {return m_button_market_scoring;}; Button* get_clean_button() {return m_button_clean;}; wxStaticBitmap* get_bitmap_thumbnail() {return m_bitmap_thumbnail;}; + int get_star_count() { return m_star_count; } + void set_star_count(int star_count); + std::vector &get_score_star() { return m_score_star; } + bool get_star_count_dirty() { return m_star_count_dirty; } + void set_star_count_dirty(bool dirty) { m_star_count_dirty = dirty; } + void set_has_reted_text(bool has_rated); + }; class StatusBasePanel : public wxScrolledWindow @@ -210,7 +316,6 @@ protected: ScalableButton *m_button_pause_resume; ScalableButton *m_button_abort; Button * m_button_clean; - Button * m_button_market_scoring; wxStaticText * m_text_tasklist_caption; @@ -222,19 +327,22 @@ protected: /* TempInput */ wxBoxSizer * m_misc_ctrl_sizer; StaticBox* m_fan_panel; - TempInput * m_tempCtrl_nozzle; - int m_temp_nozzle_timeout {0}; StaticLine * m_line_nozzle; + TempInput* m_tempCtrl_nozzle; + int m_temp_nozzle_timeout{ 0 }; TempInput * m_tempCtrl_bed; int m_temp_bed_timeout {0}; - TempInput * m_tempCtrl_frame; + TempInput * m_tempCtrl_chamber; + int m_temp_chamber_timeout {0}; bool m_current_support_cham_fan{true}; + bool m_current_support_aux_fan{true}; FanSwitchButton *m_switch_nozzle_fan; int m_switch_nozzle_fan_timeout{0}; FanSwitchButton *m_switch_printing_fan; int m_switch_printing_fan_timeout{0}; FanSwitchButton *m_switch_cham_fan; int m_switch_cham_fan_timeout{0}; + wxPanel* m_switch_block_fan; float m_fixed_aspect_ratio{1.8}; @@ -320,7 +428,7 @@ public: wxBoxSizer *create_ams_group(wxWindow *parent); wxBoxSizer *create_settings_group(wxWindow *parent); - void show_ams_group(bool show = true, bool support_virtual_tray = true, bool support_extrustion_cali = true); + void show_ams_group(bool show = true); }; @@ -359,10 +467,14 @@ protected: int m_last_vcamera = -1; bool m_is_load_with_temp = false; bool m_print_finish = false; + json m_rating_result; + json m_last_result; wxWebRequest web_request; bool bed_temp_input = false; bool nozzle_temp_input = false; + bool cham_temp_input = false; + bool request_model_info_flag = false; int speed_lvl = 1; // 0 - 3 int speed_lvl_timeout {0}; boost::posix_time::ptime speed_dismiss_time; @@ -372,6 +484,8 @@ protected: std::map m_print_connect_types; std::vector