diff --git a/src/.doxygen b/.doxygen similarity index 94% rename from src/.doxygen rename to .doxygen index f822282e40..fb8ae5f045 100644 --- a/src/.doxygen +++ b/.doxygen @@ -1,4 +1,4 @@ -# Doxyfile 1.9.5 +# Doxyfile 1.9.8 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -48,7 +48,7 @@ PROJECT_NAME = OrcaSlicer # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.5.0 +PROJECT_NUMBER = 1.6.3 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -61,14 +61,14 @@ PROJECT_BRIEF = OrcaSlicer # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = D:/a/OrcaSlicer/OrcaSlicer/resources/images/BambuStudio.png +PROJECT_LOGO = ./resources/images/OrcaSlicer_32px.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = OrcaSlicer-doc +OUTPUT_DIRECTORY = ../ # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -86,7 +86,7 @@ CREATE_SUBDIRS = YES # level increment doubles the number of directories, resulting in 4096 # directories at level 8 which is the default and also the maximum value. The # sub-directories are organized in 2 levels, the first level always has a fixed -# numer of 16 directories. +# number of 16 directories. # Minimum value: 0, maximum value: 8, default value: 8. # This tag requires that the tag CREATE_SUBDIRS is set to YES. @@ -184,7 +184,7 @@ FULL_PATH_NAMES = YES # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. -STRIP_FROM_PATH = /Users/lijiang/lab/OrcaSlicer/ +STRIP_FROM_PATH = /Users/runner/work/OrcaSlicer/OrcaSlicer # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which @@ -193,7 +193,7 @@ STRIP_FROM_PATH = /Users/lijiang/lab/OrcaSlicer/ # specify the list of include paths that are normally passed to the compiler # using the -I flag. -STRIP_FROM_INC_PATH = +STRIP_FROM_INC_PATH = /Users/runner/work/OrcaSlicer/OrcaSlicer # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't @@ -363,6 +363,17 @@ MARKDOWN_SUPPORT = YES TOC_INCLUDE_HEADINGS = 5 +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = GITHUB + # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or @@ -379,7 +390,7 @@ AUTOLINK_SUPPORT = YES # diagrams that involve STL classes more complete and accurate. # The default value is: NO. -BUILTIN_STL_SUPPORT = NO +BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. @@ -418,7 +429,7 @@ DISTRIBUTE_GROUP_DOC = NO # is disabled and one has to add nested compounds explicitly via \ingroup. # The default value is: NO. -GROUP_NESTED_COMPOUNDS = NO +GROUP_NESTED_COMPOUNDS = YES # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that @@ -487,6 +498,14 @@ LOOKUP_CACHE_SIZE = 6 NUM_PROC_THREADS = 0 +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- @@ -499,7 +518,7 @@ NUM_PROC_THREADS = 0 # normally produced when WARNINGS is set to YES. # The default value is: NO. -EXTRACT_ALL = NO +EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. @@ -568,7 +587,8 @@ HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO @@ -714,26 +734,26 @@ STRICT_PROTO_MATCHING = NO # list. This list is created by putting \todo commands in the documentation. # The default value is: YES. -GENERATE_TODOLIST = YES +GENERATE_TODOLIST = NO # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test # list. This list is created by putting \test commands in the documentation. # The default value is: YES. -GENERATE_TESTLIST = YES +GENERATE_TESTLIST = NO # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. -GENERATE_BUGLIST = YES +GENERATE_BUGLIST = NO # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. -GENERATE_DEPRECATEDLIST= YES +GENERATE_DEPRECATEDLIST= NO # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond @@ -859,11 +879,26 @@ WARN_IF_INCOMPLETE_DOC = YES WARN_NO_PARAMDOC = NO +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about +# undocumented enumeration values. If set to NO, doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS # then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but # at the end of the doxygen process doxygen will return with a non-zero status. -# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. # The default value is: NO. WARN_AS_ERROR = NO @@ -908,7 +943,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = . +INPUT = ./src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -1031,9 +1066,6 @@ EXCLUDE_PATTERNS = # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # ANamespace::AClass, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = @@ -1219,46 +1251,6 @@ USE_HTAGS = YES VERBATIM_HEADERS = YES -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: -# http://clang.llvm.org/) for more accurate parsing at the cost of reduced -# performance. This can be particularly helpful with template rich C++ code for -# which doxygen's built-in parser lacks the necessary type information. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse_libclang=ON option for CMake. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS -# tag is set to YES then doxygen will add the directory of each input to the -# include path. -# The default value is: YES. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_ADD_INC_PATHS = YES - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -# If clang assisted parsing is enabled you can provide the clang parser with the -# path to the directory containing a file called compile_commands.json. This -# file is the compilation database (see: -# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the -# options used when the source files were built. This is equivalent to -# specifying the -p option to a clang tool, such as clang-check. These options -# will then be passed to the parser. Any options specified with CLANG_OPTIONS -# will be added as well. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse_libclang=ON option for CMake. - -CLANG_DATABASE_PATH = - #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- @@ -1270,10 +1262,11 @@ CLANG_DATABASE_PATH = ALPHABETICAL_INDEX = YES -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = @@ -1293,7 +1286,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = OrcaSlicer_Dev_Document # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). @@ -1352,7 +1345,12 @@ HTML_STYLESHEET = # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = @@ -1368,17 +1366,13 @@ HTML_EXTRA_STYLESHEET = HTML_EXTRA_FILES = # The HTML_COLORSTYLE tag can be used to specify if the generated HTML output -# should be rendered with a dark or light theme. Default setting AUTO_LIGHT -# enables light output unless the user preference is dark output. Other options -# are DARK to always use dark mode, LIGHT to always use light mode, AUTO_DARK to -# default to dark mode unless the user prefers light mode, and TOGGLE to let the -# user toggle between dark and light mode via a button. -# Possible values are: LIGHT Always generate light output., DARK Always generate -# dark output., AUTO_LIGHT Automatically set the mode according to the user -# preference, use light mode if no preference is set (the default)., AUTO_DARK -# Automatically set the mode according to the user preference, use dark mode if -# no preference is set. and TOGGLE Allow to user to switch between light and -# dark mode via a button.. +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generate light mode output, DARK always +# generate dark mode output, AUTO_LIGHT automatically set the mode according to +# the user preference, use light mode if no preference is set (the default), +# AUTO_DARK automatically set the mode according to the user preference, use +# dark mode if no preference is set and TOGGLE allow to user to switch between +# light and dark mode via a button. # The default value is: AUTO_LIGHT. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1414,15 +1408,6 @@ HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_GAMMA = 80 -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that # are dynamically created via JavaScript. If disabled, the navigation index will @@ -1440,7 +1425,7 @@ HTML_DYNAMIC_MENUS = YES # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_DYNAMIC_SECTIONS = NO +HTML_DYNAMIC_SECTIONS = YES # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand @@ -1468,7 +1453,7 @@ HTML_INDEX_NUM_ENTRIES = 100 # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -GENERATE_DOCSET = NO +GENERATE_DOCSET = YES # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider @@ -1572,6 +1557,16 @@ BINARY_TOC = NO TOC_EXPAND = NO +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help @@ -1736,7 +1731,7 @@ OBFUSCATE_EMAILS = YES # The default value is: png. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_FORMULA_FORMAT = png +HTML_FORMULA_FORMAT = svg # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful @@ -2060,9 +2055,16 @@ PDF_HYPERLINKS = YES USE_PDFLATEX = YES -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode -# command to the generated LaTeX files. This will instruct LaTeX to keep running -# if errors occur, instead of asking the user for help. +# The LATEX_BATCHMODE tag ignals the behavior of LaTeX in case of an error. +# Possible values are: NO same as ERROR_STOP, YES same as BATCH, BATCH In batch +# mode nothing is printed on the terminal, errors are scrolled as if is +# hit at every error; missing files that TeX tries to input or request from +# keyboard input (\read on a not open input stream) cause the job to abort, +# NON_STOP In nonstop mode the diagnostic message will appear on the terminal, +# but there is no possibility of user interaction just like in batch mode, +# SCROLL In scroll mode, TeX will stop only for missing files to input or if +# keyboard input is necessary and ERROR_STOP In errorstop mode, TeX will stop at +# each error, asking for user intervention. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -2083,14 +2085,6 @@ LATEX_HIDE_INDICES = NO LATEX_BIB_STYLE = plain -# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_TIMESTAMP = NO - # The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute) # path from which the emoji images will be read. If a relative path is entered, # it will be relative to the LATEX_OUTPUT directory. If left blank the @@ -2256,7 +2250,7 @@ DOCBOOK_OUTPUT = docbook #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an -# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures +# AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures # the structure of the code including all documentation. Note that this feature # is still experimental and incomplete at the moment. # The default value is: NO. @@ -2267,6 +2261,28 @@ GENERATE_AUTOGEN_DEF = NO # Configuration options related to Sqlite3 output #--------------------------------------------------------------------------- +# If the GENERATE_SQLITE3 tag is set to YES doxygen will generate a Sqlite3 +# database with symbols found by doxygen stored in tables. +# The default value is: NO. + +GENERATE_SQLITE3 = NO + +# The SQLITE3_OUTPUT tag is used to specify where the Sqlite3 database will be +# put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put +# in front of it. +# The default directory is: sqlite3. +# This tag requires that the tag GENERATE_SQLITE3 is set to YES. + +SQLITE3_OUTPUT = sqlite3 + +# The SQLITE3_OVERWRITE_DB tag is set to YES, the existing doxygen_sqlite3.db +# database file will be recreated with each doxygen run. If set to NO, doxygen +# will warn if an a database file is already found and not modify it. +# The default value is: YES. +# This tag requires that the tag GENERATE_SQLITE3 is set to YES. + +SQLITE3_RECREATE_DB = YES + #--------------------------------------------------------------------------- # Configuration options related to the Perl module output #--------------------------------------------------------------------------- @@ -2322,7 +2338,7 @@ ENABLE_PREPROCESSING = YES # The default value is: NO. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -MACRO_EXPANSION = NO +MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then # the macro expansion is limited to the macros specified with the PREDEFINED and @@ -2330,7 +2346,7 @@ MACRO_EXPANSION = NO # The default value is: NO. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -EXPAND_ONLY_PREDEF = NO +EXPAND_ONLY_PREDEF = YES # If the SEARCH_INCLUDES tag is set to YES, the include files in the # INCLUDE_PATH will be searched if a #include is found. @@ -2431,16 +2447,9 @@ EXTERNAL_GROUPS = YES EXTERNAL_PAGES = YES #--------------------------------------------------------------------------- -# Configuration options related to the dot tool +# Configuration options related to diagram generator tools #--------------------------------------------------------------------------- -# You can include diagrams made with dia in doxygen documentation. Doxygen will -# then run dia to produce the diagram and insert it in the documentation. The -# DIA_PATH tag allows you to specify the directory where the dia binary resides. -# If left empty dia is assumed to be found in the default search path. - -DIA_PATH = - # If set to YES the inheritance and collaboration graphs will hide inheritance # and usage relations if the target is undocumented or is not a class. # The default value is: YES. @@ -2449,7 +2458,7 @@ HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz (see: -# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent # Bell Labs. The other options in this section have no effect if this option is # set to NO # The default value is: NO. @@ -2502,13 +2511,15 @@ DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" DOT_FONTPATH = -# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a -# graph for each documented class showing the direct and indirect inheritance -# relations. In case HAVE_DOT is set as well dot will be used to draw the graph, -# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set -# to TEXT the direct and indirect inheritance relations will be shown as texts / -# links. -# Possible values are: NO, YES, TEXT and GRAPH. +# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then doxygen will +# generate a graph for each documented class showing the direct and indirect +# inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and +# HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case +# the CLASS_GRAPH tag is set to YES and HAVE_DOT is disabled or if the +# CLASS_GRAPH tag is set to BUILTIN, then the built-in generator will be used. +# If the CLASS_GRAPH tag is set to TEXT the direct and indirect inheritance +# relations will be shown as texts / links. +# Possible values are: NO, YES, TEXT, GRAPH and BUILTIN. # The default value is: YES. CLASS_GRAPH = YES @@ -2579,7 +2590,7 @@ DOT_WRAP_THRESHOLD = 17 # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -TEMPLATE_RELATIONS = NO +TEMPLATE_RELATIONS = YES # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to # YES then doxygen will generate a graph for each documented file showing the @@ -2649,7 +2660,7 @@ DIR_GRAPH_MAX_DEPTH = 1 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. For an explanation of the image formats see the section # output formats in the documentation of the dot tool (Graphviz (see: -# http://www.graphviz.org/)). +# https://www.graphviz.org/)). # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order # to make the SVG files visible in IE 9+ (other browsers do not have this # requirement). @@ -2686,11 +2697,12 @@ DOT_PATH = DOTFILE_DIRS = -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the \mscfile -# command). +# You can include diagrams made with dia in doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. -MSCFILE_DIRS = +DIA_PATH = # The DIAFILE_DIRS tag can be used to specify one or more directories that # contain dia files that are included in the documentation (see the \diafile @@ -2738,7 +2750,7 @@ DOT_GRAPH_MAX_NODES = 50 # Minimum value: 0, maximum value: 1000, default value: 0. # This tag requires that the tag HAVE_DOT is set to YES. -MAX_DOT_GRAPH_DEPTH = 4 +MAX_DOT_GRAPH_DEPTH = 5 # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This @@ -2767,3 +2779,19 @@ GENERATE_LEGEND = YES # The default value is: YES. DOT_CLEANUP = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. If the MSCGEN_TOOL tag is left empty (the default), then doxygen will +# use a built-in version of mscgen tool to produce the charts. Alternatively, +# the MSCGEN_TOOL tag can also specify the name an external tool. For instance, +# specifying prog as the value, doxygen will call the tool as prog -T +# -o . The external tool should support +# output file formats "png", "eps", "svg", and "ismap". + +MSCGEN_TOOL = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml new file mode 100644 index 0000000000..e42b1a7250 --- /dev/null +++ b/.github/workflows/build_deps.yml @@ -0,0 +1,79 @@ +# name: Build Deps +name: Build deps + +on: + pull_request: + branches: + - main + paths: + - 'deps/**' + push: + branches: + - main + paths: + - 'deps/**' + +jobs: + build_deps: + strategy: + fail-fast: true + matrix: + include: + - os: ubuntu-22.04 + - os: windows-2019 + - os: macos-12 + arch: x86_64 + - os: macos-12 + arch: arm64 + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: setup dev on Windows + if: matrix.os == 'Windows' + uses: ilammy/msvc-dev-cmd@v1 + + - name: Build on Windows + if: matrix.os == 'windows-2019' + working-directory: ${{ github.workspace }} + run: | + choco install strawberryperl + mkdir ${{ github.workspace }}/deps/build + mkdir ${{ github.workspace }}/deps/build/OrcaSlicer_dep + .\build_release.bat deps + + - name: Build on Mac x86_64 + if: matrix.os == 'macos-12' && matrix.arch == 'x86_64' + working-directory: ${{ github.workspace }} + run: | + brew install cmake git gettext + mkdir -p ${{ github.workspace }}/deps/build_x86_64 + mkdir -p ${{ github.workspace }}/deps/build_x86_64/OrcaSlicer_dep_x86_64 + ./build_release_macos.sh -d -a x86_64 + + - name: Build on Mac arm64 + if: matrix.os == 'macos-12' && matrix.arch == 'arm64' + working-directory: ${{ github.workspace }} + run: | + brew install cmake git gettext + mkdir -p ${{ github.workspace }}/deps/build_arm64 + mkdir -p ${{ github.workspace }}/deps/build_arm64/OrcaSlicer_dep_arm64 + ./build_release_macos.sh -d -a arm64 + + - name: Build on Ubuntu + if: matrix.os == 'ubuntu-22.04' + working-directory: ${{ github.workspace }} + run: | + sudo apt-get update + sudo apt-get install -y cmake git g++ build-essential libgl1-mesa-dev m4 \ + libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules pkgconf \ + libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-4.0-dev \ + libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev \ + gstreamer1.0-plugins-bad libosmesa6-dev wget sudo autoconf curl libunwind-dev + mkdir -p ${{ github.workspace }}/deps/build + mkdir -p ${{ github.workspace }}/deps/build/destdir + sudo ./BuildLinux.sh -ur + sudo chown $USER -R ./ + ./BuildLinux.sh -dr \ No newline at end of file diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index f23f7f357e..043c34fc1b 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -6,7 +6,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' @@ -17,7 +16,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' @@ -64,11 +62,11 @@ jobs: run: | mkdir -p ${{ github.workspace }}/deps/build mkdir -p ${{ github.workspace }}/deps/build/destdir - curl -LJO https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Mar/OrcaSlicer_dep_ubuntu_05-04-2023.tar.gz - tar -zxf OrcaSlicer_dep_ubuntu_05-04-2023.tar.gz -C ${{ github.workspace }}/deps/build + curl -LJO https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Jun_2023/OrcaSlicer_dep_ubuntu_11-06-2023.tar.gz + tar -zxf OrcaSlicer_dep_ubuntu_11-06-2023.tar.gz -C ${{ github.workspace }}/deps/build chown -R $(id -u):$(id -g) ${{ github.workspace }}/deps/build/destdir ls -l ${{ github.workspace }}/deps/build/destdir - rm OrcaSlicer_dep_ubuntu_05-04-2023.tar.gz + rm OrcaSlicer_dep_ubuntu_11-06-2023.tar.gz - name: Build Studio diff --git a/.github/workflows/build_mac_arm64.yml b/.github/workflows/build_mac_arm64.yml index bd138c2a44..1316ee1806 100644 --- a/.github/workflows/build_mac_arm64.yml +++ b/.github/workflows/build_mac_arm64.yml @@ -6,7 +6,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' @@ -17,7 +16,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' diff --git a/.github/workflows/build_mac_x64.yml b/.github/workflows/build_mac_x64.yml index 8d48460dd6..c3544f56eb 100644 --- a/.github/workflows/build_mac_x64.yml +++ b/.github/workflows/build_mac_x64.yml @@ -6,7 +6,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' @@ -17,7 +16,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' diff --git a/.github/workflows/build_win.yml b/.github/workflows/build_win.yml index 0fabf39707..b3a81574fa 100644 --- a/.github/workflows/build_win.yml +++ b/.github/workflows/build_win.yml @@ -6,7 +6,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' @@ -17,7 +16,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' diff --git a/.gitignore b/.gitignore index da7a18c3a9..efe2e50257 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,6 @@ deps/build-linux/* install_* build_*/ SVG -src/OrcaSlicer-doc/ \ No newline at end of file +src/OrcaSlicer-doc/ +.idea/ +bbl/i18n/es/OrcaSlicer_es.mo diff --git a/README.md b/README.md index bc49d919f5..77f8547f08 100644 --- a/README.md +++ b/README.md @@ -33,12 +33,16 @@ Prebuilt binaries are available through the [github releases page](https://githu 2. Double click to unzip the package, move OrcaSlicer.app to Application folder. 3. The app is signed but not notarized at the moment due to the proptiery network plugin. We have two options to make it run on our machines - - Option 1: + - Option 1 (You only need to do this once. After that the app can be oppened normally.): + - Step 1: Hold _cmd_ and right click the app, from the context menu choose **Open**. + - Step 2: A warning window will pop up, click _Open_ + + - Option 2: Execute this command in terminal: `xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app` ```console softfever@mac:~$ xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app ``` - - Option 2: + - Option 3: - Step 1: open the app, a warning window will pop up ![image](./SoftFever_doc/mac_cant_open.png) - Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`: diff --git a/bbl/i18n/OrcaSlicer.pot b/bbl/i18n/OrcaSlicer.pot index b28a1ff3ee..14d31487bd 100644 --- a/bbl/i18n/OrcaSlicer.pot +++ b/bbl/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:52+0800\n" +"POT-Creation-Date: 2023-07-07 00:37+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1838,7 +1838,10 @@ msgstr "" msgid "You need to select the material type and color first." msgstr "" -msgid "Other color" +msgid "Other Color" +msgstr "" + +msgid "Custom Color" msgstr "" msgid "Dynamic flow calibration" @@ -6067,6 +6070,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "" +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6599,11 +6605,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops 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" +"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" @@ -6929,6 +6935,45 @@ msgstr "" msgid "Lightning" msgstr "" +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." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +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." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" @@ -7681,6 +7726,14 @@ msgstr "" msgid "Random" 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 "Seam gap" msgstr "" @@ -7736,6 +7789,12 @@ msgstr "" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + 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" @@ -8712,103 +8771,3 @@ msgstr "" msgid "Connection to printers connected via the print host failed." 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 "" - -#: resources/data/hints.ini: [hint:Cut Tool] -msgid "Cut Tool\nDid you know that you can cut a model at any angle and position with the cutting tool?" -msgstr "" - -#: resources/data/hints.ini: [hint:Fix Model] -msgid "Fix Model\nDid you know that you can fix a corrupted 3D model to avoid a lot of slicing problems?" -msgstr "" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "Timelapse\nDid you know that you can generate a timelapse video during each print?" -msgstr "" - -#: resources/data/hints.ini: [hint:Auto-Arrange] -msgid "Auto-Arrange\nDid you know that you can auto-arrange all objects in your project?" -msgstr "" - -#: resources/data/hints.ini: [hint:Auto-Orient] -msgid "Auto-Orient\nDid you know that you can rotate objects to an optimal orientation for printing by a simple click?" -msgstr "" - -#: resources/data/hints.ini: [hint:Lay on Face] -msgid "Lay on Face\nDid 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 "" - -#: resources/data/hints.ini: [hint:Object List] -msgid "Object List\nDid you know that you can view all objects/parts in a list and change settings for each object/part?" -msgstr "" - -#: resources/data/hints.ini: [hint:Simplify Model] -msgid "Simplify Model\nDid 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 "" - -#: resources/data/hints.ini: [hint:Slicing Parameter Table] -msgid "Slicing Parameter Table\nDid you know that you can view all objects/parts on a table and change settings for each object/part?" -msgstr "" - -#: resources/data/hints.ini: [hint:Split to Objects/Parts] -msgid "Split to Objects/Parts\nDid you know that you can split a big object into small ones for easy colorizing or printing?" -msgstr "" - -#: resources/data/hints.ini: [hint:Subtract a Part] -msgid "Subtract a Part\nDid 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 "" - -#: resources/data/hints.ini: [hint:STEP] -msgid "STEP\nDid you know that you can improve your print quality by slicing a STEP file instead of an STL?\nOrca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" -msgstr "" - -#: resources/data/hints.ini: [hint:Z seam location] -msgid "Z seam location\nDid 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 "" - -#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] -msgid "Fine-tuning for flow rate\nDid 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 "" - -#: resources/data/hints.ini: [hint:Split your prints into plates] -msgid "Split your prints into plates\nDid 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 "" - -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] -msgid "Speed up your print with Adaptive Layer Height\nDid you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" -msgstr "" - -#: resources/data/hints.ini: [hint:Support painting] -msgid "Support painting\nDid 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 "" - -#: resources/data/hints.ini: [hint:Different types of supports] -msgid "Different types of supports\nDid 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 "" - -#: resources/data/hints.ini: [hint:Printing Silk Filament] -msgid "Printing Silk Filament\nDid 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 "" - -#: resources/data/hints.ini: [hint:Brim for better adhesion] -msgid "Brim for better adhesion\nDid you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?" -msgstr "" - -#: resources/data/hints.ini: [hint:Set parameters for multiple objects] -msgid "Set parameters for multiple objects\nDid you know that you can set slicing parameters for all selected objects at one time?" -msgstr "" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "Stack objects\nDid you know that you can stack objects as a whole one?" -msgstr "" - -#: resources/data/hints.ini: [hint:Flush into support/objects/infill] -msgid "Flush into support/objects/infill\nDid you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?" -msgstr "" - -#: resources/data/hints.ini: [hint:Improve strength] -msgid "Improve strength\nDid you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" -msgstr "" diff --git a/bbl/i18n/cs/OrcaSlicer_cs.po b/bbl/i18n/cs/OrcaSlicer_cs.po index d8888c3945..165527af1a 100755 --- a/bbl/i18n/cs/OrcaSlicer_cs.po +++ b/bbl/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-07-07 00:37+0800\n" "PO-Revision-Date: 2023-03-31 22:48+0200\n" "Last-Translator: Momo \n" "Language-Team: \n" @@ -1909,7 +1909,10 @@ msgstr "Zadejte platnou hodnotu (K v 0~0,5, N v 0,6~2,0)" msgid "You need to select the material type and color first." msgstr "" -msgid "Other color" +msgid "Other Color" +msgstr "" + +msgid "Custom Color" msgstr "" msgid "Dynamic flow calibration" @@ -6437,6 +6440,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "Žádné extruze pod aktuálním nastavením." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -7079,17 +7085,12 @@ msgid "Internal bridge support thickness" msgstr "Tloušťka vnitřní podpory mostu" msgid "" -"If enabled, Studio will generate support loops 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" +"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, Studio vygeneruje podpůrné smyčky pod obrysy vnitřních " -"mostů. Tyto podpůrné smyčky by mohly bránit vnitřním mostům vytlačováním " -"vzduchem a zlepšují špičkovou kvalitu povrchu, zvláště když řídká hustota " -"výplně je nízká. Tato hodnota určuje tloušťku výplně podpůrné smyčky. 0 " -"znamená vypnutí této funkce" msgid "Top surface pattern" msgstr "Vzor horního povrchu" @@ -7456,6 +7457,45 @@ msgstr "Kubický podepíraný" msgid "Lightning" msgstr "Blesky" +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." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +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." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "Zrychlení vnějších stěny" @@ -8302,6 +8342,14 @@ msgstr "Zezadu" msgid "Random" msgstr "Náhodný" +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 "Seam gap" msgstr "Mezera švu" @@ -8370,6 +8418,12 @@ 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 sukně" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + 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" @@ -9496,270 +9550,259 @@ msgstr "" msgid "Connection to printers connected via the print host failed." 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 "" -"Operace 3D scény\n" -"Did jste, jak ovládat pohled a výběr objektů/dílů pomocí myši a dotykového " -"panelu ve 3D scéně?" +#~ 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 "" +#~ "Operace 3D scény\n" +#~ "Did jste, jak ovládat pohled a výběr objektů/dílů pomocí myši a " +#~ "dotykového panelu ve 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?" -msgstr "" -"Nástroj pro řezání\n" -"Did jste, že pomocí řezného nástroje můžete řezat model v libovolném úhlu a " -"poloze?" +#~ msgid "" +#~ "Cut Tool\n" +#~ "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" +#~ "Did jste, že pomocí řezného nástroje můžete řezat model v libovolném úhlu " +#~ "a poloze?" -#: 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 "" -"Opravit model\n" -"Did jste, že můžete opravit poškozený 3D model, abyste se vyhnuli mnoha " -"problémům s krájením?" +#~ msgid "" +#~ "Fix Model\n" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " +#~ "slicing problems?" +#~ msgstr "" +#~ "Opravit model\n" +#~ "Did jste, že můžete opravit poškozený 3D model, abyste se vyhnuli mnoha " +#~ "problémům s krájením?" -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" -"Časosběr\n" -"Did jste, že můžete generovat časosběrné video během každého tisku?" +#~ msgid "" +#~ "Timelapse\n" +#~ "Did you know that you can generate a timelapse video during each print?" +#~ msgstr "" +#~ "Časosběr\n" +#~ "Did jste, že můžete generovat časosběrné video během každého tisku?" -#: 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 "" -"Automatické uspořádání\n" -"Did jste, že můžete automaticky uspořádat všechny objekty ve svém projektu?" +#~ msgid "" +#~ "Auto-Arrange\n" +#~ "Did you know that you can auto-arrange all objects in your project?" +#~ msgstr "" +#~ "Automatické uspořádání\n" +#~ "Did jste, že můžete automaticky uspořádat všechny objekty ve svém " +#~ "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?" -msgstr "" -"Auto-Orient\n" -"Did jste, že můžete otočit objekty do optimální orientace pro tisk " -"jednoduchým kliknutím?" +#~ msgid "" +#~ "Auto-Orient\n" +#~ "Did you know that you can rotate objects to an optimal orientation for " +#~ "printing by a simple click?" +#~ msgstr "" +#~ "Auto-Orient\n" +#~ "Did jste, že můžete otočit objekty do optimální orientace pro tisk " +#~ "jednoduchým kliknutím?" -#: 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 "" -"Plochou na podložku\n" -"Did jste, že můžete rychle orientovat model tak, aby jedna z jeho tváří " -"seděla na tiskové podložce? Vyberte funkci \"Umístit na obličej\" nebo " -"stiskněte klávesu F ." +#~ 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 "" +#~ "Plochou na podložku\n" +#~ "Did jste, že můžete rychle orientovat model tak, aby jedna z jeho tváří " +#~ "seděla na tiskové podložce? Vyberte funkci \"Umístit na obličej\" 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?" -msgstr "" -"Seznam objektů\n" -"Did jste, že můžete zobrazit všechny objekty/části v seznamu a změnit " -"nastavení pro každý objekt/část?" +#~ 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 "" +#~ "Seznam objektů\n" +#~ "Did jste, že můžete zobrazit všechny objekty/části v seznamu a změnit " +#~ "nastavení pro každý objekt/část?" -#: 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 "" -"Zjednodušte model\n" -"Did 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 Zjednodušit " -"model. Více v dokumentaci." +#~ 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 "" +#~ "Zjednodušte model\n" +#~ "Did 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 Zjednodušit " +#~ "model. Více 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?" -msgstr "" -"Tabulka parametrů dělení\n" -"Did jste, že můžete zobrazit všechny objekty/části v tabulce a změnit " -"nastavení pro každý objekt/část?" +#~ 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 "" +#~ "Tabulka parametrů dělení\n" +#~ "Did 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?" -msgstr "" -"Rozdělit na objekty/části\n" -"Didi jste, že velký objekt můžete rozdělit na malé pro snadné obarvení nebo " -"tisk?" +#~ 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 "" +#~ "Rozdělit na objekty/části\n" +#~ "Didi jste, že velký objekt můžete rozdělit na malé pro snadné obarvení " +#~ "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." -msgstr "" -"Odečtení dílu\n" -"Did jste, že můžete odečíst jednu síť od druhé pomocí modifikátoru záporné " -"části? Tímto způsobem můžete například vytvářet snadno měnitelné otvory " -"přímo v Orca Slicer. Přečtěte si více v dokumentaci." +#~ 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 "" +#~ "Odečtení dílu\n" +#~ "Did jste, že můžete odečíst jednu síť od druhé pomocí modifikátoru " +#~ "záporné části? Tímto způsobem můžete například vytvářet snadno měnitelné " +#~ "otvory přímo v 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!" -msgstr "" -"STEP\n" -"Did jste, že kvalitu tisku můžete zlepšit krájením souboru STEP místo STL?\n" -"Orca Slicer podporuje krájení souborů STEP a poskytuje hladší výsledky než " -"STL s nižším rozlišením. Vyzkoušejte to!" +#~ 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 "" +#~ "STEP\n" +#~ "Did jste, že kvalitu tisku můžete zlepšit krájením souboru STEP místo " +#~ "STL?\n" +#~ "Orca Slicer podporuje krájení souborů STEP a poskytuje hladší výsledky " +#~ "než STL s nižším rozlišením. 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!" -msgstr "" -"Umístění Z švu\n" -"Did jste, že si můžete přizpůsobit umístění Z švu a dokonce jej namalovat na " -"tisk, abyste jej měli na méně viditelném místě? To zlepšuje celkový vzhled " -"vašeho modelu. Vyzkoušejte to!" +#~ 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 "" +#~ "Umístění Z švu\n" +#~ "Did jste, že si můžete přizpůsobit umístění Z švu a dokonce jej namalovat " +#~ "na tisk, abyste jej měli na méně viditelném místě? To zlepšuje celkový " +#~ "vzhled vašeho modelu. Vyzkoušejte 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." -msgstr "" -"Jemné doladění průtoku\n" -"Did jste, že průtok lze vyladit pro ještě lépe vypadající výtisky? V " -"závislosti na materiálu můžete vylepšit celkovou povrchovou úpravu tištěného " -"modelu provedením nějakého jemného doladění." +#~ 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 "" +#~ "Jemné doladění průtoku\n" +#~ "Did jste, že průtok lze vyladit pro ještě lépe vypadající výtisky? V " +#~ "závislosti na materiálu můžete vylepšit celkovou povrchovou úpravu " +#~ "tištěného modelu provedením nějakého jemné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." -msgstr "" -"Rozdělit výtisky na desky\n" -"Did jste, že můžete rozdělit model, který má mnoho dílů, na jednotlivé desky " -"připravené k tisku? To zjednoduší proces sledování všech dílů." +#~ 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 "" +#~ "Rozdělit výtisky na desky\n" +#~ "Did jste, že můžete rozdělit model, který má mnoho dílů, na jednotlivé " +#~ "desky připravené k tisku? To zjednoduší proces sledování všech dílů." -#: 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 "" -"Urychlete svůj tisk pomocí Adaptivní výšky vrstvy\n" -"Did jste, že můžete tisknout model ještě rychleji pomocí možnosti Adaptivní " -"výška vrstvy? Vyzkoušejte to!" +#~ 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 "" +#~ "Urychlete svůj tisk pomocí Adaptivní výšky vrstvy\n" +#~ "Did jste, že můžete tisknout model ještě rychleji pomocí možnosti " +#~ "Adaptivní výška vrstvy? Vyzkoušejte to!" -#: 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 "" -"Malování podpěry\n" -"Did jste, že můžete namalovat umístění svých podpěr? Tato funkce usnadňuje " -"umístění podpěrného materiálu pouze na části modelu, které to skutečně " -"potřebují." +#~ 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 "" +#~ "Malování podpěry\n" +#~ "Did jste, že můžete namalovat umístění svých podpěr? Tato funkce " +#~ "usnadňuje umístění podpěrného materiálu pouze na části modelu, které to " +#~ "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!" -msgstr "" -"Různé typy podpěr\n" -"Did jste, že si můžete vybrat z více typů podpěr? Podpěry stromu fungují " -"skvěle pro organické modely, přičemž šetří vlákno a zlepšují rychlost tisku. " -"Vyzkoušejte je!" +#~ 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 "" +#~ "Různé typy podpěr\n" +#~ "Did jste, že si můžete vybrat z více typů podpěr? Podpěry stromu fungují " +#~ "skvěle pro organické modely, přičemž šetří vlákno a zlepšují rychlost " +#~ "tisku. Vyzkoušejte je!" -#: 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 "" -"Tisk hedvábného vlákna\n" -"Did jste, že hedvábný filament vyžaduje zvláštní pozornost, aby byl úspěšný? " -"Pro dosažení nejlepších výsledků se vždy doporučuje vyšší teplota a nižší " -"rychlost." +#~ 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 "" +#~ "Tisk hedvábného vlákna\n" +#~ "Did jste, že hedvábný filament vyžaduje zvláštní pozornost, aby byl " +#~ "úspěšný? Pro dosažení nejlepších výsledků se vždy doporučuje vyšší " +#~ "teplota a nižší rychlost." -#: 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 "" -"Okraj pro lepší přilnavost\n" -"Did jste, že když tiskové modely mají malé kontaktní rozhraní s tiskovou " -"plochou, doporučuje se použít okraj?" +#~ 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 "" +#~ "Okraj pro lepší přilnavost\n" +#~ "Did jste, že když tiskové modely mají malé kontaktní rozhraní s tiskovou " +#~ "plochou, doporučuje se použít okraj?" -#: 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 "" -"Nastavit parametry pro více objektů\n" -"Did jste, že můžete nastavit parametry krájení pro všechny vybrané objekty " -"najednou?" +#~ msgid "" +#~ "Set parameters for multiple objects\n" +#~ "Did you know that you can set slicing parameters for all selected objects " +#~ "at one time?" +#~ msgstr "" +#~ "Nastavit parametry pro více objektů\n" +#~ "Did jste, že můžete nastavit parametry krájení pro všechny vybrané " +#~ "objekty najednou?" -#: resources/data/hints.ini: [hint:Stack objects] -msgid "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -msgstr "" -"Skládat objekty\n" -"Did jste, že můžete skládat objekty jako jeden celek?" +#~ msgid "" +#~ "Stack objects\n" +#~ "Did you know that you can stack objects as a whole one?" +#~ msgstr "" +#~ "Skládat objekty\n" +#~ "Did jste, že můžete skládat objekty jako jeden celek?" -#: 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 "" -"Vypláchnout do support/objects/infill\n" -"Did jste, že můžete zachránit ztracené vlákno jejich vypláchnutím do support/" -"objects/infill během výměny vlákna?" +#~ 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 "" +#~ "Vypláchnout do support/objects/infill\n" +#~ "Did jste, že můžete zachránit ztracené vlákno jejich vypláchnutím do " +#~ "support/objects/infill během výměny vlákna?" -#: 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 "" -"Zlepšete pevnost\n" -"Did jste, že ke zlepšení pevnosti modelu můžete použít více smyček na stěně " -"a vyšší hustotu výplně?" +#~ 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 "" +#~ "Zlepšete pevnost\n" +#~ "Did jste, že ke zlepšení pevnosti modelu můžete použít více smyček na " +#~ "stěně a vyšší hustotu výplně?" + +#~ 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, Studio vygeneruje podpůrné smyčky pod obrysy vnitřních " +#~ "mostů. Tyto podpůrné smyčky by mohly bránit vnitřním mostům vytlačováním " +#~ "vzduchem a zlepšují špičkovou kvalitu povrchu, zvláště když řídká hustota " +#~ "výplně je nízká. Tato hodnota určuje tloušťku výplně podpůrné smyčky. 0 " +#~ "znamená vypnutí této funkce" #~ msgid "Bridge direction" #~ msgstr "Směr mostu" diff --git a/bbl/i18n/de/OrcaSlicer_de.po b/bbl/i18n/de/OrcaSlicer_de.po index 4d4631f166..d10115a393 100644 --- a/bbl/i18n/de/OrcaSlicer_de.po +++ b/bbl/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-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-07-07 00:37+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -841,7 +841,7 @@ msgid "Load..." msgstr "Laden..." msgid "Orca Cube" -msgstr "" +msgstr "Orca Würfel" msgid "3DBenchy" msgstr "" @@ -850,7 +850,7 @@ msgid "Autodesk FDM Test" msgstr "" msgid "Voron Cube" -msgstr "" +msgstr "Voron Würfel" msgid "Cube" msgstr "Würfel" @@ -1949,8 +1949,11 @@ msgstr "" msgid "You need to select the material type and color first." msgstr "Sie müssen zuerst den Materialtyp und die Farbe auswählen." -msgid "Other color" -msgstr "Andere Farbe" +msgid "Other Color" +msgstr "" + +msgid "Custom Color" +msgstr "" msgid "Dynamic flow calibration" msgstr "Dynamische Flusskalibrierung" @@ -6641,6 +6644,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "Keine Extrusion unter den aktuellen Einstellungen." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -7315,17 +7321,12 @@ msgid "Internal bridge support thickness" msgstr "Dicke der internen Brückenstützen" msgid "" -"If enabled, Studio will generate support loops 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" +"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, generiert Studio Stützschleifen unter den Konturen interner " -"Brücken. Diese Stützschleifen könnten verhindern, dass interne Brücken über " -"die Luft extrudieren, und die höchste Oberflächenqualität verbessern, " -"insbesondere wenn die spärliche Fülldichte 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" @@ -7712,6 +7713,66 @@ msgstr "Kubisch Stützen" msgid "Lightning" msgstr "Blitz" +msgid "Sparse infill anchor length" +msgstr "Länge des Infill-Ankers" + +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 "" +"Verbindet eine Infill-Linie mit einem kurzen Segment eines zusätzlichen " +"Perimeters mit einem internen Perimeter. Wenn sie als Prozentsatz " +"ausgedrückt wird (Beispiel: 15%), wird sie über die Breite der Infill-" +"Extrusion berechnet. OrcaSlicer versucht, zwei nahe beieinander liegende " +"Infill-Linien mit einem kurzen Perimetersegment zu verbinden. Wenn kein " +"solches Perimetersegment gefunden wird, das kürzer als infill_anchor_max " +"ist, wird die Infill-Linie nur an einer Seite mit einem Perimetersegment " +"verbunden und die Länge des genommenen Perimetersegments ist auf diesen " +"Parameter begrenzt, aber nicht länger als anchor_length_max. Setzen Sie " +"diesen Parameter auf Null, um die Verankerung von Perimetern zu " +"deaktivieren, die mit einer einzelnen Infill-Linie verbunden sind." + +msgid "0 (no open anchors)" +msgstr "0 (keine offenen Anker)" + +msgid "1000 (unlimited)" +msgstr "1000 (unbegrenzt)" + +msgid "Maximum length of the infill anchor" +msgstr "Maximale Länge des Infill-Ankers" + +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 "" +"Verbindet eine Infill-Linie mit einem kurzen Segment eines zusätzlichen " +"Perimeters mit einem internen Perimeter. Wenn sie als Prozentsatz " +"ausgedrückt wird (Beispiel: 15%), wird sie über die Breite der Infill-" +"Extrusion berechnet. OrcaSlicer versucht, zwei nahe beieinander liegende " +"Infill-Linien mit einem kurzen Perimetersegment zu verbinden. Wenn kein " +"solches Perimetersegment gefunden wird, das kürzer als dieser Parameter ist, " +"wird die Infill-Linie nur an einer Seite mit einem Perimetersegment " +"verbunden und die Länge des genommenen Perimetersegments wird auf " +"infill_anchor begrenzt, aber nicht länger als dieser Parameter. Setzen Sie " +"diesen Parameter auf Null, um die Verankerung zu deaktivieren." + +msgid "0 (Simple connect)" +msgstr "0 (Einfache Verbindung)" + msgid "Acceleration of outer walls" msgstr "Beschleunigung Außenwände" @@ -8629,6 +8690,14 @@ msgstr "Rückseite" msgid "Random" msgstr "Zufall" +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 "Seam gap" msgstr "Naht Zwischenraum" @@ -8705,6 +8774,12 @@ msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "" "Anzahl der Ringe für die Umrandung. Null bedeutet Deaktivierung der Umrandung" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + 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" @@ -9887,280 +9962,275 @@ msgstr "" "CA-Datei in den Zertifikatspeicher / das Schlüsselbund." msgid "Connection to printers connected via the print host failed." -msgstr "Die Verbindung zu den über den Druck-Host verbundenen Druckern ist fehlgeschlagen." - -#: 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-Szenenbedienung\n" -"Wissen Sie, wie Sie die Ansicht und die Auswahl von Objekten/Teilen in der " -"3D-Szene mit der Maus und dem Touchpad steuern können?" +"Die Verbindung zu den über den Druck-Host verbundenen Druckern ist " +"fehlgeschlagen." -#: 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 "" -"Schnittwerkzeug\n" -"Wussten Sie, dass Sie mit dem Schnittwerkzeug ein Modell in jedem beliebigen " -"Winkel und jeder beliebigen Position zerschneiden können?" +#~ msgid "Other color" +#~ msgstr "Andere Farbe" -#: 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 "" -"Modell reparieren\n" -"Wussten Sie, dass Sie ein beschädigtes 3D-Modell reparieren können, um viele " -"Probleme beim Slicen zu vermeiden?" +#~ 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-Szenenbedienung\n" +#~ "Wissen Sie, wie Sie die Ansicht und die Auswahl von Objekten/Teilen in " +#~ "der 3D-Szene mit der Maus und dem Touchpad steuern können?" -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" -"Zeitraffer\n" -"Wussten Sie, dass Sie bei jedem Druck ein Zeitraffervideo erstellen können?" +#~ msgid "" +#~ "Cut Tool\n" +#~ "Did you know that you can cut a model at any angle and position with the " +#~ "cutting tool?" +#~ msgstr "" +#~ "Schnittwerkzeug\n" +#~ "Wussten Sie, dass Sie mit dem Schnittwerkzeug ein Modell in jedem " +#~ "beliebigen Winkel und jeder beliebigen Position zerschneiden können?" -#: 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 "" -"Automatisch anordnen\n" -"Wussten Sie, dass Sie alle Objekte in Ihrem Projekt automatisch anordnen " -"können?" +#~ msgid "" +#~ "Fix Model\n" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " +#~ "slicing problems?" +#~ msgstr "" +#~ "Modell reparieren\n" +#~ "Wussten Sie, dass Sie ein beschädigtes 3D-Modell reparieren können, um " +#~ "viele Probleme beim Slicen zu vermeiden?" -#: 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 "" -"Automatische Ausrichtung\n" -"Wussten Sie schon, dass Sie Objekte mit einem einfachen Klick in eine für " -"den Druck optimale Ausrichtung drehen können?" +#~ msgid "" +#~ "Timelapse\n" +#~ "Did you know that you can generate a timelapse video during each print?" +#~ msgstr "" +#~ "Zeitraffer\n" +#~ "Wussten Sie, dass Sie bei jedem Druck ein Zeitraffervideo erstellen " +#~ "können?" -#: 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 "" -"Auf Fläche legen\n" -"Wussten Sie, dass Sie ein Modell schnell so ausrichten können, dass eine " -"seiner Flächen auf dem Druckbett liegt? Wählen Sie die Funktion \"Auf Fläche " -"legen\" oder drücken Sie die Taste F." +#~ msgid "" +#~ "Auto-Arrange\n" +#~ "Did you know that you can auto-arrange all objects in your project?" +#~ msgstr "" +#~ "Automatisch anordnen\n" +#~ "Wussten Sie, dass Sie alle Objekte in Ihrem Projekt automatisch anordnen " +#~ "können?" -#: 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 "" -"Objekt-Liste\n" -"Wussten Sie, dass Sie alle Objekte/Teile in einer Liste anzeigen und die " -"Einstellungen für jedes Objekt/Teil ändern können?" +#~ msgid "" +#~ "Auto-Orient\n" +#~ "Did you know that you can rotate objects to an optimal orientation for " +#~ "printing by a simple click?" +#~ msgstr "" +#~ "Automatische Ausrichtung\n" +#~ "Wussten Sie schon, dass Sie Objekte mit einem einfachen Klick in eine für " +#~ "den Druck optimale Ausrichtung drehen können?" -#: 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 "" -"Modell vereinfachen\n" -"Wussten Sie schon, dass Sie die Anzahl der Dreiecke in einem Netz mit der " -"Funktion \"Netz vereinfachen\" reduzieren können? Klicken Sie mit der " -"rechten Maustaste auf das Modell und wählen Sie \"Modell vereinfachen\". " -"Weitere Informationen finden Sie in der Dokumentation." +#~ 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 "" +#~ "Auf Fläche legen\n" +#~ "Wussten Sie, dass Sie ein Modell schnell so ausrichten können, dass eine " +#~ "seiner Flächen auf dem Druckbett liegt? Wählen Sie die Funktion \"Auf " +#~ "Fläche legen\" oder drücken Sie die Taste F." -#: 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 "" -"Parametertabelle für das Slicen\n" -"Wussten Sie, dass Sie alle Objekte/Teile in einer Tabelle anzeigen und die " -"Einstellungen für jedes Objekt/Teil ändern können?" +#~ 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 "" +#~ "Objekt-Liste\n" +#~ "Wussten Sie, dass Sie alle Objekte/Teile in einer Liste anzeigen und die " +#~ "Einstellungen für jedes Objekt/Teil ändern können?" -#: 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 "" -"In Objekte/Teile aufteilen\n" -"Wussten Sie, dass Sie ein großes Objekt in kleine Teile aufteilen können, um " -"es leichter einzufärben oder drucken zu können?" +#~ 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 "" +#~ "Modell vereinfachen\n" +#~ "Wussten Sie schon, dass Sie die Anzahl der Dreiecke in einem Netz mit der " +#~ "Funktion \"Netz vereinfachen\" reduzieren können? Klicken Sie mit der " +#~ "rechten Maustaste auf das Modell und wählen Sie \"Modell vereinfachen\". " +#~ "Weitere Informationen finden Sie in der Dokumentation." -#: 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 "" -"Ein Teil subtrahieren\n" -"Wussten Sie, dass Sie mit dem \"negatives Teil Modifikator\" ein Netz von " -"einem anderen subtrahieren können? Auf diese Weise können Sie z.B. leicht " -"veränderbare Löcher direkt in Bambu Studio erstellen. Lesen Sie mehr dazu in " -"der Dokumentation." +#~ 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 "" +#~ "Parametertabelle für das Slicen\n" +#~ "Wussten Sie, dass Sie alle Objekte/Teile in einer Tabelle anzeigen und " +#~ "die Einstellungen für jedes Objekt/Teil ändern können?" -#: 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 "" -"STEP\n" -"Wussten Sie, dass Sie Ihre Druckqualität verbessern können, indem Sie eine " -"STEP-Datei anstelle einer STL-Datei slicen?\n" -"Bambu Studio unterstützt das Slicen von STEP-Dateien und liefert glattere " -"Ergebnisse als eine STL mit geringerer Auflösung. Probiere es aus!" +#~ 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 "" +#~ "In Objekte/Teile aufteilen\n" +#~ "Wussten Sie, dass Sie ein großes Objekt in kleine Teile aufteilen können, " +#~ "um es leichter einzufärben oder drucken zu können?" -#: 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 "" -"Position der Z-Naht\n" -"Wussten Sie, dass Sie die Position der Z-Naht anpassen und sie sogar auf " -"Ihren Druck malen können, um sie an einer weniger sichtbaren Stelle " -"anzubringen? Dadurch wird das Gesamtbild Ihres Modells verbessert. Probiere " -"es aus!" +#~ 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 "" +#~ "Ein Teil subtrahieren\n" +#~ "Wussten Sie, dass Sie mit dem \"negatives Teil Modifikator\" ein Netz von " +#~ "einem anderen subtrahieren können? Auf diese Weise können Sie z.B. leicht " +#~ "veränderbare Löcher direkt in Bambu Studio erstellen. Lesen Sie mehr dazu " +#~ "in der Dokumentation." -#: 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 "" -"Feineinstellung der Flussrate\n" -"Wussten Sie, dass die Flussgeschwindigkeit des Filament fein eingestellt " -"werden kann, um noch besser aussehende Drucke zu erhalten? Je nach Material " -"können Sie das Gesamtergebnis des gedruckten Modells verbessern, indem Sie " -"eine Feineinstellung vornehmen." +#~ 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 "" +#~ "STEP\n" +#~ "Wussten Sie, dass Sie Ihre Druckqualität verbessern können, indem Sie " +#~ "eine STEP-Datei anstelle einer STL-Datei slicen?\n" +#~ "Bambu Studio unterstützt das Slicen von STEP-Dateien und liefert glattere " +#~ "Ergebnisse als eine STL mit geringerer Auflösung. Probiere es aus!" -#: 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 "" -"Drucke in mehrere Druckplatten aufteilen\n" -"Wussten Sie, dass Sie ein Modell, das aus vielen Teilen besteht, in einzelne " -"Druckplatten aufteilen können? Dadurch wird es einfacher, den Überblick über " -"alle Teile zu behalten." +#~ 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 "" +#~ "Position der Z-Naht\n" +#~ "Wussten Sie, dass Sie die Position der Z-Naht anpassen und sie sogar auf " +#~ "Ihren Druck malen können, um sie an einer weniger sichtbaren Stelle " +#~ "anzubringen? Dadurch wird das Gesamtbild Ihres Modells verbessert. " +#~ "Probiere es aus!" -#: 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 "" -"Beschleunigen Sie Ihren Druck mit adaptiven Schichthöhe\n" -"Wussten Sie, dass Sie ein Modell noch schneller drucken können, wenn Sie die " -"Option \"Adaptive Schichthöhe\" verwenden? Probiere es aus!" +#~ 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 "" +#~ "Feineinstellung der Flussrate\n" +#~ "Wussten Sie, dass die Flussgeschwindigkeit des Filament fein eingestellt " +#~ "werden kann, um noch besser aussehende Drucke zu erhalten? Je nach " +#~ "Material können Sie das Gesamtergebnis des gedruckten Modells verbessern, " +#~ "indem Sie eine Feineinstellung vornehmen." -#: 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 "" -"Stützen malen\n" -"Wussten Sie, dass Sie die Position der Stützen aufmalen können? Diese " -"Funktion macht es möglich, das Stützmaterial nur auf die Bereiche des " -"Modells zu platzieren, die es tatsächlich benötigen." +#~ 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 "" +#~ "Drucke in mehrere Druckplatten aufteilen\n" +#~ "Wussten Sie, dass Sie ein Modell, das aus vielen Teilen besteht, in " +#~ "einzelne Druckplatten aufteilen können? Dadurch wird es einfacher, den " +#~ "Überblick über alle Teile zu behalten." -#: 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 "" -"Verschiedene Arten von Stützstrukturen\n" -"Wussten Sie, dass Sie zwischen verschiedenen Arten von Stützen wählen " -"können? Baumstützen eignet sich hervorragend für organische Modelle, sparen " -"Filament und erhöhen die Druckgeschwindigkeit. Probiere sie aus!" +#~ 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 "" +#~ "Beschleunigen Sie Ihren Druck mit adaptiven Schichthöhe\n" +#~ "Wussten Sie, dass Sie ein Modell noch schneller drucken können, wenn Sie " +#~ "die Option \"Adaptive Schichthöhe\" verwenden? Probiere es aus!" -#: 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 "" -"Drucken von Silkfilamenten\n" -"Wussten Sie, dass Silkfilamente besondere Bedingungen erfordern, um " -"erfolgreich gedruckt zu werden? Eine höhere Temperatur und eine niedrigere " -"Geschwindigkeit werden immer empfohlen, um die besten Ergebnisse zu erzielen." +#~ 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 "" +#~ "Stützen malen\n" +#~ "Wussten Sie, dass Sie die Position der Stützen aufmalen können? Diese " +#~ "Funktion macht es möglich, das Stützmaterial nur auf die Bereiche des " +#~ "Modells zu platzieren, die es tatsächlich benötigen." -#: 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 "" -"Rand für bessere Haftung\n" -"Wussten Sie, dass bei gedruckten Modellen, die eine kleine Kontaktfläche mit " -"der Druckoberfläche haben, die Verwendung eines Randes empfohlen wird?" +#~ 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 "" +#~ "Verschiedene Arten von Stützstrukturen\n" +#~ "Wussten Sie, dass Sie zwischen verschiedenen Arten von Stützen wählen " +#~ "können? Baumstützen eignet sich hervorragend für organische Modelle, " +#~ "sparen Filament und erhöhen die Druckgeschwindigkeit. Probiere sie aus!" -#: 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 "" -"Parameter für mehrere Objekte festlegen\n" -"Wussten Sie schon, dass Sie die Slicingparameter für alle ausgewählten " -"Objekte gleichzeitig festlegen können?" +#~ 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 "" +#~ "Drucken von Silkfilamenten\n" +#~ "Wussten Sie, dass Silkfilamente besondere Bedingungen erfordern, um " +#~ "erfolgreich gedruckt zu werden? Eine höhere Temperatur und eine " +#~ "niedrigere Geschwindigkeit werden immer empfohlen, um die besten " +#~ "Ergebnisse zu erzielen." -#: resources/data/hints.ini: [hint:Stack objects] -msgid "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -msgstr "" -"Objekte stapeln\n" -"Wussten Sie, dass Sie Objekte als Ganzes stapeln können?" +#~ 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 "" +#~ "Rand für bessere Haftung\n" +#~ "Wussten Sie, dass bei gedruckten Modellen, die eine kleine Kontaktfläche " +#~ "mit der Druckoberfläche haben, die Verwendung eines Randes empfohlen wird?" -#: 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 "" -"Reinigen in Stützstrukturen/Objekten/Füllungen\n" -"Wussten Sie schon, dass Sie die Menge an verschwendetem Filament reduzieren " -"können, indem Sie es während des Filamentwechsels in Stützstrukturen/" -"Objekten/Füllungen reinigen?" +#~ msgid "" +#~ "Set parameters for multiple objects\n" +#~ "Did you know that you can set slicing parameters for all selected objects " +#~ "at one time?" +#~ msgstr "" +#~ "Parameter für mehrere Objekte festlegen\n" +#~ "Wussten Sie schon, dass Sie die Slicingparameter für alle ausgewählten " +#~ "Objekte gleichzeitig festlegen können?" -#: 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 "" -"Festigkeit verbessern\n" -"Wussten Sie, dass Sie die Festigkeit des Modells durch mehr Wandschleifen " -"und eine höhere Dichte der Füllung verbessern können?" +#~ msgid "" +#~ "Stack objects\n" +#~ "Did you know that you can stack objects as a whole one?" +#~ msgstr "" +#~ "Objekte stapeln\n" +#~ "Wussten Sie, dass Sie Objekte als Ganzes stapeln können?" + +#~ 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 "" +#~ "Reinigen in Stützstrukturen/Objekten/Füllungen\n" +#~ "Wussten Sie schon, dass Sie die Menge an verschwendetem Filament " +#~ "reduzieren können, indem Sie es während des Filamentwechsels in " +#~ "Stützstrukturen/Objekten/Füllungen reinigen?" + +#~ 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 "" +#~ "Festigkeit verbessern\n" +#~ "Wussten Sie, dass Sie die Festigkeit des Modells durch mehr Wandschleifen " +#~ "und eine höhere Dichte der Füllung verbessern können?" + +#~ 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, generiert Studio Stützschleifen unter den Konturen " +#~ "interner Brücken. Diese Stützschleifen könnten verhindern, dass interne " +#~ "Brücken über die Luft extrudieren, und die höchste Oberflächenqualität " +#~ "verbessern, insbesondere wenn die spärliche Fülldichte niedrig ist. " +#~ "Dieser Wert bestimmt die Dicke der Stützschleifen. 0 bedeutet, diese " +#~ "Funktion zu deaktivieren" #, fuzzy #~ msgid "Send to print" diff --git a/bbl/i18n/en/OrcaSlicer_en.po b/bbl/i18n/en/OrcaSlicer_en.po index 904a648412..ca9ca93093 100644 --- a/bbl/i18n/en/OrcaSlicer_en.po +++ b/bbl/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-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-07-07 00:37+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -1872,7 +1872,10 @@ msgstr "" msgid "You need to select the material type and color first." msgstr "" -msgid "Other color" +msgid "Other Color" +msgstr "" + +msgid "Custom Color" msgstr "" msgid "Dynamic flow calibration" @@ -6247,6 +6250,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "No extrusions under current settings." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6849,11 +6855,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops 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" +"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" @@ -7208,6 +7214,45 @@ msgstr "" msgid "Lightning" msgstr "" +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." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +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." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" @@ -8026,6 +8071,14 @@ msgstr "Back" msgid "Random" 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 "Seam gap" msgstr "" @@ -8082,6 +8135,12 @@ msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "" "This is the number of loops for the skirt. 0 means the skirt is disabled." +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + 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" @@ -9116,190 +9175,6 @@ msgstr "" msgid "Connection to printers connected via the print host failed." 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 "" - -#: 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 "" - -#: 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 "" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -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?" -msgstr "" - -#: 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 "" - #, fuzzy #~ msgid "Send to print" #~ msgstr "Send to printer" diff --git a/bbl/i18n/es/OrcaSlicer_es.po b/bbl/i18n/es/OrcaSlicer_es.po index 8ffa8c1a58..872a298eb1 100644 --- a/bbl/i18n/es/OrcaSlicer_es.po +++ b/bbl/i18n/es/OrcaSlicer_es.po @@ -2,13 +2,16 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"PO-Revision-Date: \n" +"Last-Translator: Carlos Fco. Caruncho Serrano \n" +"Language-Team: https://t.me/orca_slicer_es\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Localazy (https://localazy.com)\n" "Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" +"X-Generator: Poedit 3.3.2\n" msgid "Supports Painting" msgstr "Pintando Soportes" @@ -20,7 +23,7 @@ msgid "Section view" msgstr "Vista de la sección" msgid "Reset direction" -msgstr "" +msgstr "Reiniciar dirección" msgid "Ctrl + Mouse wheel" msgstr "Ctrl + Rueda del ratón" @@ -53,13 +56,13 @@ msgid "Highlight overhang areas" msgstr "Resaltar las zonas de voladizos" msgid "Gap fill" -msgstr "" +msgstr "Rellenar hueco" msgid "Perform" msgstr "Realizar" msgid "Gap area" -msgstr "" +msgstr "Rellenar área" msgid "Tool type" msgstr "Tipo de herramienta" @@ -68,7 +71,7 @@ msgid "Smart fill angle" msgstr "Ángulo de relleno inteligente" msgid "On overhangs only" -msgstr "" +msgstr "Solo voladizos" msgid "Auto support threshold angle: " msgstr "Ángulo del umbral de soporte automático: " @@ -83,11 +86,11 @@ msgid "Fill" msgstr "Llenar" msgid "Gap Fill" -msgstr "" +msgstr "Rellenar hueco" #, boost-format msgid "Allows painting only on facets selected by: \"%1%\"" -msgstr "" +msgstr "Permite pintar solo las facetas seleccionadas por: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Resalte las caras según el ángulo del voladizo." @@ -103,12 +106,11 @@ msgstr "Colocar en la cara" #, 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 "" -"El recuento de filamentos supera el número máximo que admite la herramienta " -"de pintura. Sólo los primeros %1% de filamentos estarán disponibles en la " -"herramienta de pintura." +"El recuento de filamentos supera el número máximo que admite la herramienta de pintura. " +"Sólo los primeros %1% de filamentos estarán disponibles en la herramienta de pintura." msgid "Color Painting" msgstr "Pintura de colores" @@ -126,7 +128,7 @@ msgid "Choose filament" msgstr "Elegir filamento" msgid "Edge detection" -msgstr "Detección de bordes" +msgstr "Detección de contorno" msgid "Triangles" msgstr "Triángulos" @@ -150,7 +152,7 @@ msgid "Ctrl + Shift + Enter" msgstr "" msgid "Toggle Wireframe" -msgstr "" +msgstr "Alternar soporte" msgid "Shortcut Key " msgstr "Tecla de acceso directo " @@ -184,8 +186,7 @@ msgid "Scale" msgstr "Escalar" msgid "Error: Please close all toolbar menus first" -msgstr "" -"Error: Por favor, cierre primero todos los menús de la barra de herramientas" +msgstr "Error: Por favor, cierre primero todos los menús de la barra de herramientas" msgid "Tool-Lay on Face" msgstr "Herramienta-colocar sobre la cara" @@ -245,73 +246,73 @@ msgid "%" msgstr "%" msgid "uniform scale" -msgstr "Escala uniforme" +msgstr "escala uniforme" msgid "Left click" -msgstr "" +msgstr "Click izquierdo" msgid "Add connector" -msgstr "" +msgstr "Añadir conector" msgid "Right click" -msgstr "" +msgstr "Click derecho" msgid "Remove connector" -msgstr "" +msgstr "Borrar conector" msgid "Drag" -msgstr "" +msgstr "Soltar" msgid "Move connector" -msgstr "" +msgstr "Mover conector" msgid "Add connector to selection" -msgstr "" +msgstr "Añadir conector a la selección" msgid "Remove connector from selection" -msgstr "" +msgstr "Borrar conector de la selección" msgid "Select all connectors" -msgstr "" +msgstr "Seleccionar todos los conectores" msgid "Cut" msgstr "Cortar" msgid "Connector" -msgstr "" +msgstr "Conector" msgid "Movement:" msgstr "Movimiento:" msgid "Movement" -msgstr "" +msgstr "Movimiento" msgid "Height" -msgstr "" +msgstr "Altura" msgid "Edit connectors" -msgstr "" +msgstr "Editar conectores" msgid "Add connectors" -msgstr "" +msgstr "Añadir conectores" msgid "Upper part" -msgstr "" +msgstr "Parte alta" msgid "Lower part" -msgstr "" +msgstr "Parte baja" msgid "Keep" -msgstr "" +msgstr "Mantener" msgid "Place on cut" -msgstr "" +msgstr "Colocar en la posición de corte" msgid "Flip" -msgstr "" +msgstr "Girar" msgid "After cut" -msgstr "" +msgstr "Después del corte" msgid "Cut to parts" msgstr "Cortar por partes" @@ -326,7 +327,7 @@ msgid "Reset" msgstr "Reiniciar" msgid "Connectors" -msgstr "" +msgstr "Conectores" msgid "Type" msgstr "Tipo" @@ -338,25 +339,25 @@ msgid "Shape" msgstr "Forma" msgid "Depth ratio" -msgstr "" +msgstr "Relación de profundidad" msgid "Remove connectors" -msgstr "" +msgstr "Borrar conectores" msgid "Prizm" -msgstr "" +msgstr "Prisma" msgid "Frustum" -msgstr "" +msgstr "Tronco de cono" msgid "Square" -msgstr "" +msgstr "Cuadrado" msgid "Hexagon" -msgstr "" +msgstr "Hexágono" msgid "Confirm connectors" -msgstr "" +msgstr "Confirmar conectores" msgid "Cancel" msgstr "Cancelar" @@ -365,36 +366,38 @@ msgid "Warning" msgstr "Peligro" msgid "Invalid connectors detected" -msgstr "" +msgstr "Conectores inválidos detectados" msgid "connector is out of cut contour" -msgstr "" +msgstr "el conector está fuera del contorno de corte" msgid "connectors are out of cut contour" -msgstr "" +msgstr "los conectores están fuera del contorno de corte" msgid "connector is out of object" -msgstr "" +msgstr "el conector está fuera del objeto" msgid "connectors is out of object" -msgstr "" +msgstr "los conectores están fuera del objeto" msgid "Some connectors are overlapped" -msgstr "" +msgstr "Algunos conectores están solapados" msgid "" "Invalid state. \n" "No one part is selected for keep after cut" msgstr "" +"Estado inválido. \n" +"No se ha seleccionado ninguna pieza para conservar después del corte" msgid "Plug" -msgstr "" +msgstr "Conectar" msgid "Dowel" -msgstr "" +msgstr "Filamento" msgid "Tolerance" -msgstr "" +msgstr "Toleráncia" msgid "Mesh name" msgstr "Nombre de la malla" @@ -407,11 +410,11 @@ msgstr "Relación de decimación" #, 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 "" -"El procesamiento del modelo '%1%' con más de 1M de triángulos podría ser " -"lento. Se recomienda encarecidamente simplificar el modelo." +"El procesamiento del modelo '%1%' con más de 1M de triángulos podría ser lento. Se " +"recomienda encarecidamente simplificar el modelo." msgid "Simplify model" msgstr "Simplificar el modelo" @@ -420,9 +423,7 @@ msgid "Simplify" msgstr "Simplificar" msgid "Simplification is currently only allowed when a single part is selected" -msgstr "" -"La simplificación por el momento sólo se permite cuando se selecciona una " -"sola pieza" +msgstr "La simplificación por el momento sólo se permite cuando se selecciona una sola pieza" msgid "Error" msgstr "Error" @@ -466,66 +467,68 @@ msgid "Perform Recognition" msgstr "Realizar el reconocimiento" msgid "Brush size" -msgstr "" +msgstr "Tamaño del pincel" msgid "Brush shape" -msgstr "" +msgstr "Forma del pincel" msgid "Enforce seam" -msgstr "" +msgstr "Reforzar costura" msgid "Block seam" -msgstr "" +msgstr "Bloquear costura" msgid "Seam painting" -msgstr "" +msgstr "Pintar costura" msgid "Remove selection" -msgstr "" +msgstr "Borrar selección" msgid "Shift + Mouse move up or dowm" -msgstr "" +msgstr "Shift + Mover ratón arriba u abajo" msgid "Rotate text" -msgstr "" +msgstr "Rotar texto" msgid "Text shape" -msgstr "" +msgstr "Forma de texto" msgid "Font" -msgstr "" +msgstr "Fuente" msgid "Thickness" -msgstr "" +msgstr "Grosor" msgid "Input text" -msgstr "" +msgstr "Texto de entrada" msgid "Embeded" -msgstr "" +msgstr "Integrado" msgid "Text Gap" -msgstr "" +msgstr "Espacio de texto" msgid "Angle" -msgstr "" +msgstr "Ángulo" msgid "" "Embeded\n" "depth" msgstr "" +"Profundidad\n" +"Integrada" msgid "Surface" -msgstr "" +msgstr "Superficie" msgid "Horizontal text" -msgstr "" +msgstr "Texto horizontal" msgid "Ctrl+" msgstr "" msgid "Notice" -msgstr "Date cuenta" +msgstr "Aviso" msgid "Undefined" msgstr "Indefinido" @@ -535,7 +538,7 @@ msgid "%1% was replaced with %2%" msgstr "%1% fue reemplazado por %2%" msgid "The configuration may be generated by a newer version of OrcaSlicer." -msgstr "" +msgstr "La configuración puede ser generada por una versión más reciente de OrcaSlicer." msgid "Some values have been replaced. Please check them:" msgstr "Algunos valores han sido sustituidos. Por favor, compruébalos:" @@ -550,55 +553,65 @@ msgid "Machine" msgstr "Máquina" msgid "Configuration package was loaded, but some values were not recognized." -msgstr "" -"El paquete de configuración fue cargado, pero algunos valores no fueron " -"reconocidos." +msgstr "El paquete de configuración fue cargado, pero algunos valores no fueron reconocidos." #, boost-format -msgid "" -"Configuration file \"%1%\" was loaded, but some values were not recognized." +msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." msgstr "" -"Se ha cargado el archivo de configuración \"%1%\", pero no se han reconocido " -"algunos valores." +"Se ha cargado el archivo de configuración \"%1%\", pero no se han reconocido algunos " +"valores." 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 terminará porque se está quedando sin memoria. Le agradeceremos que comunique " +"el problema a nuestro equipo." +# 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 se cerrará porque se está quedando sin memoria. Le agradeceremos que informe de ello a nuestro equipo." msgid "Fatal error" msgstr "Error fatal" 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 terminará debido a un error de localización. Le agradeceremos que nos informe " +"del escenario específico en el que se ha producido este problema." +# msgid "OrcaSlicer will terminate because of a localization error. It will be appreciated if you report the specific scenario this issue happened." +# msgstr "OrcaSlicer terminará debido a un error de localización. Le agradeceríamos que nos informara del escenario específico en el que se ha producido este problema" msgid "Critical error" msgstr "Error crítico" #, boost-format msgid "OrcaSlicer got an unhandled exception: %1%" -msgstr "" +msgstr "OrcaSlicer recibió una notificación de excepción no controlada: %1%" +# msgid "OrcaSlicer got an unhandled exception: %1%" +# msgstr "OrcaSlicer obtuvo una excepción no manejada: %1%" msgid "Downloading Bambu Network Plug-in" -msgstr "" +msgstr "Descargando el complemento de Red Bambú" msgid "Incorrect password" -msgstr "" +msgstr "Contraseña incorrecta" #, c-format, boost-format msgid "Connect %s failed! [SN:%s, code=%s]" -msgstr "" +msgstr "¡Conexión %s fallida! [SN:%s, code=%s]" 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 "" +"El archivo de configuración de OrcaSlicer puede estar dañado y no puede ser procesado." +# msgid "OrcaSlicer configuration file may be corrupted and is not abled to be parsed.Please delete the file and try again." +# msgstr "Es posible que el archivo de configuración de OrcaSlicer esté dañado y no pueda ser procesado. Por favor, borre el archivo e inténtelo de nuevo." #, c-format, boost-format msgid "" "%s\n" @@ -615,8 +628,7 @@ msgstr "Cargando configuración" #, c-format, boost-format msgid "Click to download new version in default browser: %s" -msgstr "" -"Haga clic para descargar la nueva versión en el navegador por defecto: %s" +msgstr "Haga clic para descargar la nueva versión en el navegador por defecto: %s" msgid "The Orca Slicer needs an upgrade" msgstr "Orca Slicer necesita una actualización" @@ -640,42 +652,43 @@ msgid "Choose one file (3mf):" msgstr "Elija un archivo (3mf):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" -msgstr "" +msgstr "Elige uno o más archivos (3mf/step/stl/svg/obj/amf):" msgid "Choose one file (gcode/3mf):" -msgstr "" +msgstr "Elegir un archivo (gcode/3mf):" msgid "Some presets are modified." msgstr "Algunos preajustes se modifican." msgid "" -"You can keep the modifield presets to the new project, discard or save " -"changes as new presets." +"You can keep the modifield presets to the new project, discard or save changes as new " +"presets." msgstr "" -"Puede mantener los preajustes de los campos de trabajo en el nuevo proyecto, " -"descartar o guardar los cambios como nuevos preajustes." +"Puede mantener los preajustes de los campos de trabajo en el nuevo proyecto, descartar o " +"guardar los cambios como nuevos preajustes." msgid "User logged out" -msgstr "" +msgstr "Usuario desconectado" msgid "new or open project file is not allowed during the slicing process!" msgstr "" +"¡crear o abrir achivo de proyecto nuevo no está permitido durante el proceso de laminado!" msgid "Open Project" -msgstr "Proyesto Abierto" +msgstr "Abrir proyecto" msgid "" -"The version of Bambu studio is too low and needs to be updated to the latest " -"version before it can be used normally" +"The version of Bambu studio is too low and needs to be updated to the latest version " +"before it can be used normally" msgstr "" -"La versión de Orca Slicer es una versión demasiado antigua y necesita ser " -"actualizada a la última versión antes de poder utilizarla con normalidad" +"La versión de Orca Slicer es una versión demasiado antigua y necesita ser actualizada a la " +"última versión antes de poder utilizarla con normalidad" msgid "Login information expired. Please login again." msgstr "Los datos de acceso han caducado. Por favor, inicie sesión de nuevo." msgid "Privacy Policy Update" -msgstr "" +msgstr "Actualización de política de privacidad" msgid "Loading" msgstr "Cargando" @@ -696,19 +709,19 @@ msgid "*" msgstr "*" msgid "The uploads are still ongoing" -msgstr "" +msgstr "Las cargas aún están cargando" msgid "Stop them and continue anyway?" -msgstr "" +msgstr "Pararlos y continuar de todas maneras?" msgid "Ongoing uploads" -msgstr "" +msgstr "Cargas en curso" msgid "Select a G-code file:" msgstr "Seleccione un archivo de código G:" msgid "Import File" -msgstr "" +msgstr "Importar Archivo" msgid "Delete" msgstr "Borra" @@ -717,7 +730,7 @@ msgid "Choose files" msgstr "Elija los archivos" msgid "New Folder" -msgstr "" +msgstr "Nueva Carpeta" msgid "Open" msgstr "Abrir" @@ -805,34 +818,34 @@ msgid "Select settings" msgstr "Seleccione los ajustes" msgid "Hide" -msgstr "" +msgstr "Ocultar" msgid "Show" -msgstr "" +msgstr "Mostrar" msgid "Del" -msgstr "" +msgstr "Borrar" msgid "Delete the selected object" msgstr "Eliminar el objeto seleccionado" msgid "Edit Text" -msgstr "" +msgstr "Editar Texto" msgid "Load..." msgstr "Cargar..." msgid "Orca Cube" -msgstr "" +msgstr "Cubo Orca" msgid "3DBenchy" msgstr "" msgid "Autodesk FDM Test" -msgstr "" +msgstr "Prueba Autodesk FDM" msgid "Voron Cube" -msgstr "" +msgstr "Cubo de Vorón" msgid "Cube" msgstr "Cubo" @@ -844,7 +857,7 @@ msgid "Cone" msgstr "Cono" msgid "Height range Modifier" -msgstr "" +msgstr "Modificador de rango de altura" msgid "Add settings" msgstr "Añadir ajustes" @@ -868,16 +881,16 @@ msgid "Export as STL" msgstr "Exportar como STL" msgid "Reload from disk" -msgstr "" +msgstr "Recargar desde el disco" msgid "Reload the selected parts from disk" -msgstr "" +msgstr "Recargar las partes seleccionadas desde el disco" msgid "Replace with STL" -msgstr "" +msgstr "Reemplazar con STL" msgid "Replace the selected part with new STL" -msgstr "" +msgstr "Reemplaza la parte seleccionada con un nuevo STL" msgid "Change filament" msgstr "Cambiar el filamento" @@ -902,7 +915,7 @@ msgid "Scale an object to fit the build volume" msgstr "Escalar un objeto para que se ajuste al volumen de impresión" msgid "Flush Options" -msgstr "" +msgstr "Opciones de purga" msgid "Flush into objects' infill" msgstr "Purgar en el relleno de los objetos" @@ -914,7 +927,7 @@ msgid "Flush into objects' support" msgstr "Depositar en el soporte de los objetos" msgid "Edit in Parameter Table" -msgstr "" +msgstr "Editar en la Tabla de Parámetro" msgid "Convert from inch" msgstr "Convertir desde pulgadas" @@ -965,13 +978,13 @@ msgid "Mirror object" msgstr "Objeto reflejado" msgid "Invalidate cut info" -msgstr "" +msgstr "Invalidar información de corte" msgid "Add Primitive" msgstr "Añadir Primitivo" msgid "Show Labels" -msgstr "" +msgstr "Mostrar Etiquetas" msgid "To objects" msgstr "A los objetos" @@ -995,8 +1008,7 @@ msgid "Auto orientation" msgstr "Orientación automática" msgid "Auto orient the object to improve print quality." -msgstr "" -"Orienta automáticamente el objeto para mejorar la calidad de la impresión." +msgstr "Orienta automáticamente el objeto para mejorar la calidad de la impresión." msgid "Split the selected object into mutiple objects" msgstr "Dividir el objeto seleccionado en múltiples objetos" @@ -1008,43 +1020,43 @@ msgid "Select All" msgstr "Seleccionar Todo" msgid "select all objects on current plate" -msgstr "seleccionar todos los objetos de la placa actual" +msgstr "seleccionar todos los objetos de la cama actual" msgid "Delete All" msgstr "Borrar todo" msgid "delete all objects on current plate" -msgstr "Eliminar todos los objetos de la placa actual" +msgstr "eliminar todos los objetos de la cama actual" msgid "Arrange" msgstr "Organiza" msgid "arrange current plate" -msgstr "Posicionar la placa actual" +msgstr "posicionar la cama actual" msgid "Auto Rotate" msgstr "Rotación automática" msgid "auto rotate current plate" -msgstr "Auto rotación de la placa actual" +msgstr "auto rotación de la cama actual" msgid "Delete Plate" -msgstr "" +msgstr "Borrar Cama" msgid "Remove the selected plate" -msgstr "Retirar la placa seleccionada" +msgstr "Retirar la cama seleccionada" msgid "Clone" msgstr "Clonar" msgid "Simplify Model" -msgstr "" +msgstr "Simplificar Modelo" msgid "Center" -msgstr "" +msgstr "Centrar" msgid "Edit Process Settings" -msgstr "" +msgstr "Editar Ajustes de Procesado" msgid "Edit print parameters for a single object" msgstr "Editar los parámetros de impresión de un solo objeto" @@ -1056,7 +1068,7 @@ msgid "Set Filament for selected items" msgstr "Ajustar el filamento para los elementos seleccionados" msgid "current" -msgstr "Actual" +msgstr "actual" msgid "Set Unprintable" msgstr "Establecer No imprimible" @@ -1085,8 +1097,8 @@ msgstr[1] "%1$d errores reparados" #, c-format, boost-format msgid "Error: %1$d non-manifold edge." msgid_plural "Error: %1$d non-manifold edges." -msgstr[0] "Error: %1$d borde no moldeado." -msgstr[1] "Error: %1$d bordes no moldeados." +msgstr[0] "Error: %1$d contorno no moldeado." +msgstr[1] "Error: %1$d contornos no moldeados." msgid "Remaining errors" msgstr "Errores restantes" @@ -1094,30 +1106,27 @@ msgstr "Errores restantes" #, c-format, boost-format msgid "%1$d non-manifold edge" msgid_plural "%1$d non-manifold edges" -msgstr[0] "%1$d borde no moldeado" -msgstr[1] "%1$d bordes no moldeados" +msgstr[0] "%1$d contorno no moldeado" +msgstr[1] "%1$d contornos no moldeados" msgid "Right click the icon to fix model object" -msgstr "" -"Haga clic con el botón derecho del ratón en el icono para fijar el objeto " -"del modelo" +msgstr "Haga clic con el botón derecho del ratón en el icono para fijar el objeto del modelo" msgid "Right button click the icon to drop the object settings" msgstr "" -"Haga clic con el botón derecho del ratón en el icono para ajustar la " -"configuración del objeto" +"Haga clic con el botón derecho del ratón en el icono para ajustar la configuración del " +"objeto" msgid "Click the icon to reset all settings of the object" msgstr "Haga clic en el icono para restablecer todos los ajustes del objeto" msgid "Right button click the icon to drop the object printable property" msgstr "" -"Haga clic con el botón derecho en el icono para soltar la característica " -"imprimible del objeto" +"Haga clic con el botón derecho en el icono para soltar la característica imprimible del " +"objeto" msgid "Click the icon to toggle printable property of the object" -msgstr "" -"Haga clic en el icono para alternar la característica imprimible del objeto" +msgstr "Haga clic en el icono para alternar la característica imprimible del objeto" msgid "Click the icon to edit support painting of the object" msgstr "Haga clic en el icono para editar la pintura de apoyo del objeto" @@ -1126,7 +1135,7 @@ msgid "Click the icon to edit color painting of the object" msgstr "Haga clic en el icono para editar la pintura de color del objeto" msgid "Click the icon to shift this object to the bed" -msgstr "" +msgstr "Presionar el icono para cambiar este objeto a la cama" msgid "Loading file" msgstr "Cargando archivo" @@ -1141,39 +1150,40 @@ msgid "Add Modifier" msgstr "Añadir modificador" msgid "Switch to per-object setting mode to edit modifier settings." -msgstr "" -"Cambia al modo de ajuste por objeto para editar los ajustes de los " -"modificadores." +msgstr "Cambia al modo de ajuste por objeto para editar los ajustes de los modificadores." -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 "" +"Cambiar al modo de ajuste por objeto para editar los ajustes de proceso de los objetos." msgid "Delete connector from object which is a part of cut" -msgstr "" +msgstr "Borrar conector del objeto el cual es parte del corte" msgid "Delete solid part from object which is a part of cut" -msgstr "" +msgstr "Borrar la parte sólida del objeto la cual es parte del corte" msgid "Delete negative volume from object which is a part of cut" -msgstr "" +msgstr "Borrar volumen negativo del objeto el cual es parte del corte" -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 "" +"Para salvar la correspondencia cortada puedes borrar todos los conectores de los objetos." 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 "" +"La acción interrumpirá la correspondencia de corte.\n" +"Después de esto la correspondencia no podrá ser garantizada.\n" +"\n" +"Para manipular partes sólidas o volumenes negativos tienes que invalidar la información de " +"corte primero." msgid "Delete all connectors" -msgstr "" +msgstr "Borrar todos los conectores" msgid "Deleting the last solid part is not allowed." msgstr "No se permite borrar la última parte sólida." @@ -1185,34 +1195,34 @@ msgid "Assembly" msgstr "Montaje" msgid "Cut Connectors information" -msgstr "" +msgstr "Cortar Información de Conector" msgid "Object manipulation" -msgstr "" +msgstr "Manipulación de objeto" msgid "Group manipulation" -msgstr "" +msgstr "Manipulación de grupo" msgid "Object Settings to modify" -msgstr "" +msgstr "Ajustes de objeto modificables" msgid "Part Settings to modify" -msgstr "" +msgstr "Ajustes de parte modificables" msgid "Layer range Settings to modify" -msgstr "" +msgstr "Ajustes de capa modificables" msgid "Part manipulation" -msgstr "" +msgstr "Manipulación de partes" msgid "Instance manipulation" -msgstr "" +msgstr "Manipulación de instancias" msgid "Height ranges" -msgstr "" +msgstr "Rangos de altura" msgid "Settings for height range" -msgstr "" +msgstr "Ajustes de rango de altura" msgid "Object" msgstr "Objeto" @@ -1226,18 +1236,13 @@ msgstr "Capa" msgid "Selection conflicts" msgstr "Conflictos en la selección" -msgid "" -"If first selected item is an object, the second one should also be object." -msgstr "" -"Si el primer elemento seleccionado es un objeto, el segundo también debería " -"serlo." +msgid "If first selected item is an object, the second one should also be object." +msgstr "Si el primer elemento seleccionado es un objeto, el segundo también debería serlo." -msgid "" -"If first selected item is a part, the second one should be part in the same " -"object." +msgid "If first selected item is a part, the second one should be part in the same object." msgstr "" -"Si el primer elemento seleccionado es una pieza, el segundo debe ser una " -"pieza en el mismo objeto." +"Si el primer elemento seleccionado es una pieza, el segundo debe ser una pieza en el mismo " +"objeto." msgid "The type of the last solid object part is not to be changed." msgstr "El tipo de la última parte del objeto sólido no debe cambiarse." @@ -1292,20 +1297,19 @@ msgid "to" msgstr "a" msgid "Remove height range" -msgstr "" +msgstr "Borrar rango de altura" msgid "Add height range" -msgstr "" +msgstr "Añadir rango de altura" msgid "Invalid numeric." msgstr "Numérico inválido." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "" -"Una celda sólo puede copiarse en una o varias celdas de la misma columna" +msgstr "una celda sólo puede copiarse en una o varias celdas de la misma columna" msgid "multiple cells copy is not supported" -msgstr "No se admite la copia de múltiples celdas" +msgstr "no se admite la copia de múltiples celdas" msgid "Outside" msgstr "En el exterior" @@ -1317,10 +1321,10 @@ msgid "Manual" msgstr "Manual" msgid "No-brim" -msgstr "Sin borde" +msgstr "Sin borde de adherencia" msgid " " -msgstr "" +msgstr " " msgid "Layer height" msgstr "Altura de la capa" @@ -1332,16 +1336,16 @@ msgid "Infill density(%)" msgstr "Densidad de relleno(%)" msgid "Auto Brim" -msgstr "Borde automático" +msgstr "Borde de Adherencia Automático" msgid "Outer wall speed" -msgstr "" +msgstr "Velocidad pared exterior" msgid "Plate" -msgstr "Placa" +msgstr "Cama" msgid "Brim" -msgstr "Balsa" +msgstr "Borde de adherencia" msgid "Object/Part Setting" msgstr "Ajuste del Objeto/Parte" @@ -1359,79 +1363,79 @@ msgid "More" msgstr "Más" msgid "Open Preferences." -msgstr "" +msgstr "Abrir Preferencias." msgid "Open next tip." -msgstr "" +msgstr "Abrir siguiente consejo." msgid "Open Documentation in web browser." -msgstr "" +msgstr "Abrir la Documentación en el navegador." msgid "Pause:" -msgstr "" +msgstr "Pausa:" msgid "Custom Template:" -msgstr "" +msgstr "Plantillas Personalizadas:" msgid "Custom G-code:" -msgstr "" +msgstr "G-code personalizado:" msgid "Custom G-code" -msgstr "Código G personalizado" +msgstr "G-code personalizado" msgid "Enter Custom G-code used on current layer:" -msgstr "" +msgstr "Inserta el G-code personalizado usado en la capa actual:" msgid "OK" msgstr "OK" msgid "Jump to Layer" -msgstr "" +msgstr "Salta a la Capa" msgid "Jump to layer" -msgstr "" +msgstr "Salta a la capa" msgid "Please enter the layer number" -msgstr "" +msgstr "Por favor, introduce el número de capa" msgid "Add Pause" -msgstr "" +msgstr "Añadir Pausa" msgid "Insert a pause command at the beginning of this layer." -msgstr "" +msgstr "Inserta un comando de pausa en el principio de esta capa." msgid "Add Custom G-code" -msgstr "" +msgstr "Añadir G-code personalizado" msgid "Insert custom G-code at the beginning of this layer." -msgstr "" +msgstr "Insertar G-code personalizado en el principio de esta capa." msgid "Add Custom Template" -msgstr "" +msgstr "Añadir Plantilla Personalizada" msgid "Insert template custom G-code at the beginning of this layer." -msgstr "" +msgstr "Insetar g-code de plantilla personalizada al principio de esta capa." msgid "Filament " -msgstr "" +msgstr "Filamento " msgid "Change filament at the beginning of this layer." -msgstr "" +msgstr "Cargar filamento al principio de esta capa." msgid "Delete Pause" -msgstr "" +msgstr "Borrar Pausa" msgid "Delete Custom Template" -msgstr "" +msgstr "Borrar Plantilla Personalizada" msgid "Edit Custom G-code" -msgstr "" +msgstr "Editar G-code Personalizado" msgid "Delete Custom G-code" -msgstr "" +msgstr "Borrar G-code Personalizado" msgid "Delete Filament Change" -msgstr "" +msgstr "Borrar Cambio de Filamento" msgid "No printer" msgstr "Sin impresión" @@ -1449,16 +1453,16 @@ msgid "AMS" msgstr "AMS" msgid "Ams filament backup" -msgstr "" +msgstr "Copia de Seguridad del Filamento AMS" msgid "AMS not connected" -msgstr "" +msgstr "AMS no conectado" msgid "Cali" msgstr "" msgid "Calibration of extrusion" -msgstr "" +msgstr "Calibración de extrusión" msgid "Load Filament" msgstr "Cargar" @@ -1467,24 +1471,22 @@ msgid "Unload Filament" msgstr "Descargar" msgid "Ext Spool" -msgstr "" +msgstr "Carrete Externo" msgid "Tips" msgstr "Consejos" msgid "Guide" -msgstr "" +msgstr "Guía" msgid "Retry" -msgstr "" +msgstr "Reintentar" msgid "Calibrating AMS..." msgstr "Calibración de AMS..." msgid "A problem occured during calibration. Click to view the solution." -msgstr "" -"Se ha producido un problema durante la calibración. Haga clic para ver la " -"solución." +msgstr "Se ha producido un problema durante la calibración. Haga clic para ver la solución." msgid "Calibrate again" msgstr "Calibrar de nuevo" @@ -1493,7 +1495,7 @@ msgid "Cancel calibration" msgstr "Cancelar calibración" msgid "Heat the nozzle" -msgstr "" +msgstr "Calentar la boquilla" msgid "Cut filament" msgstr "Cortar filamento" @@ -1502,23 +1504,23 @@ msgid "Pull back current filament" msgstr "Extraer el filamento actual" msgid "Push new filament into extruder" -msgstr "" +msgstr "Introducir nuevo filamento en el extrusor" msgid "Purge old filament" msgstr "Purgar el filamento viejo" msgid "Feed new filament from external spool" -msgstr "" +msgstr "Cargar nuevo filamento en el carrete externo" msgid "Confirm whether the filament has been extruded" -msgstr "" +msgstr "Confirmar si el filamento ha sido extruido" 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 "" -"Elija una ranura AMS y pulse el botón \"Cargar\" o \"Descargar\" para cargar " -"o descargar automáticamente el filamento." +"Elija una ranura AMS y pulse el botón \"Cargar\" o \"Descargar\" para cargar o descargar " +"automáticamente el filamento." msgid "Edit" msgstr "Editar" @@ -1527,7 +1529,7 @@ msgid "" "All the selected objects are on the locked plate,\n" "We can not do auto-arrange on these objects." msgstr "" -"Todos los objetos seleccionados están en la placa bloqueada,\n" +"Todos los objetos seleccionados están en la cama bloqueada,\n" "No podemos hacer un auto posicionamiento en estos objetos." msgid "No arrangable objects are selected." @@ -1537,17 +1539,16 @@ msgid "" "This plate is locked,\n" "We can not do auto-arrange on this plate." msgstr "" -"Esta placa está bloqueada,\n" -"No podemos hacer auto-posicionamiento en esta placa." +"Esta cama está bloqueada,\n" +"No podemos hacer auto-posicionamiento en esta cama." msgid "Arranging..." msgstr "Organizando..." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." +msgid "Arrange failed. Found some exceptions when processing object geometries." msgstr "" -"El posicionamiento ha fallado. Se han encontrado algunas excepciones al " -"procesar las geometrías de los objetos." +"El posicionamiento ha fallado. Se han encontrado algunas excepciones al procesar las " +"geometrías de los objetos." msgid "Arranging" msgstr "Organizando" @@ -1555,47 +1556,44 @@ msgstr "Organizando" msgid "Arranging canceled." msgstr "Ordenamiento cancelado." -msgid "" -"Arranging is done but there are unpacked items. Reduce spacing and try again." +msgid "Arranging is done but there are unpacked items. Reduce spacing and try again." msgstr "" -"El posicionamiento está hecho, pero hay artículos sin empaquetar. Reduzca el " -"espacio y vuelva a intentarlo." +"El posicionamiento está hecho, pero hay artículos sin empaquetar. Reduzca el espacio y " +"vuelva a intentarlo." msgid "Arranging done." msgstr "Organización terminada." #, 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 "" -"Organizar ignoró los siguientes objetos que no pueden caber en una sola " -"base:\n" +"Organizar ignoró los siguientes objetos que no pueden caber en una sola cama:\n" "%s" msgid "" "All the selected objects are on the locked plate,\n" "We can not do auto-orient on these objects." msgstr "" -"Todos los objetos seleccionados están en la placa bloqueada,\n" +"Todos los objetos seleccionados están en la cama bloqueada,\n" "No podemos hacer auto-orientación en estos objetos." msgid "" "This plate is locked,\n" "We can not do auto-orient on this plate." msgstr "" -"Esta placa está bloqueada,\n" -"No podemos hacer auto-orientación en esta placa." +"Esta cama está bloqueada,\n" +"No podemos hacer auto-orientación en esta cama." msgid "Orienting..." msgstr "Orientando..." msgid "Orienting" -msgstr "" +msgstr "Orientando" msgid "Error! Unable to create thread!" -msgstr "¡Error! No se ha podido crear el proceso." +msgstr "¡Error! ¡No se ha podido crear el proceso!" msgid "Exception" msgstr "Excepción" @@ -1607,7 +1605,7 @@ msgid "Login failed" msgstr "Fallo en el inicio de sesión" msgid "The region parameter is incorrrect" -msgstr "El parámetro de región es incorrecto." +msgstr "El parámetro de región es incorrecto" msgid "Failure of printer login" msgstr "Fallo en el inicio de sesión de la impresora" @@ -1625,7 +1623,7 @@ msgid "Unknown Failure" msgstr "Error desconocido" msgid "Please check the printer network connection." -msgstr "" +msgstr "Por favor, comprueba la conexión de área local." msgid "Abnormal print file data. Please slice again" msgstr "Datos anormales del archivo de impresión. Por favor, procese de nuevo" @@ -1635,24 +1633,21 @@ msgstr "Tarea cancelada" msgid "Upload task timed out. Please check the network problem and try again" msgstr "" -"La tarea de carga ha terminado. Por favor, compruebe el problema de red e " -"inténtelo de nuevo" +"La tarea de carga ha terminado. Por favor, compruebe el problema de red e inténtelo de " +"nuevo" msgid "Cloud service connection failed. Please try again." -msgstr "" -"Ha fallado la conexión con el servicio de la nube. Por favor, inténtelo de " -"nuevo." +msgstr "Ha fallado la conexión con el servicio de la nube. Por favor, inténtelo de nuevo." msgid "Print file not found, please slice again" -msgstr "" -"No se ha encontrado el archivo de impresión, por favor, vuelva a procesarlo" +msgstr "No se ha encontrado el archivo de impresión, por favor, vuelva a procesarlo" msgid "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the " -"model and slice again" +"The print file exceeds the maximum allowable size (1GB). Please simplify the model and " +"slice again" msgstr "" -"El archivo de impresión supera el tamaño máximo permitido (1GB). Por favor, " -"simplifique el modelo y vuelva a procesarlo" +"El archivo de impresión supera el tamaño máximo permitido (1GB). Por favor, simplifique el " +"modelo y vuelva a procesarlo" msgid "Failed uploading print file" msgstr "Fallo al cargar el archivo de impresión" @@ -1667,118 +1662,122 @@ msgid "Sending print job through cloud service" msgstr "Enviando trabajo de impresión a través del servicio en la nube" msgid "Service Unavailable" -msgstr "" +msgstr "Servicio No Disponible" msgid "Unkown Error." -msgstr "" +msgstr "Error Desconocido." msgid "Sending print configuration" msgstr "Enviando la configuración de impresión" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the device page in %ss" -msgstr "" +msgstr "Envío exitoso. Se saltará automaticamente a la página del dispositivo en %ss" msgid "An SD card needs to be inserted before printing via LAN." -msgstr "" +msgstr "Se necesita insertar una tarjeta SD antes de imprimir vía red local." msgid "Failed to send the print job. Please try again." -msgstr "" +msgstr "Fallo enviando el trabajo de impresión. Por favor inténtelo otra vez." msgid "Send to Printer failed. Please try again." -msgstr "" +msgstr "Envío a la Impresora fallido. Por favor inténtelo otra vez." msgid "No space left on Printer SD card" -msgstr "" +msgstr "Sin espacio disponible en la tarjeta SD de la impresora" msgid "Sending gcode file over LAN" -msgstr "" +msgstr "Enviando el archivo de gcode vía red local" msgid "Sending gcode file through cloud service" -msgstr "" +msgstr "Enviando el archivo de gcode a través del servicio en la nube" msgid "Sending gcode file to sdcard" -msgstr "" +msgstr "Enviando el archivo de gcode a la tarjeta SD" #, c-format, boost-format msgid "Successfully sent. Close current page in %s s" -msgstr "" +msgstr "Envío exitoso. Cierre la página actual en %s s" msgid "An SD card needs to be inserted before sending to printer." -msgstr "" +msgstr "Se necesita insertar una tarjeta SD antes de enviar a la impresora." msgid "Please log out and login to the printer again." -msgstr "" +msgstr "Por favor desconéctese y conéctese a la impresora de nuevo." msgid "Choose SLA archive:" -msgstr "" +msgstr "Elige el archivo SLA:" msgid "Import file" -msgstr "" +msgstr "Importar archivo" msgid "Import model and profile" -msgstr "" +msgstr "Importar modelo y perfil" msgid "Import profile only" -msgstr "" +msgstr "Importar perfil solo" msgid "Import model only" -msgstr "" +msgstr "Importar solo el modelo" msgid "Accurate" -msgstr "" +msgstr "Precisión" msgid "Balanced" -msgstr "" +msgstr "Balanceado" msgid "Quick" -msgstr "" +msgstr "Rápido" msgid "Importing SLA archive" -msgstr "" +msgstr "Importando archivo SLA" 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 "" +"El SLA importado no contiene ningún preajuste. Por favor active algunos preajustes de la " +"impresora primero antes de importar ese archivo SLA." msgid "Importing canceled." -msgstr "" +msgstr "Importación cancelada." msgid "Importing done." -msgstr "" +msgstr "Importación realizada." 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 "" +"El SLA importado no contiene ningún preajuste. Los preajustes de SLA actuales serán usados " +"como alternativa." msgid "You cannot load SLA project with a multi-part object on the bed" -msgstr "" +msgstr "No puedes cargar un proyecto SLA con objetos multi-parte en la cama" msgid "Please check your object list before preset changing." -msgstr "" +msgstr "Por favor comprueba tu lista de objectos antes de cambiar el preajuste." msgid "Attention!" msgstr "¡Atención!" msgid "Downloading" -msgstr "" +msgstr "Descargando" msgid "Download failed" -msgstr "" +msgstr "Descarga fallida" msgid "Cancelled" -msgstr "" +msgstr "Cancelado" msgid "Install successfully." -msgstr "" +msgstr "Instalación exitosa." msgid "Installing" -msgstr "" +msgstr "Instalando" msgid "Install failed" -msgstr "" +msgstr "Instalación fallida" msgid "Portions copyright" msgstr "Porciones del copyright" @@ -1796,20 +1795,22 @@ msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versión 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 está basado en BambuStudio por Bambulab, el cual está basado en PrusaSlicer " +"por Prusa Research. PrusaSlicer está basado en Slic3r de Alessandro Ranellucci y la " +"comunidad RepRap" msgid "Libraries" msgstr "Librerías" 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 "" -"Este software utiliza componentes de código abierto cuyos derechos de autor " -"y otros derechos de propiedad pertenecen a sus respectivos propietarios" +"Este software utiliza componentes de código abierto cuyos derechos de autor y otros " +"derechos de propiedad pertenecen a sus respectivos propietarios" #, c-format, boost-format msgid "About %s" @@ -1819,24 +1820,23 @@ msgid "Orca Slicer " msgstr "" msgid "OrcaSlicer is based on BambuStudio, PrusaSlicer, and SuperSlicer." -msgstr "" +msgstr "OrcaSlicer está basado en BambuStudio, PrusaSlicer, y SuperSlicer." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." -msgstr "" +msgstr "BambuStudio está basado originalmente en PrusaSlicer por PrusaResearch." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." -msgstr "" +msgstr "PrusaSlicer está originalmente basado en Slic3r de Alessandro Ranellucci." -msgid "" -"Slic3r was created by Alessandro Ranellucci with the help of many other " -"contributors." +msgid "Slic3r was created by Alessandro Ranellucci with the help of many other contributors." msgstr "" +"Slic3r fue creado por Alessandro Ranellucci con la ayuda de muchos otros contruyentes." msgid "Version" msgstr "Versión" msgid "AMS Materials Setting" -msgstr "" +msgstr "Ajustes de Materiales AMS" msgid "Confirm" msgstr "Confirmar" @@ -1868,10 +1868,10 @@ msgid "SN" msgstr "SN" msgid "Setting AMS slot information while printing is not supported" -msgstr "" +msgstr "Ajustes de información de ranura AMS mientras la impresión no sea soportada" msgid "Factors of dynamic flow cali" -msgstr "" +msgstr "Factores de flujo cali dinámico" msgid "Factor K" msgstr "" @@ -1880,43 +1880,46 @@ msgid "Factor N" msgstr "" msgid "Setting Virtual slot information while printing is not supported" -msgstr "" +msgstr "Ajuste de información de ranura Virtual mientras la impresión no sea soportada" msgid "Are you sure you want to clear the filament information?" -msgstr "" +msgstr "¿Estás seguro que quieres limpiar la información de filamento?" msgid "Please input a valid value (K in 0~0.5)" -msgstr "" +msgstr "Por favor, introduce un valor válido (K en 0~0.5)" msgid "Please input a valid value (K in 0~0.5, N in 0.6~2.0)" -msgstr "" +msgstr "Por favor, introduce un valor válido (K en 0~0.5, N en 0.6~2.0)" msgid "You need to select the material type and color first." -msgstr "" +msgstr "Necesitas seleccionar el tipo y el color del material primero." msgid "Other color" -msgstr "" +msgstr "Otro color" msgid "Dynamic flow calibration" -msgstr "" +msgstr "Calibración de flujo dinámico" 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 "" +"La temperatura y la velocidad volumétrica máxima de la boquilla afectará a los resultados " +"de los ajustes. Por favor, rellena los mismos valores de la actual impresión. Ellos pueden " +"ser auto-rellenados seleccionando un preajuste de filamento." msgid "Nozzle Diameter" -msgstr "" +msgstr "Diámetro" msgid "Bed Type" -msgstr "" +msgstr "Tipo de Cama" msgid "Nozzle temperature" msgstr "Temperatura de la boquilla" msgid "Bed Temperature" -msgstr "" +msgstr "Temperatura de Cama" msgid "Max volumetric speed" msgstr "Velocidad volumétrica máxima" @@ -1925,121 +1928,131 @@ msgid "℃" msgstr "" msgid "Bed temperature" -msgstr "Temperatura de la base" +msgstr "Temperatura de la cama" msgid "mm³" msgstr "mm³" msgid "Start calibration" -msgstr "" +msgstr "Iniciar calibración" msgid "Next" -msgstr "" +msgstr "Siguiente" 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 "" +"Calibración completada. Por favor, encuentre la línea de extrusión más uniforme en su cama " +"caliente como la imagen de abajo, y rellene el valor en su lado izquierdo en el factor K " +"cuadro de entrada." msgid "Save" msgstr "Guardar" msgid "Last Step" -msgstr "" +msgstr "Úlrimo Paso" msgid "Example" -msgstr "" +msgstr "Ejemplo" #, c-format, boost-format msgid "Calibrating... %d%%" -msgstr "" +msgstr "Calibrando... %d%%" msgid "Calibration completed" -msgstr "" +msgstr "Calibración completada" #, c-format, boost-format msgid "%s does not support %s" -msgstr "" +msgstr "%s no soporta %s" msgid "Dynamic flow Calibration" -msgstr "" +msgstr "Calibración de flujo dinámico" msgid "Step" -msgstr "" +msgstr "Paso" msgid "AMS Slots" -msgstr "" +msgstr "Ranuras AMS" -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 "" +"Nota: Solo las ranuras AMS cargadas con el mismo tipo de material se pueden seleccionar." msgid "Enable AMS" -msgstr "" +msgstr "Activar AMS" msgid "Print with filaments in the AMS" -msgstr "" +msgstr "Imprimir con filamentos en el AMS" msgid "Disable AMS" -msgstr "" +msgstr "Desactivar AMS" msgid "Print with the filament mounted on the back of chassis" -msgstr "" +msgstr "Imprimir con el filamento montado en la parte posterior del chasis" msgid "Cabin humidity" -msgstr "" +msgstr "Humedad de cabina" 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 "" +"El verde significa que la humedad de AMS es normal, el naranja representa que la humedad " +"es alta, el rojo representa que la humedad es demasiado alta.(Hygrometro: menos que el " +"mejor.)" msgid "Desiccant status" -msgstr "" +msgstr "Estado del secante" 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 "" +"Si estado del secante es menor que las dos barras indica que el secante puede estar " +"inactivo. Por favor cambie el secante(Las barras: más que el mejor)" 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 "" +"Nota: Cuando se abre la tapa o se cambia el paquete desecante, puede tardar horas o una " +"noche en absorber la humedad. Las bajas temperaturas también ralentizan el proceso. " +"Durante este tiempo, es posible que el indicador no represente la cámara con precisión." -msgid "" -"Config which AMS slot should be used for a filament used in the print job" +msgid "Config which AMS slot should be used for a filament used in the print job" msgstr "" +"La configuración de ranura la cual debe ser usada para el filamento es usada en el trabajo " +"de impresión" msgid "Filament used in this print job" -msgstr "" +msgstr "Filamento usado en este trabajo de impresión" msgid "AMS slot used for this filament" -msgstr "" +msgstr "Ranura AMS usada para este filamento" msgid "Click to select AMS slot manually" -msgstr "" +msgstr "Presiona para seleccionar la ranura AMS automaticamente" msgid "Do not Enable AMS" -msgstr "" +msgstr "No Activar AMS" msgid "Print using materials mounted on the back of the case" -msgstr "" +msgstr "Imprimir usando materiales montados en la parte de atras de la carcasa" msgid "Print with filaments in ams" -msgstr "" +msgstr "Imprimir usando filamentos en AMS" msgid "Print with filaments mounted on the back of the chassis" -msgstr "" +msgstr "Imprimir con filamentos montados en la parte de atrás del chasis" msgid "Filaments replace" -msgstr "" +msgstr "Reemplazar filamentos" msgid "Group" -msgstr "" +msgstr "Agrupar" msgid "AMS Settings" msgstr "Ajustes del AMS" @@ -2048,63 +2061,63 @@ msgid "Insertion update" msgstr "Actualización de la inserción" 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 "" -"El AMS leerá automáticamente la información del filamento al insertar un " -"nuevo filamento de Bambu Lab. Esto tardara unos 20 segundos." +"El AMS leerá automáticamente la información del filamento al insertar un nuevo filamento " +"de Bambu Lab. Esto tardara unos 20 segundos." 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 "" "Nota: si se inserta un nuevo filamento durante la impresión, el AMS no leerá " "automáticamente ninguna información hasta que la impresión haya finalizado." 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 "" -"Al insertar un nuevo filamento, el AMS no leerá automáticamente su " -"información, dejándola en blanco para que usted la introduzca manualmente." +"Al insertar un nuevo filamento, el AMS no leerá automáticamente su información, dejándola " +"en blanco para que usted la introduzca manualmente." msgid "Power on update" msgstr "Actualización de encendido" 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 "" -"El AMS leerá automáticamente la información del filamento insertado al " -"arrancar. Tomará aproximadamente 1 minuto. El proceso de lectura hará rodar " -"las bobinas de filamento." +"El AMS leerá automáticamente la información del filamento insertado al arrancar. Tomará " +"aproximadamente 1 minuto. El proceso de lectura hará rodar las bobinas de filamento." 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 "" -"El AMS no leerá automáticamente la información del filamento insertado " -"durante el arranque y seguirá utilizando la información registrada antes del " -"último apagado." +"El AMS no leerá automáticamente la información del filamento insertado durante el arranque " +"y seguirá utilizando la información registrada antes del último apagado." msgid "Update remaining capacity" -msgstr "" +msgstr "Actualizar capacidad restante" 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 "" +"El AMS estimará la capacidad del filamento Bambú restante después de que la información " +"sea actualizada. Durante la impresión, la capacidad restante será actualizada " +"automaticamente." msgid "AMS filament backup" -msgstr "" +msgstr "Copia de Seguridad del Filamento AMS" 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 "" +"El AMS continuará con otra bobina con las mismas propiedades de filamento automaticamente " +"cuando el filamento se termine" msgid "File" msgstr "Archivo" @@ -2113,35 +2126,39 @@ msgid "Calibration" msgstr "Calibración" 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 "" +"Fallo al descargar el complemento. Por favor, compruebe el cortafuegos y la vpn, e " +"inténtelo de nuevo." 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 "" +"Fallo al instalar el complemento. Por favor, compruebe si ha sido bloqueado o borrado por " +"un antivirus." msgid "click here to see more info" -msgstr "" +msgstr "presiona aquí para mostrar más información" msgid "Please home all axes (click " -msgstr "" +msgstr "Por favor, mandar a inicio todos los ejes (presione " 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 "" +") para localizar la posición del cabezal. Esto previene que el dispositivo se mueva más " +"allá de los limites de impresión y cause desgaste en el equipo." msgid "Go Home" -msgstr "" +msgstr "Ir al Inicio" -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 "" -"Se ha producido un error. Tal vez la memoria del sistema no es suficiente o " -"es un error del programa" +"Se ha producido un error. Tal vez la memoria del sistema no es suficiente o es un error " +"del programa" msgid "Please save project and restart the program. " msgstr "Guarde el proyecto y reinicie el programa. " @@ -2191,37 +2208,32 @@ msgid "Succeed to export G-code to %1%" msgstr "Exportación de código G a %1% con éxito" msgid "Running post-processing scripts" -msgstr "" +msgstr "Ejecutando scripts de post-procesado" msgid "Copying of the temporary G-code to the output G-code failed" -msgstr "" +msgstr "Copiado del G-code temporal al G-code de salida fallido" #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" -msgstr "" +msgstr "Programación de la carga a %1%. Mire la Ventana -> Cola de Impresión del Anfitrión" msgid "Origin" -msgstr "Origen" +msgstr "" msgid "Diameter" msgstr "Diámetro" msgid "Size in X and Y of the rectangular plate." -msgstr "Tamaño en X e Y de la placa rectangular." +msgstr "Tamaño en X e Y de la cama rectangular." -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 "" -"Distancia de la coordenada del código G de 0,0 de la esquina frontal " -"izquierda del rectángulo." +"Distancia de la coordenada del código G de 0,0 de la esquina frontal izquierda del " +"rectángulo." -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." +msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "" -"Diámetro de la base de impresión. Se supone que el origen (0,0) está ubicado " -"en el centro." +"Diámetro de la cama de impresión. Se supone que el origen (0,0) está ubicado en el centro." msgid "Rectangular" msgstr "Rectangular" @@ -2251,7 +2263,7 @@ msgid "Model" msgstr "Modelo" msgid "Choose an STL file to import bed shape from:" -msgstr "Escoge un archivo STL para importar la forma de la base:" +msgstr "Escoge un archivo STL para importar la forma de la cama:" msgid "Invalid file format." msgstr "Formato inválido de archivo." @@ -2262,61 +2274,60 @@ msgstr "Error! Modelo inválido" msgid "The selected file contains no geometry." msgstr "El archivo seleccionado no contiene geometría." -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"El archivo seleccionado contiene varias áreas disjuntas. Esto no es " -"compatible." +msgid "The selected file contains several disjoint areas. This is not supported." +msgstr "El archivo seleccionado contiene varias áreas disjuntas. Esto no es compatible." msgid "Choose a file to import bed texture from (PNG/SVG):" -msgstr "" -"Escoge un archivo para importar la textura de la base de impresión (PNG/SVG):" +msgstr "Escoge un archivo para importar la textura de la cama de impresión (PNG/SVG):" msgid "Choose an STL file to import bed model from:" -msgstr "Escoge un archivo STL para importar el modelo de la base de impresión:" +msgstr "Escoge un archivo STL para importar el modelo de la cama de impresión:" msgid "Bed Shape" -msgstr "Forma de la base de impresión" +msgstr "Forma de la cama de impresión" 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 "" -"La boquilla puede bloquearse cuando la temperatura está fuera del rango " -"recomendado.\n" +"La boquilla puede bloquearse cuando la temperatura está fuera del rango recomendado.\n" "Por favor, asegúrese de utilizar la temperatura para imprimir.\n" #, c-format, boost-format -msgid "" -"Recommended nozzle temperature of this filament type is [%d, %d] degree " -"centigrade" +msgid "Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" msgstr "" -"La temperatura recomendada de la boquilla de este tipo de filamento es de " -"[%d, %d] grados centígrados" +"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" +"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 capa inicial durante más de %d grados centígrados.\n" -"Esto puede hacer que el modelo se desprenda de la placa de impresión durante " -"la impresión." +"La temperatura del lecho de la otra capa es inferior a la temperatura del lecho de la capa " +"inicial durante más de %d grados centígrados.\n" +"Esto puede hacer que el modelo se desprenda de la cama de impresión 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" +"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" msgstr "" +"Velocidad volumétrica máxima demasiado baja.\n" +"Reajustar a 0.5" msgid "" "Too small layer height.\n" @@ -2342,19 +2353,16 @@ msgstr "" "La altura de la primera capa se restablecerá a 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 "" -"Este ajuste sólo se utiliza para afinar el tamaño del modelo con un valor " -"pequeño en algunos casos.\n" -"Por ejemplo, cuando el tamaño del modelo tiene un pequeño error y es difícil " -"de montar.\n" -"Para el ajuste de tamaño grande, por favor utilice la función de escala del " -"modelo.\n" +"Este ajuste sólo se utiliza para afinar el tamaño del modelo con un valor pequeño en " +"algunos casos.\n" +"Por ejemplo, cuando el tamaño del modelo tiene un pequeño error y es difícil de montar.\n" +"Para el ajuste de tamaño grande, por favor utilice la función de escala del modelo.\n" "\n" "El valor se restablecerá a 0." @@ -2366,16 +2374,19 @@ msgid "" "The value will be reset to 0." msgstr "" "Una compensación de la pata de elefante demasiado grande no es razonable.\n" -"Si realmente tiene un efecto grave de pata de elefante, por favor, compruebe " -"otros ajustes.\n" +"Si realmente tiene un efecto grave de pata de elefante, por favor, compruebe otros " +"ajustes.\n" "Por ejemplo, si la temperatura de la cama es demasiado alta.\n" "\n" "El valor se restablecerá a 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 "" +"El modo espiral sólo funciona cuando los bucles de pared son 1, el soporte está " +"desactivado, las capas superiores de la cáscara son 0, la densidad de relleno disperso es " +"0 y el tipo de intervalo es tradicional." msgid "" "Change these settings automatically? \n" @@ -2387,18 +2398,17 @@ msgstr "" "No - Dejar de usar el modo espiral esta vez" 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 "" -"La torre principal no funciona cuando la altura de la capa adaptable o la " -"altura de la capa de soporte independiente están activadas.\n" +"La torre de purga no funciona cuando la altura de la capa adaptable o la altura de la capa " +"de soporte independiente están activadas.\n" "¿Qué desea mantener?\n" -"SÍ - Mantener la torre principal\n" -"NO - Mantener la altura de capa adaptable y la altura de capa de soporte " -"independiente" +"SÍ - Mantener la torre de purga\n" +"NO - Mantener la altura de capa adaptable y la altura de capa de soporte independiente" msgid "" "Prime tower does not work when Adaptive Layer Height is on.\n" @@ -2406,10 +2416,9 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height" msgstr "" -"La torre principal no funciona cuando la altura de capa adaptativa está " -"activada.\n" +"La torre de purga no funciona cuando la altura de capa adaptativa está activada.\n" "¿Qué quieres mantener?\n" -"SÍ - Mantener la torre principal\n" +"SÍ - Mantener la torre de purga\n" "NO - Mantener la altura de capa adaptable" msgid "" @@ -2418,26 +2427,36 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"La torre principal no funciona cuando la altura de la capa de soporte " -"independiente está activada.\n" +"La torre de purga no funciona cuando la altura de la capa de soporte independiente está " +"activada.\n" "¿Qué quieres mantener?\n" -"SÍ - Mantener la torre principal\n" +"SÍ - Mantener la torre de purga\n" "NO - Mantener la altura de la capa de soporte independiente" #, boost-format msgid "%1% infill pattern doesn't support 100%% density." msgstr "El patrón de relleno %1% no soporta el 100%% de densidad." +#, fuzzy +#| msgid "" +#| "Switch to rectilinear pattern?\n" +#| "Yes - switch to rectilinear pattern automatically\n" +#| "No - reset density to default non 100% value automaticlly" msgid "" "Switch to rectilinear pattern?\n" "Yes - switch to rectilinear pattern automaticlly\n" "No - reset density to default non 100% value automaticlly" msgstr "" +"¿Cambiar a patrón rectilineo?\n" +"Sí - cambiar a patrón rectilineo automaticamente\n" +"No - reiniciar a valor de densidad no 100% por defecto automaticamente" msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." msgstr "" +"Mientras se imprime por objeto, el extrusor puede chocar contra la falda.\n" +"En ese caso, reinicie la capa de falda a 1 para evitarlo." msgid "Auto bed leveling" msgstr "Nivelación de cama automática" @@ -2470,7 +2489,7 @@ msgid "Inspecting first layer" msgstr "Inspeccionando la primera capa" msgid "Identifying build plate type" -msgstr "Identificando el tipo de placa de impresión" +msgstr "Identificando el tipo de cama de impresión" msgid "Calibrating Micro Lidar" msgstr "Calibrando el Micro Lidar" @@ -2497,19 +2516,17 @@ msgid "Calibrating extrusion flow" msgstr "Calibrando el flujo de extrusión" msgid "Paused due to nozzle temperature malfunction" -msgstr "" -"Pausado debido a un mal funcionamiento de la temperatura de la boquilla" +msgstr "Pausado debido a un mal funcionamiento de la temperatura de la boquilla" msgid "Paused due to heat bed temperature malfunction" msgstr "" -"Se ha interrumpido debido a un mal funcionamiento de la temperatura de la " -"cama caliente" +"Se ha interrumpido debido a un mal funcionamiento de la temperatura de la cama caliente" msgid "MC" msgstr "MC" msgid "MainBoard" -msgstr "Placa Madre" +msgstr "Placa Base" msgid "TH" msgstr "TH" @@ -2542,13 +2559,13 @@ msgid "Update failed." msgstr "Actualización fallida." msgid "Failed to start printing job" -msgstr "" +msgstr "Fallo iniciando el trabajo de impresión" msgid "default" msgstr "por defecto" msgid "parameter name" -msgstr "" +msgstr "nombre del parámetro" msgid "N/A" msgstr "N/A" @@ -2600,31 +2617,31 @@ msgid "Tool" msgstr "Herramienta" msgid "Layer Time" -msgstr "" +msgstr "Tiempo de capa" msgid "Layer Time (log)" -msgstr "" +msgstr "Tiempo de capa (log)" msgid "Height: " -msgstr "" +msgstr "Altura: " msgid "Width: " -msgstr "" +msgstr "Anchura: " msgid "Speed: " -msgstr "" +msgstr "Velocidad: " msgid "Flow: " -msgstr "" +msgstr "Flujo: " msgid "Layer Time: " -msgstr "" +msgstr "Tiempo de Capa: " msgid "Fan Speed: " -msgstr "" +msgstr "Velocidad del Ventilador: " msgid "Temperature: " -msgstr "" +msgstr "Temperatura: " msgid "Loading G-codes" msgstr "Carga de códigos G" @@ -2636,22 +2653,22 @@ msgid "Generating geometry index data" msgstr "Generación de datos de índices geométricos" msgid "Statistics of All Plates" -msgstr "" +msgstr "Estadísticas de todas las camas" msgid "Display" msgstr "Pantalla" msgid "Flushed" -msgstr "" +msgstr "Descargado" msgid "Total" msgstr "Total" msgid "Total Time Estimation" -msgstr "" +msgstr "Tiempo Total Estimado" msgid "Total time" -msgstr "" +msgstr "Tiempo total" msgid "up to" msgstr "hasta" @@ -2714,7 +2731,7 @@ msgid "Options" msgstr "Opciones" msgid "travel" -msgstr "Recorrido" +msgstr "recorrido" msgid "Extruder" msgstr "Extrusor" @@ -2744,7 +2761,7 @@ msgid "Total Estimation" msgstr "Estimación total" msgid "Time Estimation" -msgstr "" +msgstr "Estimación de Tiempo" msgid "Normal mode" msgstr "Modo normal" @@ -2762,52 +2779,52 @@ msgid "Switch to normal mode" msgstr "Cambiar al modo normal" msgid "Variable layer height" -msgstr "" +msgstr "Altura de capa variable" msgid "Adaptive" -msgstr "" +msgstr "Adaptativo" msgid "Quality / Speed" -msgstr "" +msgstr "Calidad / Velocidad" msgid "Smooth" -msgstr "" +msgstr "Suave" msgid "Radius" msgstr "Radio" msgid "Keep min" -msgstr "" +msgstr "Mantener el mínimo" msgid "Left mouse button:" -msgstr "" +msgstr "Botón izquierdo del ratón:" msgid "Add detail" -msgstr "" +msgstr "Añadir detalle" msgid "Right mouse button:" -msgstr "" +msgstr "Botón derecho del ratón:" msgid "Remove detail" -msgstr "" +msgstr "Borrar detalle" msgid "Shift + Left mouse button:" -msgstr "" +msgstr "Shift + botón izquierdo del ratón:" msgid "Reset to base" -msgstr "" +msgstr "Volver a la base" msgid "Shift + Right mouse button:" -msgstr "" +msgstr "Shift + Botón derecho del ratón:" msgid "Smoothing" -msgstr "" +msgstr "Suavidad" msgid "Mouse wheel:" -msgstr "" +msgstr "Rueda del ratón:" msgid "Increase/decrease edit area" -msgstr "" +msgstr "Incrementar/decrementar el área de edición" msgid "Sequence" msgstr "Secuencia" @@ -2819,7 +2836,7 @@ msgid "Tool Move" msgstr "Herramienta Mover" msgid "Tool Rotate" -msgstr "" +msgstr "Herramienta Rotar" msgid "Move Object" msgstr "Mover Objeto" @@ -2846,7 +2863,7 @@ msgid "Auto rotate for arrangement" msgstr "Rotación automática para el posicionamiento" msgid "Allow multiple materials on same plate" -msgstr "Permitir varios materiales en la misma placa" +msgstr "Permitir varios materiales en la misma cama" msgid "Avoid extrusion calibration region" msgstr "Evitar la zona de calibración del extrusor" @@ -2855,7 +2872,7 @@ msgid "Add" msgstr "Añadir" msgid "Add plate" -msgstr "Añadir placa" +msgstr "Añadir cama" msgid "Auto orient" msgstr "Orientar automáticamente" @@ -2864,7 +2881,7 @@ msgid "Arrange all objects" msgstr "Ordenar todos los objetos" msgid "Arrange objects on selected plates" -msgstr "Colocar los objetos en las placas seleccionadas" +msgstr "Colocar los objetos en las camas seleccionadas" msgid "Split to objects" msgstr "Partir en varias piezas" @@ -2876,7 +2893,7 @@ msgid "Assembly View" msgstr "Vista de conjunto" msgid "Select Plate" -msgstr "Seleccione la placa" +msgstr "Seleccione la cama" msgid "Assembly Return" msgstr "Volver a montar" @@ -2891,10 +2908,10 @@ msgid "Explosion Ratio" msgstr "Ratio de Explosión" msgid "Section View" -msgstr "" +msgstr "Vista de Sección" msgid "Assemble Control" -msgstr "" +msgstr "Control de Ensamblado" msgid "Total Volume:" msgstr "Volumen total:" @@ -2910,53 +2927,58 @@ msgstr "Tamaño:" #, 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 "" +"Se han encontrado conflictos de rutas gcode en la capa %d, z = %.2lf mm. Por favor, separe " +"más los objetos en conflicto (%s <-> %s)." msgid "An object is layed over the boundary of plate." -msgstr "Un objeto está sobre el límite de la placa." +msgstr "Un objeto está sobre el límite de la cama." msgid "A G-code path goes beyond the boundary of plate." -msgstr "Una ruta de código G va más allá del límite de la placa." +msgstr "Una ruta de código G va más allá del límite de la cama." msgid "Only the object being edit is visible." msgstr "Sólo es visible el objeto que se está editando." 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 "" +"Un objeto está colocado en el límite de la cama o excede el límite de altura.\n" +"Por favor solucione el problema moviéndolo totalmente fuera o dentro de la cama, y " +"confirme que la altura está entre el volumen de construcción." msgid "Jump to" msgstr "Ir a" msgid "ERROR:" -msgstr "" +msgstr "ERROR:" msgid "Calibration step selection" -msgstr "" +msgstr "Seleccionar paso de calibración" msgid "Micro lidar calibration" -msgstr "" +msgstr "Calibración Micro lidar" msgid "Bed leveling" -msgstr "" +msgstr "Nivelación de la cama" msgid "Resonance frequency identification" -msgstr "" +msgstr "Identificación de frecuencia de resonancia" msgid "Calibration program" msgstr "Programa de calibración" 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 "" -"El programa de calibración detecta el estado de su dispositivo " -"automáticamente para minimizar la desviación.\n" +"El programa de calibración detecta el estado de su dispositivo automáticamente para " +"minimizar la desviación.\n" "Mantiene el dispositivo con un rendimiento óptimo." msgid "Calibration Flow" @@ -2966,22 +2988,22 @@ msgid "Start Calibration" msgstr "Iniciar Calibración" msgid "Completed" -msgstr "" +msgstr "Completado" msgid "Calibrating" msgstr "Calibrando" msgid "Auto-record Monitoring" -msgstr "" +msgstr "Monitorización de Auto-Grabado" msgid "Go Live" -msgstr "" +msgstr "Ir A En Vivo" msgid "Resolution" msgstr "Resolución" msgid "Show \"Live Video\" guide page." -msgstr "" +msgstr "Mostrar guía de \"Video En vivo\"." msgid "720p" msgstr "" @@ -3003,13 +3025,13 @@ msgstr "" "en la impresora, como se muestra en la figura:" msgid "Invalid input." -msgstr "" +msgstr "Introducción inválida." msgid "New Window" -msgstr "" +msgstr "Nueva Ventana" msgid "Open a new window" -msgstr "" +msgstr "Abrir nueva ventana" msgid "Application is closing" msgstr "La aplicación se está cerrando" @@ -3039,34 +3061,34 @@ msgid "No" msgstr "No" msgid "will be closed before creating a new model. Do you want to continue?" -msgstr "" +msgstr "se cerrará antes de crear un nuevo modelo. ¿Quiere continuar?" msgid "Slice plate" -msgstr "Laminar placa" +msgstr "Laminar cama" msgid "Print plate" -msgstr "" +msgstr "Cama de impresión" msgid "Slice all" msgstr "Laminar todo" msgid "Export G-code file" -msgstr "" +msgstr "Exportar archivo G-code" msgid "Send" msgstr "Enviar" msgid "Export plate sliced file" -msgstr "" +msgstr "Exporar archivo de laminado de cama de impresión" msgid "Export all sliced file" -msgstr "" +msgstr "Exportar todos los archivos de laminado" msgid "Print all" msgstr "Imprimir todo" msgid "Send all" -msgstr "" +msgstr "Mandar todo" msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" @@ -3081,23 +3103,23 @@ msgid "Show Configuration Folder" msgstr "Mostrar Carpeta de Configuración" msgid "Show Tip of the Day" -msgstr "" +msgstr "Mostrar Consejo Diario" msgid "Check for Update" msgstr "Comprobar Actualicaciones" msgid "Open Network Test" -msgstr "" +msgstr "Arir Test de Red" #, c-format, boost-format msgid "&About %s" msgstr "&Acerca de %s" msgid "Upload Models" -msgstr "" +msgstr "Cargar Modelos" msgid "Download Models" -msgstr "" +msgstr "Descargar Modelos" msgid "Default View" msgstr "Vista por Defecto" @@ -3141,7 +3163,7 @@ msgid "Right View" msgstr "Vista derecha" msgid "Start a new window" -msgstr "" +msgstr "Abrir nueva ventana" msgid "New Project" msgstr "Nuevo proyecto" @@ -3171,7 +3193,7 @@ msgid "Save current project as" msgstr "Guardar el proyecto actual como" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" -msgstr "" +msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Cargar un modelo" @@ -3195,22 +3217,22 @@ msgid "Export 3mf file without using some 3mf-extensions" msgstr "Exporte el archivo 3mf sin usar algunas de las extensiones" msgid "Export current sliced file" -msgstr "" +msgstr "Exportar archivo de laminado actual" msgid "Export all plate sliced file" -msgstr "" +msgstr "Exportar todos los archivos de laminado de cama" msgid "Export G-code" msgstr "Exportar código G" msgid "Export current plate as G-code" -msgstr "" +msgstr "Exportar cama actual cómo G-code" msgid "Export &Configs" msgstr "Exportar & Configuración" msgid "Export current configuration to files" -msgstr "" +msgstr "Exportar configuración actual a archivos" msgid "Export" msgstr "Exportar" @@ -3276,10 +3298,10 @@ msgid "Use Orthogonal View" msgstr "Utilizar Vista Ortogonal" msgid "Show &Labels" -msgstr "" +msgstr "Mostrar &Etiquetas" msgid "Show object labels in 3D scene" -msgstr "" +msgstr "Mostrar etiquetas en escena 3D" msgid "Preferences" msgstr "Preferencias" @@ -3291,52 +3313,52 @@ msgid "Help" msgstr "Ayuda" msgid "Temperature Calibration" -msgstr "" +msgstr "Calibración de temperatura" msgid "Pass 1" -msgstr "" +msgstr "Paso 1" msgid "Flow rate test - Pass 1" -msgstr "" +msgstr "Test de caudal - Paso 1" msgid "Pass 2" -msgstr "" +msgstr "Paso 2" msgid "Flow rate test - Pass 2" -msgstr "" +msgstr "Test de Caudal - Paso 2" msgid "Flow rate" -msgstr "" +msgstr "Test de caudal" msgid "Pressure advance" -msgstr "" +msgstr "Avance de presión" msgid "Retraction test" -msgstr "" +msgstr "Test de retracción" msgid "Orca Tolerance Test" -msgstr "" +msgstr "Test de Tolerancia Orca" msgid "Max flowrate" -msgstr "" +msgstr "Máximo caudal" msgid "VFA" msgstr "" msgid "More..." -msgstr "" +msgstr "Más..." msgid "Tutorial" msgstr "" msgid "Calibration help" -msgstr "" +msgstr "Ayuda de calibración" msgid "More calibrations" -msgstr "" +msgstr "Más calibraciones" msgid "3D Models" -msgstr "" +msgstr "Modelos 3D" msgid "&Open G-code" msgstr "Abrir código G (&O)" @@ -3357,10 +3379,10 @@ msgid "Export toolpaths as OBJ" msgstr "Exportar trayectorias de herramientas como OBJ" msgid "Open &Studio" -msgstr "" +msgstr "Abrir $Studio" msgid "Open Studio" -msgstr "" +msgstr "Abrir Studio" msgid "&Quit" msgstr "Sa&lir" @@ -3380,11 +3402,11 @@ msgstr "Ayu&da" #, c-format, boost-format msgid "A file exists with the same name: %s, do you want to override it." -msgstr "" +msgstr "Existe un archivo con el mismo nombre: %s, ¿desea sobreescribirlo?." #, c-format, boost-format msgid "A config exists with the same name: %s, do you want to override it." -msgstr "" +msgstr "Existe unaconfiguración con el mismo nombre: %s, ¿desea sobreescribirla?." msgid "Overwrite file" msgstr "Sobrescribir archivo" @@ -3396,26 +3418,28 @@ msgid "No to All" msgstr "No a todo" msgid "Choose a directory" -msgstr "" +msgstr "Elegir un directorio" #, 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] "" -msgstr[1] "" +msgstr[0] "Hay %d configuración exportada. (solo configuraciones que no sean del sistema)" +msgstr[1] "Hay %d configuraciones exportadas. (solo configuraciones que no sean del sistema)" msgid "Export result" msgstr "Exportar resultado" msgid "Select profile to load:" -msgstr "" +msgstr "Seleccionar perfil a cargar:" #, 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] "" +"Hay %d configuración exportada. (solo configuraciones que no sean del sistema y " +"compatibles)" msgstr[1] "" +"Hay %d configuraciones importadas. (Solo las configuraciones compatibles y no-del-sistema)" msgid "Import result" msgstr "Importar resultado" @@ -3436,6 +3460,10 @@ msgid "" "2. The Filament presets\n" "3. The Printer presets" msgstr "" +"¿Quieres sincronizar tus datos personales desde la nube Bambú? \n" +"Esta contiene la siguiente información:\n" +"1. Los Preajustes de Proceso\n" +"2. Los Preajustes de Filamento3. Los preajustes de la Impressora" msgid "Synchronization" msgstr "Sincronización" @@ -3444,7 +3472,7 @@ msgid "Initialize failed (No Device)!" msgstr "¡Inicialización fallida (No hay dispositivo)!" msgid "Initialize failed (No Camera Device)!" -msgstr "" +msgstr "¡Inicialización fallida (No hay Cámara)!" msgid "Initializing..." msgstr "Iniciando..." @@ -3453,57 +3481,62 @@ msgid "Loading..." msgstr "Cargando..." msgid "Initialize failed (Not supported with LAN-only mode)!" -msgstr "" +msgstr "Inicialización fallida (No soportada con el modo Solo Red Local)" msgid "Initialize failed (Not accessible in LAN-only mode)!" -msgstr "" +msgstr "Inicialización fallida (No accesible en el modo solo Red Local)" msgid "Printer is busy downloading, Please wait for the downloading to finish." -msgstr "" +msgstr "La impresora está ocupada descargando. Por favor, espere a que finalice." msgid "Initialize failed (Missing LAN ip of printer)!" -msgstr "" +msgstr "Inicialización fallida (Perdida la IP de red de la impresora)" msgid "Initialize failed (Not supported by printer)!" -msgstr "" +msgstr "Inicialización fallida (No soportada por la impresora)" #, c-format, boost-format msgid "Initialize failed (%s)!" -msgstr "" +msgstr "¡Fallo al inicializar (%s)!" msgid "Network unreachable" -msgstr "" +msgstr "Red inalcanzable" #, c-format, boost-format msgid "Stopped [%d]!" -msgstr "" +msgstr "Parado [%d]" msgid "Stopped." msgstr "Detenido." msgid "LAN Connection Failed (Failed to start liveview)" -msgstr "" +msgstr "Fallo de Conexión de Red Local (Fallo al iniciar vista en vivo)" msgid "" "Virtual Camera Tools is required for this task!\n" "Do you want to install them?" msgstr "" +"Virtual Camera Tools es necesario para esta tarea.\n" +"¿Desea instalarlas?" msgid "Downloading Virtual Camera Tools" -msgstr "" +msgstr "Descargando Herramientas de Cámara Virtual" 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 "" +"Otra cámara virtual se está ejecutando.\n" +"Bambu Studio solo soporta una cámara virtual.\n" +"¿Desea detener esta cámara virtual?" #, c-format, boost-format msgid "Virtual camera initialize failed (%s)!" -msgstr "" +msgstr "Inicialización de cámara virtual (%s)" msgid "Information" -msgstr "" +msgstr "Información" msgid "Playing..." msgstr "Reproduciendo..." @@ -3519,49 +3552,49 @@ msgid "Month" msgstr "Mes" msgid "All Files" -msgstr "" +msgstr "Todos los Archivos" msgid "Group files by year, recent first." -msgstr "" +msgstr "Agrupar archivos por año, primero los recientes." msgid "Group files by month, recent first." -msgstr "" +msgstr "Agrupar archivos por mes, primero los recientes." msgid "Show all files, recent first." -msgstr "" +msgstr "Mostrar todos los archivos, primero los recientes." msgid "Timelapse" -msgstr "Timelapse" +msgstr "Intervalo" msgid "Switch to timelapse files." -msgstr "" +msgstr "Cambiar a archivos de intervalo." msgid "Video" msgstr "Video" msgid "Switch to video files." -msgstr "" +msgstr "Cambiar a archivos de video." msgid "Delete selected files from printer." -msgstr "" +msgstr "Borrar archivos seleccionados desde la impresora." msgid "Download" msgstr "Descargar" msgid "Download selected files from printer." -msgstr "" +msgstr "Descargar achivos seleccionados desde la impresora." msgid "Select" -msgstr "" +msgstr "Seleccionar" msgid "Batch manage files." -msgstr "" +msgstr "Arhivos de proceso por lotes." msgid "No printers." msgstr "No hay impresoras." msgid "Not supported by this model of printer!" -msgstr "" +msgstr "¡No soportado por este modelo de impresora!" msgid "Connecting..." msgstr "Conectando…" @@ -3577,37 +3610,37 @@ msgid "No files" msgstr "No hay archivos" msgid "Not accessible in LAN-only mode!" -msgstr "" +msgstr "¡No accesible en modelo de solo red local!" msgid "Missing LAN ip of printer!" -msgstr "" +msgstr "¡IP de red local pérdida!" #, c-format, boost-format msgid "You are going to delete %u files. Are you sure to continue?" -msgstr "" +msgstr "Va a borrar %u archivos. ¿Está seguro de continuar?" msgid "Delete files" -msgstr "" +msgstr "Borrar archivos" #, c-format, boost-format msgid "File '%s' was lost! Please download it again." -msgstr "" +msgstr "¡El archivo '%s' se perdió!\" Por favor, vuelva a descargárselo." msgid "Download waiting..." -msgstr "" +msgstr "Descarga esperando..." msgid "Play" -msgstr "" +msgstr "Reproducir" msgid "Open Folder" -msgstr "" +msgstr "Abrir Carpeta" msgid "Download finished" -msgstr "" +msgstr "Descarga finalizada" #, c-format, boost-format msgid "Downloading %d%%..." -msgstr "" +msgstr "Descargando %d%%..." msgid "Speed:" msgstr "Velocidad:" @@ -3622,7 +3655,7 @@ msgid "Zoom" msgstr "Zoom" msgid "Translation/Zoom" -msgstr "" +msgstr "Conversión/Zoom" msgid "3Dconnexion settings" msgstr "Ajustes de conexión 3D" @@ -3631,13 +3664,13 @@ msgid "Swap Y/Z axes" msgstr "Intercambiar los ejes Y/Z" msgid "Camera" -msgstr "" +msgstr "Cámara" msgid "SD Card" -msgstr "" +msgstr "Tarjeta SD" msgid "Camera Setting" -msgstr "" +msgstr "Ajuste de Cámara" msgid "Printing Progress" msgstr "Progreso de impresión" @@ -3652,16 +3685,16 @@ msgid "0" msgstr "" msgid "Layer: N/A" -msgstr "" +msgstr "Capa: N/A" msgid "Clear" -msgstr "" +msgstr "Vaciar" msgid "Control" msgstr "Control" msgid "Print Options" -msgstr "" +msgstr "Opciones de Impresora" msgid "100%" msgstr "100%" @@ -3673,7 +3706,7 @@ msgid "Aux" msgstr "" msgid "Cham" -msgstr "" +msgstr "Costura" msgid "Bed" msgstr "Cama" @@ -3685,69 +3718,75 @@ msgid "Debug Info" msgstr "Información de Depuración" msgid "No SD Card" -msgstr "" +msgstr "Sin tarjeta SD" msgid "SD Card Abnormal" -msgstr "" +msgstr "Tarjeta SD Anormal" msgid "Printing List" msgstr "Imprimiendo Lista" msgid "Cancel print" -msgstr "" +msgstr "Cancelar Impresión" msgid "Are you sure you want to cancel this print?" -msgstr "" +msgstr "¿Está seguro que desea cancelar esta impresión?" #, 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." +"Disconnected from printer [%s] due to LAN mode disabled.Please reconnect the printer by " +"logging in with your user account." msgstr "" +"Desconectado de la impresora [%s] debido a modo de red deshabilitado. Por favor, " +"reconéctese la impresora ingresando con su cuenta de usuario." #, 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." +"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 "" +"Desconectado de la impresora [%s] debido a modo de red habilitado. Por favor, reconéctese " +"la impresora ingresando con su cuenta de usuario." msgid "Downloading..." msgstr "Descargando…" msgid "Cloud Slicing..." -msgstr "" +msgstr "Laminado en la Nube..." #, c-format, boost-format msgid "In Cloud Slicing Queue, there are %s tasks ahead." -msgstr "" +msgstr "Hay %s tareas por delante, en la Cola de Laminado en la Nube." #, c-format, boost-format msgid "Layer: %s" -msgstr "" +msgstr "Capa: %s" #, c-format, boost-format msgid "Layer: %d/%d" -msgstr "" +msgstr "Capa: %d/%d" msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "" +msgstr "Caliente la boquilla a más de 170 grados antes de cargar el filamento." msgid "Still unload" -msgstr "" +msgstr "Aún descargado" msgid "Still load" -msgstr "" +msgstr "Aún cargado" msgid "Please select an AMS slot before calibration" -msgstr "" +msgstr "Seleccione una ranura AMS antes de la calibración" 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 "" +"No se puede leer la información del filamento: el filamento está cargado en el cabezal de " +"la herramienta, por favor, descargue el filamento y vuelva a intentarlo." msgid "This only takes effect during printing" -msgstr "" +msgstr "Esto solo tendrá efecto durante la impresión" msgid "Silent" msgstr "Silencio" @@ -3762,7 +3801,7 @@ msgid "Ludicrous" msgstr "Lúdico" msgid "Can't start this without SD card." -msgstr "" +msgstr "No puede iniciarse sin una tarjeta SD." msgid "Failed to connect to the server" msgstr "No se ha podido conectar con el servidor" @@ -3831,10 +3870,10 @@ msgid "Undo integration was successful." msgstr "La operación de deshacer se ha realizado con éxito." msgid "New network plug-in available." -msgstr "" +msgstr "Nuevo complemento de red disponible." msgid "Details" -msgstr "" +msgstr "Detalles" msgid "Undo integration failed." msgstr "La operación de deshacer ha fallado." @@ -3852,7 +3891,7 @@ msgid "Open Folder." msgstr "Abrir Carpeta." msgid "Safely remove hardware." -msgstr "" +msgstr "Quitar hardware con seguridad." #, c-format, boost-format msgid "%1$d Object has custom supports." @@ -3869,23 +3908,23 @@ msgstr[1] "%1$d Los objetos tienen pintura de color." #, 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] "" -msgstr[1] "" +msgstr[0] "%1$d El objeto se ha cargado como parte del objeto de corte." +msgstr[1] "%1$d Los objetos se han cargado como partes del objeto de corte" msgid "ERROR" -msgstr "" +msgstr "ERROR" msgid "CANCELED" -msgstr "" +msgstr "CANCELADO" msgid "COMPLETED" -msgstr "" +msgstr "COMPLETADO" msgid "Cancel upload" -msgstr "" +msgstr "Carga cancelada" msgid "Slice ok." -msgstr "Rebanado correcto." +msgstr "Laminado correcto." msgid "Error:" msgstr "Error:" @@ -3894,21 +3933,20 @@ msgid "Warning:" msgstr "Advertencia:" msgid "Export successfully." -msgstr "" +msgstr "Exportación exitosa." msgid " (Repair)" msgstr " (Reparación)" msgid " Click here to install it." -msgstr "" +msgstr " Presiona aquí para instalarlo." msgid "WARNING:" msgstr "AVISO:" msgid "Your model needs support ! Please make support material enable." msgstr "" -"¡Su modelo necesita soporte! Por favor, haga que el material de apoyo esté " -"habilitado." +"¡Su modelo necesita soporte! Por favor, haga que el material de apoyo esté habilitado." msgid "Gcode path overlap" msgstr "Superposición de la ruta del Gcode" @@ -3920,7 +3958,7 @@ msgid "Color painting" msgstr "Pintura en color" msgid "Cut connectors" -msgstr "" +msgstr "Cortar Conectores" msgid "Layers" msgstr "Capas" @@ -3928,12 +3966,10 @@ msgstr "Capas" msgid "Range" msgstr "Rango" -msgid "" -"The application cannot run normally because OpenGL version is lower than " -"2.0.\n" +msgid "The application cannot run normally because OpenGL version is lower than 2.0.\n" msgstr "" -"La aplicación no puede ejecutarse normalmente porque la versión de OpenGL es " -"inferior a la 2.0.\n" +"La aplicación no puede ejecutarse normalmente porque la versión de OpenGL es inferior a la " +"2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Por favor, actualice el controlador de su tarjeta gráfica." @@ -3961,24 +3997,24 @@ msgid "Bottom" msgstr "Inferior" msgid "Enable AI monitoring of printing" -msgstr "" +msgstr "Activar monitorización por IA de la impresión" msgid "Sensitivity of pausing is" -msgstr "" +msgstr "La sensibilidad de pausa es" msgid "Enable detection of build plate position" -msgstr "" +msgstr "Activar detección de posición de cama" msgid "" -"The localization tag of build plate is detected, and printing is paused if " -"the tag is not in predefined range." -msgstr "" +"The localization tag of build plate is detected, and printing is paused if the tag is not " +"in predefined range." +msgstr "La etiqueta de localización." msgid "First Layer Inspection" -msgstr "" +msgstr "Inspección de Primera Capa" msgid "Auto-recovery from step loss" -msgstr "" +msgstr "Autorecuperar desde pérdida de paso" msgid "Global" msgstr "Global" @@ -4006,7 +4042,7 @@ msgstr "Sin título" #, boost-format msgid " plate %1%:" -msgstr " placa %1%:" +msgstr " cama %1%:" msgid "Invalid name, the following characters are not allowed:" msgstr "Nombre no válido, los siguientes caracteres no están permitidos:" @@ -4036,7 +4072,7 @@ msgid "Click to edit preset" msgstr "Clic para cambiar el ajuste inicial" msgid "Connection" -msgstr "" +msgstr "Conexión" msgid "Bed type" msgstr "Tipo de cama" @@ -4045,48 +4081,51 @@ msgid "Flushing volumes" msgstr "Volúmenes de limpieza" msgid "Add one filament" -msgstr "" +msgstr "Añadir un filamento" msgid "Remove last filament" -msgstr "" +msgstr "Borrar último filamento" msgid "Synchronize filament list from AMS" -msgstr "" +msgstr "Sicronizar filamentos de la lista AMS" msgid "Set filaments to use" -msgstr "" +msgstr "Elegir filamentos para usar" -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 "" +"No hay filamentos AMS. Por favor, seleccione una impresora en la página 'Dispositivos' " +"para cargar información AMS." msgid "Sync filaments with AMS" -msgstr "" +msgstr "Sincronizar filamentos con 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 "" +"Sincronizar filamentos con AMS descartará todos los preajustes de filamento y colores. " +"¿Desea continuar?" -msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" +msgid "Already did a synchronization, do you want to sync only changes or resync all?" msgstr "" +"Se realizó la sincronización, ¿Desea sincronizar solo los cambios o resincronizar todo?" msgid "Sync" -msgstr "" +msgstr "Sincronizar" msgid "Resync" -msgstr "" +msgstr "Resincronizar" msgid "There are no compatible filaments, and sync is not performed." -msgstr "" +msgstr "No hay filamentos compatible, y no se ha realizado la sincronización." 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 "" +"Hay algunos filamentos desconocidos mapeados en el preajuste genérico. Por favor actualice " +"o reinicie Orca Slicer para comprobar si hay una actualización de preajustes del sistema." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -4094,53 +4133,59 @@ msgstr "¿Quieres guardar los cambios en \"%1%\"?" #, c-format, boost-format msgid "" -"Successfully unmounted. The device %s(%s) can now be safely removed from the " -"computer." +"Successfully unmounted. The device %s(%s) can now be safely removed from the computer." msgstr "" +"Desmontado correctamente. El dispositivo %s(%s) ahora puede ser eliminado de forma segura." #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." -msgstr "" +msgstr "La expulsión del dispositivo %s(%s) ha fallado." msgid "Previous unsaved project detected, do you want to restore it?" -msgstr "" -"Se ha detectado un proyecto anterior no guardado, ¿quieres restaurarlo?" +msgstr "Se ha detectado un proyecto anterior no guardado, ¿quieres restaurarlo?" msgid "Restore" msgstr "Restaurar" 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 "" +"La temperatura de la cama excede la temperatura de vitrificación del filamento. Por favor, " +"abra la puerta frontal de la impresora antes de imprimir para evitar atascos en la " +"boquilla." 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 "" +"La dureza de la boquilla requerida por el filamento es más alta que la dureza por defecto " +"de la impresora. Por favor, reemplace la boquilla endurecida y el filamento, de otra " +"forma, la boquilla se atascará o se dañará." #, c-format, boost-format msgid "Loading file: %s" msgstr "Cargando archivo: %s" msgid "The 3mf is not from Bambu Lab, load geometry data only." -msgstr "" +msgstr "El 3mf no es de Bambu Lab, cargar datos de geometría solo." msgid "Load 3mf" -msgstr "" +msgstr "Cargar 3mf" msgid "The Config can not be loaded." -msgstr "" +msgstr "La Configuración no será cargada." msgid "The 3mf is generated by old Orca Slicer, load geometry data only." -msgstr "" +msgstr "El 3mf está generado por un Orca Slicer antiguo, cargar solo datos de geometría." #, c-format, boost-format msgid "" -"The 3mf's version %s is newer than %s's version %s, Found following keys " -"unrecognized:" +"The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:" msgstr "" +"La versión de 3mf %s es más nueva que la versión de %s %s, encontradas las siguientes " +"llaves no reconocidas:" msgid "You'd better upgrade your software.\n" msgstr "Será mejor que actualices tu software.\n" @@ -4149,27 +4194,25 @@ msgid "Newer 3mf version" msgstr "Nueva versión 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 "" +"La versión de 3mf %s es más nueva que la versión de %s %s, se sugiere actualizar su " +"sofware." msgid "Invalid values found in the 3mf:" -msgstr "" +msgstr "Valores inválidos encontrados en el 3mf:" msgid "Please correct them in the param tabs" -msgstr "" +msgstr "Por favor, corrijalos en las pestañas de parámetros" msgid "The 3mf is not compatible, load geometry data only!" -msgstr "" +msgstr "¡El 3mf no es compatible, cargue solamente los datos de geometría!" msgid "Incompatible 3mf" -msgstr "3mf Incompatible " +msgstr "3mf Incompatible" msgid "Name of components inside step file is not UTF8 format!" -msgstr "" -"El nombre de los componentes dentro del archivo de pasos no tiene formato " -"UTF8." +msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF8!" msgid "The name may show garbage characters!" msgstr "¡El nombre puede mostrar caracteres no válidos!" @@ -4177,8 +4220,7 @@ msgstr "¡El nombre puede mostrar caracteres no válidos!" #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." msgstr "" -"Ha fallado la carga del archivo \"%1%\". Se ha encontrado una configuración " -"no válida." +"Ha fallado la carga del archivo \"%1%\". Se ha encontrado una configuración no válida." msgid "Objects with zero volume removed" msgstr "Objetos con volumen cero eliminados" @@ -4191,8 +4233,7 @@ msgid "" "The object from file %s is too small, and maybe in meters or inches.\n" " Do you want to scale to millimeters?" msgstr "" -"El objeto del archivo %s es demasiado pequeño, tal vez en metros o " -"pulgadas.\n" +"El objeto del archivo %s es demasiado pequeño, tal vez en metros o pulgadas.\n" " ¿Quiere escalar a milímetros?" msgid "Object too small" @@ -4203,9 +4244,12 @@ msgid "" "Instead of considering them as multiple objects, should \n" "the file be loaded as a single object having multiple parts?" msgstr "" +"Este archivo contiene varios objetos colocados a varias alturas.\n" +"En lugar de considerarlos como objetos múltiples, ¿debería \n" +"el archivo como un único objeto con múltiples partes?" msgid "Multi-part object detected" -msgstr "" +msgstr "Objeto multiparte detectado" msgid "Load these files as a single object with multiple parts?\n" msgstr "¿Cargar estos archivos como un objeto único con múltiples partes?\n" @@ -4217,12 +4261,14 @@ msgid "The file does not contain any geometry data." msgstr "El archivo no contiene ninguna información geométrica." 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 "" +"Tu objeto parece demasiado grande, ¿Deseas disminuirlo para que quepa en la cama caliente " +"automaticamente?" msgid "Object too large" -msgstr "" +msgstr "Objeto demasiado grande" msgid "Export STL file:" msgstr "Exportar archivo STL:" @@ -4231,13 +4277,16 @@ msgid "Save file as:" msgstr "Guardar archivo como:" msgid "Delete object which is a part of cut object" -msgstr "" +msgstr "Borrar objetos los cuales son partes del objeto cortado" 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 "" +"Se intenta eliminar un objeto que forma parte de un objeto cortado.\n" +"Esta acción romperá una correspondencia de corte.\n" +"Después de eso la consistencia del modelo no puede ser garantizada." msgid "The selected object couldn't be split." msgstr "El objeto seleccionado no ha podido ser dividido." @@ -4246,13 +4295,13 @@ msgid "Another export job is running." msgstr "Otro trabajo de exportación está en marcha." msgid "Select a new file" -msgstr "" +msgstr "Seleccione un nuevo archivo" msgid "File for the replace wasn't selected" -msgstr "" +msgstr "El archivo de reemplazo no ha sido seleccionado" msgid "Error during replace" -msgstr "" +msgstr "Error durante el reemplazo" msgid "Please select a file" msgstr "Por favor, seleccione un archivo" @@ -4270,56 +4319,57 @@ msgid "Invalid data" msgstr "Datos inválidos" msgid "Slicing Canceled" -msgstr "" +msgstr "Laminado Cancelado" #, c-format, boost-format msgid "Slicing Plate %d" -msgstr "Placa de corte %d" +msgstr "Cama de corte %d" msgid "Please resolve the slicing errors and publish again." msgstr "Por favor, resuelve los errores de corte y publica de nuevo." -msgid "" -"Network Plug-in is not detected. Network related features are unavailable." -msgstr "" +msgid "Network Plug-in is not detected. Network related features are unavailable." +msgstr "Complemento de red no detectado. Características relacionadas no disponibles." msgid "" "Preview only mode:\n" "The loaded file contains gcode only, Can not enter the Prepare page" msgstr "" +"Previsualizar solo el modo:\n" +"El archivo cargado contiene solo gcode, no puedo entrar a la página de Preparación" msgid "You can keep the modified presets to the new project or discard them" -msgstr "" -"Puedes mantener los preajustes modificados en el nuevo proyecto o " -"descartarlos" +msgstr "Puedes mantener los preajustes modificados en el nuevo proyecto o descartarlos" msgid "Creating a new project" msgstr "Creando un nuevo proyecto" msgid "Load project" -msgstr "Carga de Proyecto" +msgstr "Cargar Proyecto" 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 "" +"Fallo salvando el proyecto.\n" +"Por favor, comprobar si la carpeta existe en línea o si otros programas tienen abierto el " +"archivo de proyecto." msgid "Save project" -msgstr "" +msgstr "Salvar proyecto" msgid "Importing Model" -msgstr "" +msgstr "Importando modelo" msgid "prepare 3mf file..." -msgstr "" +msgstr "preparar el archivo 3mf..." msgid "downloading project ..." -msgstr "" +msgstr "descargando proyecto..." #, c-format, boost-format msgid "Project downloaded %d%%" -msgstr "" +msgstr "Proyecto descargado %d%%" msgid "The selected file" msgstr "El archivo seleccionado" @@ -4352,7 +4402,7 @@ msgid "G-code files can not be loaded with models together!" msgstr "¡Los archivos de código G no pueden cargarse con los modelos juntos!" msgid "Can not add models when in preview mode!" -msgstr "No se pueden añadir modelos en el modo de vista previa" +msgstr "No se pueden añadir modelos en el modo de vista previa!" msgid "Add Models" msgstr "Añadir Modelos" @@ -4361,11 +4411,10 @@ msgid "All objects will be removed, continue?" msgstr "Todos los objetos serán eliminados, deseas continuar?" msgid "The current project has unsaved changes, save it before continue?" -msgstr "" -"El proyecto actual tiene cambios sin guardar, ¿guardarlos antes de continuar?" +msgstr "El proyecto actual tiene cambios sin guardar, ¿guardarlos antes de continuar?" msgid "Remember my choice." -msgstr "" +msgstr "Recordar my elección." msgid "Number of copies:" msgstr "Número de copias:" @@ -4377,13 +4426,14 @@ msgid "Save G-code file as:" msgstr "Guardar archivo Código G como:" msgid "Save Sliced file as:" -msgstr "Guardar el archivo rebanado como:" +msgstr "Guardar el archivo laminado como:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed " -"on the printer." +"The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "" +"El archivo %s ha sido mandado al almacenamiento de la impresora y puede ser visto en la " +"impresora." msgid "" "Print By Object: \n" @@ -4400,14 +4450,13 @@ msgstr "Enviar a la impresora" msgid "Custom supports and color painting were removed before repairing." msgstr "" -"Los soportes personalizados y la pintura de color se eliminaron antes de la " -"reparación." +"Los soportes personalizados y la pintura de color se eliminaron antes de la reparación." msgid "Invalid number" msgstr "Número inválido" msgid "Plate Settings" -msgstr "" +msgstr "Configuración de Cama" #, boost-format msgid "Part name: %1%\n" @@ -4437,22 +4486,25 @@ msgstr "Volumen: %1% mm³\n" #, boost-format msgid "Triangles: %1%\n" -msgstr " Triángulos: %1%\n" +msgstr "Triángulos: %1%\n" msgid "Tips:" -msgstr "" +msgstr "Consejos:" 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 "" +"La característica \"Arreglar Modelo\" está actualmente solo en Windows. Por favor, en Orca " +"Slicer(windows) o el software 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." +"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 "" +"Cama% d: %s no está sugerido para ser usado para imprimir filamento %s(%s). Si usted aún " +"quiere imprimir, por favor, seleccione 0 en la temperatura de cama." msgid "Switching the language requires application restart.\n" msgstr "El cambio de idioma requiere el reinicio de la aplicación.\n" @@ -4464,9 +4516,7 @@ msgid "Language selection" msgstr "Selección de Iidiomas" msgid "Switching application language while some presets are modified." -msgstr "" -"Cambio de idioma de la aplicación mientras se modifican algunas " -"preselecciones." +msgstr "Cambio de idioma de la aplicación mientras se modifican algunas preselecciones." msgid "Changing application language" msgstr "Cambiar el idioma de la aplicación" @@ -4481,10 +4531,10 @@ msgid "Second" msgstr "Segundo" msgid "Browse" -msgstr "" +msgstr "Explorar" msgid "Choose Download Directory" -msgstr "" +msgstr "Elegir Directorio de Descarga" msgid "General Settings" msgstr "Configuración General" @@ -4517,102 +4567,97 @@ msgid "Units" msgstr "Unidades" msgid "Zoom to mouse position" -msgstr "" +msgstr "Hacer zoom en la posición del ratón" msgid "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the " -"2D window center." +"Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window " +"center." msgstr "" +"Hacer zoom hacia la posición del puntero de ratón en la vista 3D, en vez del centro de la " +"ventana 2D." msgid "Show \"Tip of the day\" notification after start" -msgstr "" +msgstr "Mostrar la notificación \"Consejo del Día\" después de empezar" msgid "If enabled, useful hints are displayed at startup." -msgstr "" +msgstr "Si está activado, las sugerencias útiles serán mostradas al inicio." msgid "Show g-code window" -msgstr "" +msgstr "Mostrar la ventana de g-code" msgid "If enabled, g-code window will be displayed." -msgstr "" +msgstr "Si está activado, se mostrará la ventana de gcode." msgid "Presets" -msgstr "" +msgstr "Preajustes" msgid "Auto sync user presets(Printer/Filament/Process)" msgstr "" -"Sincronización automática de los preajustes del usuario (Impresora/Filamento/" -"Proceso)" +"Sincronización automática de los preajustes del usuario (Impresora/Filamento/Proceso)" msgid "User Sync" msgstr "Sincronización de usuario" msgid "Update built-in Presets automatically." -msgstr "" +msgstr "Actualizar preajustes integrados automaticamente." msgid "System Sync" -msgstr "" +msgstr "Sincronizar sistema" msgid "Clear my choice on the unsaved presets." -msgstr "" +msgstr "Limpiar mi selección de preajustes no guardados." msgid "Associate files to OrcaSlicer" -msgstr "Asociar archivos a BambuStudio" +msgstr "Asociar archivos a OrcaSlicer" msgid "Associate .3mf files to OrcaSlicer" -msgstr "Asociar archivos .3mf a BambuStudio" +msgstr "Asociar archivos .3mf a OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" -msgstr "" -"Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir " -"archivos .3mf" +msgstr "Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir archivos .3mf" msgid "Associate .stl files to OrcaSlicer" -msgstr "Asociar archivos .stl a BambuStudio" +msgstr "Asociar archivos .stl a OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" -msgstr "" -"Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir " -"archivos .stl" +msgstr "Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir archivos .stl" msgid "Associate .step/.stp files to OrcaSlicer" -msgstr "Asociar archivos .step/.stp a BambuStudio" +msgstr "Asociar archivos .step/.stp a OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" msgstr "" -"Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir " -"archivos .step" +"Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir archivos .step" msgid "Maximum recent projects" -msgstr "" +msgstr "Proyectos recientes máximos" msgid "Maximum count of recent projects" -msgstr "" +msgstr "Máxima cantidad de proyectos recientes" msgid "Clear my choice on the unsaved projects." -msgstr "" +msgstr "Limpiar mi elección de proyectos no guardados." msgid "Auto-Backup" msgstr "Copia de seguridad automática" -msgid "" -"Backup your project periodically for restoring from the occasional crash." -msgstr "" +msgid "Backup your project periodically for restoring from the occasional crash." +msgstr "Haga copia de seguridad periodicamente para restaurar en caso de fallo ocasional." msgid "every" -msgstr "" +msgstr "todo" msgid "The peroid of backup in seconds." -msgstr "" +msgstr "El periodo de copia de seguridad en segundos." msgid "Downloads" -msgstr "" +msgstr "Descargas" msgid "Dark Mode" -msgstr "" +msgstr "Modo Oscuro" msgid "Enable Dark mode" -msgstr "" +msgstr "Activar Modo Oscuro" msgid "Home page and daily tips" msgstr "Página de inicio y consejos diarios" @@ -4702,7 +4747,7 @@ msgid "DEBUG settings have saved successfully!" msgstr "¡Los ajustes de depuración se han guardado con éxito!" msgid "Switch cloud environment, Please login again!" -msgstr "" +msgstr "¡Cambiado a entorno de nube, Por favor vuelva a autenticarse!" msgid "System presets" msgstr "Ajustes del sistema" @@ -4720,7 +4765,7 @@ msgid "Click to pick filament color" msgstr "Haga clic para elegir el color del filamento" msgid "Please choose the filament colour" -msgstr "" +msgstr "Por favor elija el color del filamento" msgid "Add/Remove presets" msgstr "Añadir/Quitar ajustes preestablecidos" @@ -4732,54 +4777,52 @@ msgid "Project-inside presets" msgstr "Preajustes internos del proyecto" msgid "Add/Remove filaments" -msgstr "" +msgstr "Añadir/Borrar filamentos" msgid "Add/Remove materials" -msgstr "" +msgstr "Añadir/Borrar materiales" msgid "Add/Remove printers" -msgstr "" +msgstr "Añadir/Borrar impresoras" msgid "Same as Global Print Sequence" -msgstr "" +msgstr "Lo mismo que la Secuencia Global de Impresión" msgid "Print sequence" msgstr "Secuencia de impresión" msgid "Plate name" -msgstr "" +msgstr "Nombre de cama" msgid "Same as Global Bed Type" -msgstr "" +msgstr "Lo mismo que el Tipo de Cama Global" msgid "Cool Plate" -msgstr "Placa fría" +msgstr "Cama fría" msgid "Engineering Plate" -msgstr "Placa de ingeniería" +msgstr "Cama de ingeniería" msgid "High Temp Plate" -msgstr "Placa de alta temperatura" +msgstr "Cama de alta temperatura" msgid "Textured PEI Plate" -msgstr "" +msgstr "Cama PEI texturizada" msgid "By Layer" -msgstr "" +msgstr "Por Capa" msgid "By Object" -msgstr "" +msgstr "Por Objeto" msgid "Accept" -msgstr "" +msgstr "Aceptar" msgid "Log Out" -msgstr "" +msgstr "Desconectarse" msgid "Slice all plate to obtain time and filament estimation" -msgstr "" -"Rebana todas las piezas para obtener una estimación del tiempo y del " -"filamento" +msgstr "Rebana todas las piezas para obtener una estimación del tiempo y del filamento" msgid "Packing project data into 3mf file" msgstr "Empaquetar los datos del proyecto en un archivo 3mf" @@ -4791,8 +4834,7 @@ msgid "Jump to model publish web page" msgstr "Ir a la página web de publicación de modelos" msgid "Note: The preparation may takes several minutes. Please be patiant." -msgstr "" -"Nota: La preparación puede llevar varios minutos. Por favor, sea paciente." +msgstr "Nota: La preparación puede llevar varios minutos. Por favor, sea paciente." msgid "Publish" msgstr "Publicar" @@ -4801,7 +4843,7 @@ msgid "Publish was cancelled" msgstr "La publicación fue cancelada" msgid "Slicing Plate 1" -msgstr "Placa de corte 1" +msgstr "Cama de corte 1" msgid "Packing data to 3mf" msgstr "Empaquetando datos a 3mf" @@ -4840,8 +4882,7 @@ msgstr "El preajuste \"%1%\" ya existe." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "" -"El preajuste \"%1%\" ya existe y es incompatible con la impresora actual." +msgstr "El preajuste \"%1%\" ya existe y es incompatible con la impresora actual." msgid "Please note that saving action will replace this preset" msgstr "Tenga en cuenta que la acción de guardar reemplazará este preajuste" @@ -4871,8 +4912,7 @@ msgstr "La impresora \"%1%\" está seleccionada con el preajuste \"%2%\"" #, boost-format msgid "Please choose an action with \"%1%\" preset after saving." -msgstr "" -"Por favor, elija una acción con \"%1%\" preestablecido después de guardar." +msgstr "Por favor, elija una acción con \"%1%\" preestablecido después de guardar." #, boost-format msgid "For \"%1%\", change \"%2%\" to \"%3%\" " @@ -4893,7 +4933,7 @@ msgid "Offline" msgstr "Fuera de línea" msgid "(LAN)" -msgstr "" +msgstr "(Red local)" msgid "My Device" msgstr "Mi dispositivo" @@ -4905,7 +4945,7 @@ msgid "Input access code" msgstr "Introducir el código de acceso" msgid "Can't find my devices?" -msgstr "" +msgstr "No puedo encontrar mis dispositivos?" msgid "Log out successful." msgstr "Cierre de sesión con éxito." @@ -4914,13 +4954,13 @@ msgid "Busy" msgstr "Ocupado" msgid "Bambu Cool Plate" -msgstr "Placa frío Bambu" +msgstr "Cama frío Bambu" msgid "Bamabu Engineering Plate" -msgstr "Placa de Ingenieria Bambu" +msgstr "Cama de Ingenieria Bambu" msgid "Bamabu High Temperature Plate" -msgstr "Placa de alta temperatura Bambu" +msgstr "Cama de alta temperatura Bambu" msgid "Send print job to" msgstr "Enviar el trabajo de impresión a" @@ -4947,104 +4987,110 @@ msgid "Synchronizing device information" msgstr "Sincronizando la información del dispositivo" msgid "Synchronizing device information time out" -msgstr "" -"Finalización del tiempo de sincronización de la información del dispositivo" +msgstr "Finalización del tiempo de sincronización de la información del dispositivo" msgid "Cannot send the print job when the printer is updating firmware" -msgstr "" +msgstr "No es posible enviar el trabajo cuando la impresora está actualizando el 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 "" -"La impresora está ejecutando instrucciones. Por favor, reinicie la impresión " -"cuando termine" +"La impresora está ejecutando instrucciones. Por favor, reinicie la impresión cuando termine" msgid "The printer is busy on other print job" -msgstr "La impresora está ocupada con otro trabajo de impresión." +msgstr "La impresora está ocupada con otro trabajo de impresión" #, 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 "" +"El %s del filamento excede el número de ranuras AMS. Por favor actualice el " +"firmwareimpresora para que soporte la asignación de ranuras AMS." msgid "" -"Filament exceeds the number of AMS slots. Please update the printer firmware " +"Filament exceeds the number of AMS slots. Please update the printer firmware to support " +"AMS slot assignment." +msgstr "" +"El %s del filamento excede el número de ranuras AMS. Por favor actualice el " +"firmwareimpresora para que soporte la asignación de ranuras AMS." + +msgid "" +"Filaments to AMS slots mappings have been established. You can click a filament above to " +"change its mapping AMS slot" +msgstr "" +"Se han establecido mapeos de filamentos a ranuras AMS. Puede hacer clic en un filamento de " +"arriba para cambiar su asignación de ranura AMS" + +msgid "" +"Please click each filament above to specify its mapping AMS slot before sending the print " +"job" +msgstr "" +"Por favor, haga clic en cada filamento de arriba para especificar su asignación de ranura " +"AMS antes de enviar el trabajo de impresió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 "" +"El filamento %s no coincide con el filamento la ranura AMS %s. Por favor actualice el " +"firmware de la impresora para que soporte la asignación de ranuras AMS." msgid "" -"Filaments to AMS slots mappings have been established. You can click a " -"filament above to change its mapping AMS slot" +"Filament does not match the filament in AMS slot. Please update the printer firmware to " +"support AMS slot assignment." msgstr "" -"Se han establecido mapeos de filamentos a ranuras AMS. Puede hacer clic en " -"un filamento de arriba para cambiar su asignación de ranura AMS" +"El %s del filamento excede el número de ranuras AMS. Por favor actualice el " +"firmwareimpresora para que soporte la asignación de ranuras AMS." -msgid "" -"Please click each filament above to specify its mapping AMS slot before " -"sending the print job" -msgstr "" -"Por favor, haga clic en cada filamento de arriba para especificar su " -"asignación de ranura AMS antes de enviar el trabajo de impresió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 "" - -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." +msgid "The printer firmware only supports sequential mapping of filament => AMS slot." msgstr "" +"El firmware de la impresora solo soporta el mapeo secuencial de filamento => ranura AMS." msgid "An SD card needs to be inserted before printing." -msgstr "" +msgstr "Es necesario introducir una tarjeta SD antes de imprimir." msgid "An SD card needs to be inserted to record timelapse." -msgstr "" +msgstr "Es necesario insertar una tarjeta SD para guardar el intervalo de tiempo." -msgid "" -"Cannot send the print job to a printer whose firmware is required to get " -"updated." +msgid "Cannot send the print job to a printer whose firmware is required to get updated." msgstr "" +"No es posible enviar el trabajo de impresión a una impresora la cual necesita una " +"actualización de firmware." msgid "Cannot send the print job for empty plate" -msgstr "" +msgstr "No es posible enviar el trabajo de impresión a una cama vacía" msgid "This printer does not support printing all plates" -msgstr "" +msgstr "Esta impresora no soporta la impresión en todas las camas" msgid "Errors" -msgstr "" +msgstr "Errores" msgid "Please check the following:" -msgstr "" +msgstr "Por favor compruebe lo siguiente:" 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 "" +"El tipo de impresora seleccionado cuando se genera el G-Code no tiene consistencia con la " +"impresora seleccionada actualmente. Es recomendable que use el mismo tipo de impresora " +"para laminar." #, c-format, boost-format msgid "%s is not supported by AMS." -msgstr "" +msgstr "%s no está soportado por el AMS." 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 "" +"Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, compruebe si son los " +"filamentos requeriso. Si lo son, presione \"Confirmar\" para empezar a imprimir." -msgid "" -"Please click the confirm button if you still want to proceed with printing." -msgstr "" +msgid "Please click the confirm button if you still want to proceed with printing." +msgstr "Por favor, presione el botón de confirmar si aún quieres proceder con la impresión." msgid "Preparing print job" msgstr "Preparando el trabajo de impresión" @@ -5053,21 +5099,20 @@ msgid "Modifying the device name" msgstr "Modificar el nombre del dispositivo" msgid "Send to Printer SD card" -msgstr "" +msgstr "Enviar a la tarjeta SD de la impresora" msgid "Cannot send the print task when the upgrade is in progress" -msgstr "" -"No se puede enviar la tarea de impresión cuando la actualización está en " -"curso" +msgstr "No se puede enviar la tarea de impresión cuando la actualización está en curso" msgid "An SD card needs to be inserted before send to printer SD card." msgstr "" +"Es necesario insertar una tarjeta SD antes de enviar a la tarjeta SD de la impresora." msgid "The printer is required to be in the same LAN as Orca Slicer." -msgstr "" +msgstr "Es necesaria que la impresora esté en la misma red local que Orca Slicer." msgid "The printer does not support sending to printer SD card." -msgstr "" +msgstr "La impresora no soporta el envio directo a la tarjeta SD." msgid "Log in printer" msgstr "Iniciar sesión en la impresora" @@ -5088,9 +5133,7 @@ msgid "Please log in first." msgstr "Por favor, identifíquese primero." msgid "There was a problem connecting to the printer. Please try again." -msgstr "" -"Ha habido un problema de conexión con la impresora. Por favor, inténtelo de " -"nuevo." +msgstr "Ha habido un problema de conexión con la impresora. Por favor, inténtelo de nuevo." msgid "Failed to log out." msgstr "No se ha podido cerrar la sesión." @@ -5104,52 +5147,73 @@ msgid "Delete this preset" msgstr "Borra este ajuste" msgid "Search in preset" -msgstr "" +msgstr "Buscar en los ajustes por defecto" msgid "Click to reset all settings to the last saved preset." -msgstr "" +msgstr "Presionar para reiniciar todos los ajustes a los últimos ajustes por defecto." 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 "" +"Se requiere la torre de purga para un intervalo suave. Puede haber defectos modelos sin " +"torre de purga.¿Está seguro de que quiere deshabilitar la torre principal?" 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 "" +"La torre primaria es necesaria para que el timelapse sea fluido. Puede haber defectos en " +"el modelo sin torre primaria. ¿Desea activar la torre primaria?" 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 "" +"Hemos añadido al estilo esperimental \"Árboles Delgados\" que presenta volumenes de " +"soportemás pequeños con menos fuerza.\n" +"Recomendamos usarlo con: 0 capas de interfaz, 0 distancia superior, 2 paredes." msgid "" "Change these settings automatically? \n" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" +"Cambiar estos ajustes automaticamente? \n" +"Sí - Cambiar estos ajustes automaticamente\n" +"No - No cambiar estos ajustes" 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 "" +"Para \"Árboles fuertes\" y \"Árboles Híbridos\", recomendamos lo siguiente ajustes: al " +"menos 2 capas de interfaz, al menos 0.1mm de distancia superior en z o usar materiales de " +"soporte en la interfaz." 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 "" +"Cuando se use material de soporte para las interfaces de soporte, recomendamos los " +"siguientes ajustes:\n" +"distancia z0, espaciado de interfaz 0, patrón concéntrico y desactivar altura de soporte " +"independiente de altura de capa" 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 "" +"Cuando grabamos intervalos de tiempo sin cabezal de impresión, es recomendable añadir un " +"\"Torre de Purga de Intervalo\" \n" +"presionando con el botón derecho la posición vacía de la cama de construcción y elegir " +"\"Añadir Primitivo\"->\"Intervalo de Torre de Purga\"." msgid "Line width" msgstr "Ancho de línea" @@ -5161,7 +5225,7 @@ msgid "Precision" msgstr "Precisión" msgid "Wall generator" -msgstr "" +msgstr "Generador de paredes" msgid "Walls" msgstr "Paredes" @@ -5179,14 +5243,13 @@ msgid "Overhang speed" msgstr "Velocidad del voladizo" 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 "" -"Esta es la velocidad para varios grados de voladizo. Los grados de voladizo " -"se expresan como un porcentaje del ancho de la línea. La velocidad 0 " -"significa que no hay ralentización para el rango de grados de voladizo y se " -"utiliza la velocidad de la pared" +"Esta es la velocidad para varios grados de voladizo. Los grados de voladizo se expresan " +"como un porcentaje del ancho de la línea. La velocidad 0 significa que no hay " +"ralentización para el rango de grados de voladizo y se utiliza la velocidad de la pared" msgid "Travel speed" msgstr "Velocidad de desplazamiento" @@ -5195,25 +5258,25 @@ msgid "Acceleration" msgstr "Aceleración" msgid "Jerk(XY)" -msgstr "" +msgstr "Jerk(XY)" msgid "Raft" -msgstr "" +msgstr "Base de impresión" msgid "Support filament" msgstr "Filamento de soporte" msgid "Prime tower" -msgstr "Torre Principal" +msgstr "Torre de Purga" msgid "Special mode" msgstr "Modo especial" msgid "G-code output" -msgstr "" +msgstr "G-code de salida" msgid "Post-processing Scripts" -msgstr "" +msgstr "Script de Post-procesado" msgid "Frequent" msgstr "Frecuente" @@ -5221,20 +5284,18 @@ msgstr "Frecuente" #, 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] "" "La siguiente línea %s contiene palabras clave reservadas.\n" -"Por favor, elimínela, o vencerá la visualización del código G y la " -"estimación del tiempo de impresión." +"Por favor, elimínela, o vencerá la visualización del código G y la estimación del tiempo " +"de impresión." msgstr[1] "" "Las siguientes líneas %s contienen palabras clave reservadas.\n" -"Por favor, elimínelas, o vencerá la visualización del código G y la " -"estimación del tiempo de impresión." +"Por favor, elimínelas, o vencerá la visualización del código G y la estimación del tiempo " +"de impresión." msgid "Reserved keywords found" msgstr "Palabras clave utilizadas y encontradas" @@ -5253,8 +5314,8 @@ msgstr "Temperatura recomendada de la boquilla" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" -"Rango de temperatura de boquilla recomendado para este filamento. 0 " -"significa que no se ajusta" +"Rango de temperatura de boquilla recomendado para este filamento. 0 significa que no se " +"ajusta" msgid "Recommended temperature range" msgstr "Rango de temperatura recomendado" @@ -5263,7 +5324,7 @@ msgid "Print temperature" msgstr "Temperatura de impresión" msgid "Chamber temperature" -msgstr "" +msgstr "Temperatura de cámara" msgid "Nozzle" msgstr "Boquilla" @@ -5272,39 +5333,38 @@ msgid "Nozzle temperature when printing" msgstr "Temperatura de la boquilla al imprimir" msgid "Cool plate" -msgstr "Placa fría" +msgstr "Cama fría" 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 "" -"Esta es la temperatura de la cama cuando la placa fría está instalada. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa " -"fría." +"Esta es la temperatura de la cama cuando la cama fría está instalada. Un valor de 0 " +"significa que el filamento no admite la impresión en la cama fría" msgid "Engineering plate" -msgstr "Placa de ingeniería" +msgstr "Cama de ingeniería" 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 "" -"Esta es la temperatura de la cama cuando la placa de ingeniería está " -"instalada. Un valor de 0 significa que el filamento no admite la impresión " -"en la placa de ingeniería." +"Esta es la temperatura de la cama cuando la cama de ingeniería está instalada. Un valor de " +"0 significa que el filamento no admite la impresión en la cama de ingeniería" 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 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 placa de alta temperatura está " -"instalada. Un valor de 0 significa que el filamento no admite la impresión " -"en la placa de alta temperatura." +"Esta es la temperatura de la cama cuando la cama de alta temperatura está instalada. Un " +"valor de 0 significa que el filamento no admite la impresión en la cama de alta temperatura" 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 "" +"Temperatura del lecho cuando la cama PEI texturizada está instalada. El valor 0 significa " +"que el filamento no es compatible para imprimir en la cama PEI texturizada" msgid "Volumetric speed limitation" msgstr "Limitación de la velocidad volumétrica" @@ -5322,27 +5382,26 @@ msgid "Min fan speed threshold" msgstr "Umbral de velocidad mínima del ventilador" 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 "" -"La velocidad del ventilador de refrigeración de la pieza comenzará a " -"funcionar a la velocidad mínima cuando el tiempo estimado de la capa no sea " -"superior al tiempo de la capa ajustado. Cuando el tiempo de la capa es " -"inferior al umbral, la velocidad del ventilador se interpola entre la " -"velocidad mínima y máxima del ventilador según el tiempo de impresión de la " -"capa." +"La velocidad del ventilador de refrigeración de la pieza comenzará a funcionar a la " +"velocidad mínima cuando el tiempo estimado de la capa no sea superior al tiempo de la capa " +"ajustado. Cuando el tiempo de la capa es inferior al umbral, la velocidad del ventilador " +"se interpola entre la velocidad mínima y máxima del ventilador según el tiempo de " +"impresión de la capa" msgid "Max fan speed threshold" msgstr "Umbral de velocidad máxima del ventilador" msgid "" -"Part cooling fan speed will be max when the estimated layer time is shorter " -"than the setting value" +"Part cooling fan speed will be max when the estimated layer time is shorter than the " +"setting value" msgstr "" -"La velocidad del ventilador de la pieza será máxima cuando el tiempo de capa " -"estimado sea inferior al valor ajustado" +"La velocidad del ventilador de la pieza será máxima cuando el tiempo de capa estimado sea " +"inferior al valor ajustado" msgid "Auxiliary part cooling fan" msgstr "Ventilador de la parte auxiliar" @@ -5351,19 +5410,19 @@ msgid "Filament start G-code" msgstr "Código G de inicio de filamento" msgid "Filament end G-code" -msgstr "Final del Código G de filamento " +msgstr "Final del Código G de filamento" msgid "Printable space" msgstr "Espacio imprimible" msgid "Cooling Fan" -msgstr "" +msgstr "Ventilador de enfriamento" msgid "Fan speed-up time" -msgstr "" +msgstr "Tiempo de aumento de velocidad del ventilador" msgid "Extruder Clearance" -msgstr "" +msgstr "Margen del extrusor" msgid "Accessory" msgstr "Accesorio" @@ -5390,7 +5449,7 @@ msgid "Pause G-code" msgstr "Código G de pausa" msgid "Template Custom G-code" -msgstr "" +msgstr "Plantilla de G-code personalizada" msgid "Motion ability" msgstr "Capacidad de movimiento" @@ -5418,16 +5477,19 @@ msgid "" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" +"La opción Wipe no está disponible cuando se utiliza el modo Retracción de Firmware.\n" +"\n" +"Debo desactivarla para activar la retracción de firmware?" msgid "Firmware Retraction" -msgstr "" +msgstr "Retracción de firmware" msgid "Detached" msgstr "Separado" msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." -msgstr[0] "Los siguientes preajustes también se eliminarán" +msgstr[0] "El siguiente preajuste también se eliminará." msgstr[1] "Los siguientes preajustes también se eliminarán." #, boost-format @@ -5446,12 +5508,10 @@ msgid "Set" msgstr "Ajuste" msgid "Click to reset current value and attach to the global value." -msgstr "" -"Haga clic para restablecer el valor actual y adjuntarlo al valor global." +msgstr "Haga clic para restablecer el valor actual y adjuntarlo al valor global." msgid "Click to drop current modify and reset to saved value." -msgstr "" -"Haga clic para dejar la modificación actual y restablecer el valor guardado." +msgstr "Haga clic para dejar la modificación actual y restablecer el valor guardado." msgid "Process Settings" msgstr "Ajustes del proceso" @@ -5496,8 +5556,7 @@ msgid "Keep the selected options." msgstr "Mantener las opciones seleccionadas." msgid "Transfer the selected options to the newly selected preset." -msgstr "" -"Transfiere las opciones seleccionadas a la nueva preselección seleccionada." +msgstr "Transfiere las opciones seleccionadas a la nueva preselección seleccionada." #, boost-format msgid "" @@ -5521,32 +5580,36 @@ msgstr "La preselección \"%1%\" contiene los siguientes cambios no guardados:" #, 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 "" -"El preajuste \"%1%\" no es compatible con el nuevo perfil de la impresora y " -"contiene los siguientes cambios no guardados:" +"El preajuste \"%1%\" no es compatible con el nuevo perfil de la impresora y contiene los " +"siguientes cambios no guardados:" #, 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 "" -"El preajuste \"%1%\" no es compatible con el nuevo perfil de proceso y " -"contiene los siguientes cambios no guardados:" +"El preajuste \"%1%\" no es compatible con el nuevo perfil de proceso y contiene los " +"siguientes cambios no guardados:" #, 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 "" +"Has modificado algunos ajustes del perfil \"%1%\". \n" +"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después de cambiar de " +"perfil?" 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 "" +"Has cambiado algunos ajustes de perfil. \n" +"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después de cambiar de " +"perfil?" msgid "Extruders count" msgstr "Contador de extrusores" @@ -5558,13 +5621,13 @@ msgid "Capabilities" msgstr "Capacidades" msgid "Select presets to compare" -msgstr "" +msgstr "Seleccionar perfiles para comparar" msgid "Show all presets (including incompatible)" -msgstr "" +msgstr "Mostrar todos los perfiles (incluyendo los compatibles)" msgid "Add File" -msgstr "" +msgstr "Añadir archivo" msgid "Set as cover" msgstr "Ajustar como cubierta" @@ -5589,7 +5652,7 @@ msgid "Assembly Guide" msgstr "Guía de montaje" msgid "Author" -msgstr "" +msgstr "Autor" msgid "Model Name" msgstr "Nombre del modelo" @@ -5647,18 +5710,18 @@ msgid "Flushing volumes for filament change" msgstr "Volúmenes de limpieza para el cambio de filamentos" msgid "Multiplier" -msgstr "" +msgstr "Multiplicador" msgid "Flushing volume (mm³) for each filament pair." msgstr "Volumen de limpieza (mm³) para cada par de filamentos." #, c-format, boost-format msgid "Suggestion: Flushing Volume in range [%d, %d]" -msgstr "" +msgstr "Sugerencias: Volumen de Flujo en rango [%d, %d]" #, c-format, boost-format msgid "The multiplier should be in range [%.2f, %.2f]." -msgstr "" +msgstr "El multiplicador debería estar en el rango [%.2f, %.2f]." msgid "unloaded" msgstr "descargado" @@ -5679,8 +5742,7 @@ msgid "Login" msgstr "Inicio de sesión" msgid "The configuration package is changed in previous Config Guide" -msgstr "" -"El paquete de configuración se cambia en la Guía de configuración anterior" +msgstr "El paquete de configuración se cambia en la Guía de configuración anterior" msgid "Configuration package changed" msgstr "Paquete de configuración cambiado" @@ -5692,7 +5754,7 @@ msgid "Objects list" msgstr "Lista de objetos" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "" +msgstr "Importar datos de geometría de los archivos STL/STEP/3MF/OBJ/AMF" msgid "⌘+Shift+G" msgstr "" @@ -5707,7 +5769,7 @@ msgid "Paste from clipboard" msgstr "Pegar desde el portapapeles" msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "" +msgstr "Mostrar/Ocultar el diálogo de ajustes de los dispositivos 3Dconnexion" msgid "Show keyboard shortcuts list" msgstr "Muestra lista de atajos de teclado" @@ -5716,16 +5778,16 @@ msgid "Global shortcuts" msgstr "Atajos globales" msgid "Rotate View" -msgstr "" +msgstr "Rotar Vista" msgid "Pan View" -msgstr "" +msgstr "Vista Panorámica" msgid "Mouse wheel" -msgstr "" +msgstr "Rueda de ratón" msgid "Zoom View" -msgstr "" +msgstr "Vista de Zoom" msgid "Shift+A" msgstr "" @@ -5734,13 +5796,12 @@ msgid "Shift+R" 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." +"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 "" -"Orienta automáticamente los objetos seleccionados o todos los objetos.Si hay " -"objetos seleccionados, sólo orienta los seleccionados.En caso contrario, " -"orientará todos los objetos del disco actual." +"Orienta automáticamente los objetos seleccionados o todos los objetos.Si hay objetos " +"seleccionados, sólo orienta los seleccionados.En caso contrario, orientará todos los " +"objetos del disco actual." msgid "Shift+Tab" msgstr "" @@ -5755,13 +5816,13 @@ msgid "Movement in camera space" msgstr "Movimiento en el espacio de la cámara" msgid "⌥+Left mouse button" -msgstr "" +msgstr "Botón de ratón ⌥+Left" msgid "Select a part" -msgstr "" +msgstr "Seleccionar una parte" msgid "⌘+Left mouse button" -msgstr "" +msgstr "⌘+botón izquierdo de ratón" msgid "Select multiple objects" msgstr "Seleccionar varios objetos" @@ -5770,13 +5831,13 @@ msgid "Ctrl+Any arrow" msgstr "Ctrl+Cualquier flecha" msgid "Alt+Left mouse button" -msgstr "" +msgstr "Alt+Botón izquierdo de ratón" msgid "Ctrl+Left mouse button" -msgstr "" +msgstr "Ctrl+Botón izquierdo de ratón" msgid "Shift+Left mouse button" -msgstr "" +msgstr "Shift+Left+Botón izquierdo de ratón" msgid "Select objects by rectangle" msgstr "Seleccionar objetos por rectángulo" @@ -5842,28 +5903,28 @@ msgid "Select all objects" msgstr "Seleccionar todos los objetos" msgid "Gizmo move" -msgstr "" +msgstr "Movimiento Gizmo" msgid "Gizmo scale" -msgstr "" +msgstr "Escala Gizmo" msgid "Gizmo rotate" -msgstr "" +msgstr "Rotación Gizmo" msgid "Gizmo cut" -msgstr "" +msgstr "Corte Gizmo" msgid "Gizmo Place face on bed" -msgstr "" +msgstr "Situar cara en cama en modo Gizmo" msgid "Gizmo SLA support points" -msgstr "" +msgstr "Puntos de soporte SLA Gizmo" msgid "Gizmo FDM paint-on seam" -msgstr "" +msgstr "Costura de pintura Gizmo FDM" msgid "Swtich between Prepare/Prewview" -msgstr "" +msgstr "Cambiar entre Preparar/Previsualizar" msgid "Plater" msgstr "Plataforma" @@ -5878,7 +5939,7 @@ msgid "Support/Color Painting: adjust pen radius" msgstr "Soporte/Pintado en color: ajuste del radio de la pluma" msgid "⌥+Mouse wheel" -msgstr "" +msgstr "⌥+Rueda del ratón" msgid "Support/Color Painting: adjust section position" msgstr "Soporte/Pintado de color: ajuste de la posición de la sección" @@ -5902,16 +5963,13 @@ msgid "Space" msgstr "Espacio" msgid "Select the object/part and press space to change the name" -msgstr "" -"Seleccione el objeto/parte y pulse la barra espaciadora para cambiar el " -"nombre" +msgstr "Seleccione el objeto/parte y pulse la barra espaciadora para cambiar el nombre" msgid "Mouse click" msgstr "Clic del ratón" msgid "Select the object/part and mouse click to change the name" -msgstr "" -"Seleccione el objeto/pieza y haga clic con el ratón para cambiar el nombre" +msgstr "Seleccione el objeto/pieza y haga clic con el ratón para cambiar el nombre" msgid "Objects List" msgstr "Lista de Objetos" @@ -5923,125 +5981,133 @@ msgid "Vertical slider - Move active thumb Down" msgstr "Control deslizante vertical - Mover el pulgar activo hacia Abajo" msgid "Horizontal slider - Move active thumb Left" -msgstr "" -"Control deslizante horizontal - Mover el pulgar activo hacia la Izquierda" +msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Izquierda" msgid "Horizontal slider - Move active thumb Right" -msgstr "" -"Control deslizante horizontal - Mover el pulgar activo hacia la Derecha" +msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Derecha" msgid "On/Off one layer mode of the vertical slider" msgstr "Activar/Desactivar el modo de una capa del control deslizante vertical" msgid "On/Off g-code window" -msgstr "" +msgstr "Activar/Desactivar ventana de g-code" msgid "Move slider 5x faster" msgstr "Mover el deslizador 5 veces más rápido" msgid "Shift+Mouse wheel" -msgstr "" +msgstr "Shit+Rueda de ratón" msgid "Release Note" -msgstr "" +msgstr "Notas de lanzamiento" #, c-format, boost-format msgid "version %s update information :" -msgstr "" +msgstr "información de actualización de la versión %s:" msgid "Network plug-in update" -msgstr "" +msgstr "Actualizar plug-in de red" -msgid "" -"Click OK to update the Network plug-in when Orca Slicer launches next time." +msgid "Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" +"Click en Aceptar para actualizar el plug-in de red cuando Orca Slicer vuelva a iniciarse." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" -msgstr "" +msgstr "Un nuevo plug-in de red(%s) está disponible. ¿Desea instalarlo?" msgid "New version of Orca Slicer" msgstr "Nueva versión de Orca Slicer" msgid "Don't remind me of this version again" -msgstr "" +msgstr "No volver a recordarme está versión otra vez" msgid "Done" -msgstr "" +msgstr "Hecho" msgid "LAN Connection Failed (Sending print file)" +msgstr "Conexión de red fallida (Mandando archivo de impresión)" + +msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." msgstr "" +"Paso 1, por favor confirmar que Orca Slicer y tu impresora se encuentran en la misma red " +"local." msgid "" -"Step 1, please confirm Orca Slicer and your printer are in the same LAN." -msgstr "" - -msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " -"on your printer, please correct them." +"Step 2, if the IP and Access Code below are different from the actual values on your " +"printer, please correct them." msgstr "" +"Paso 2, si la IP y el Código de Acceso de abajo son diferentes de los valores actuales en " +"su impresora, por favor, corríjalos." msgid "IP" msgstr "" msgid "Access Code" -msgstr "" +msgstr "Código de Acceso" msgid "Where to find your printer's IP and Access Code?" -msgstr "" +msgstr "¿Dónde encontrar la IP de su impresora y el Código de Acceso?" msgid "Error: IP or Access Code are not correct" -msgstr "" +msgstr "Error: la IP o el Código de Acceso no son correctos" msgid "Model:" -msgstr "" +msgstr "Modelo:" msgid "Serial:" -msgstr "" +msgstr "Número de serie:" msgid "Version:" -msgstr "" +msgstr "Versión:" msgid "Update firmware" -msgstr "" +msgstr "Actualizar firmware" msgid "Printing" -msgstr "" +msgstr "Imprimendo" msgid "Idle" -msgstr "" +msgstr "Inactivo" msgid "Latest version" -msgstr "" +msgstr "Última versión" msgid "Updating" -msgstr "" +msgstr "Actualizando" msgid "Updating failed" -msgstr "" +msgstr "Fallo Actualizando" msgid "Updating successful" -msgstr "" +msgstr "Actualización exitosa" 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 "" +"¿Estás seguro que deseas actualizar? Esto puede llevar sobre 10 minutos. No apague " +"mientras la impresora está actualizando." 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 "" +"Una actualización importante fue detectada y necesita ejecutarse antes de que la impresión " +"pueda continuar. ¿Quiere actualizar ahora? Puede actualizar después desde \"Actualizar " +"fimware\"." 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 "" +"La versión de firmware es anormal. Es necesario reparar y actualizar antes de imprimir. " +"¿Quieres actualizar ahora? Puedes actualizar al iniciar en el siguiente arranque de la " +"impresora o cuando arranque Orca Slicer." msgid "Extension Board" -msgstr "" +msgstr "Cama de ampliación" msgid "Saving objects into the 3mf failed." msgstr "El guardado de objetos en el 3mf no ha funcionado." @@ -6097,8 +6163,7 @@ msgstr "La copia del archivo %1% a %2% falló: %3%" msgid "Need to check the unsaved changes before configuration updates." msgstr "" -"Es necesario comprobar los cambios no guardados antes de actualizar la " -"configuración." +"Es necesario comprobar los cambios no guardados antes de actualizar la configuración." msgid "Configuration package updated to " msgstr "Paquete de configuración actualizado a " @@ -6107,11 +6172,11 @@ msgid "Open G-code file:" msgstr "Abrir archivo código G:" msgid "" -"One object has empty initial layer and can't be printed. Please Cut the " -"bottom or enable supports." +"One object has empty initial layer and can't be printed. Please Cut the bottom or enable " +"supports." msgstr "" -"Un objeto tiene la capa inicial vacía y no se puede imprimir. Por favor, " -"corte el fondo o habilite los soportes." +"Un objeto tiene la capa inicial vacía y no se puede imprimir. Por favor, corte el fondo o " +"habilite los soportes." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." @@ -6121,12 +6186,10 @@ msgstr "No se puede imprimir el objeto para la capa vacía entre %1% y %2%." msgid "Object: %1%" msgstr "Objeto: %1%" -msgid "" -"Maybe parts of the object at these height are too thin, or the object has " -"faulty mesh" +msgid "Maybe parts of the object at these height are too thin, or the object has faulty mesh" msgstr "" -"Tal vez las partes del objeto a esa altura son demasiado finas, o el objeto " -"tiene una malla defectuosa" +"Tal vez las partes del objeto a esa altura son demasiado finas, o el objeto tiene una " +"malla defectuosa" msgid "No object can be printed. Maybe too small" msgstr "No se puede imprimir ningún objeto. Tal vez sea demasiado pequeño" @@ -6135,14 +6198,13 @@ msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" msgstr "" -"Ha fallado la generación del código G por un código G personalizado no " -"válido.\n" +"Ha fallado la generación del código G por un código G personalizado no válido.\n" "\n" msgid "Please check the custom G-code or use the default custom G-code." msgstr "" -"Por favor, compruebe el código G personalizado o utilice el código G " -"personalizado por defecto." +"Por favor, compruebe el código G personalizado o utilice el código G personalizado por " +"defecto." #, boost-format msgid "Generating G-code: layer %1%" @@ -6187,8 +6249,7 @@ msgstr "Múltiple" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" -"Ha fallado el cálculo del ancho de línea de %1%. No se puede obtener el " -"valor de \"%2%\". " +"Ha fallado el cálculo del ancho de línea de %1%. No se puede obtener el valor de \"%2%\". " msgid "undefined error" msgstr "error no definido" @@ -6281,12 +6342,12 @@ msgid "validation failed" msgstr "validación fallida" msgid "write callback failed" -msgstr "La llamada de recuperación de la escritura ha fallado" +msgstr "la llamada de recuperación de la escritura ha fallado" #, boost-format -msgid "" -"%1% is too close to exclusion area, there may be collisions when printing." +msgid "%1% is too close to exclusion area, there may be collisions when printing." msgstr "" +"%1% está muy cerca del área de exclusión, puede conllevar colisiones cuando se imprime." #, boost-format msgid "%1% is too close to others, and collisions may be caused." @@ -6297,90 +6358,76 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% es demasiado alto, y se producirán colisiones." msgid " is too close to others, there may be collisions when printing." -msgstr "" +msgstr " está muy cerca de otros, puede conllevar colisiones cuando se imprime." msgid " is too close to exclusion area, there may be collisions when printing." -msgstr "" +msgstr " está muy cerca del área de exclusión, puede conllevar colisiones cuando se imprime." msgid "Prime Tower" -msgstr "Torre principal" +msgstr "Torre de Purga" msgid " is too close to others, and collisions may be caused.\n" -msgstr "está demasiado cerca de otros, y se pueden producir colisiones.\n" +msgstr " está demasiado cerca de otros, y se pueden producir colisiones.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr "" -" está demasiado cerca del área de exclusión, y se producirán colisiones.\n" +msgstr " está demasiado cerca del área de exclusión, y se producirán colisiones.\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 "" -"No se pueden imprimir juntos varios filamentos que tengan una gran " -"diferencia de temperatura. De lo contrario, el extrusor y la boquilla pueden " -"bloquearse o dañarse durante la impresión" +"No se pueden imprimir juntos varios filamentos que tengan una gran diferencia de " +"temperatura. De lo contrario, el extrusor y la boquilla pueden bloquearse o dañarse " +"durante la impresión" msgid "No extrusions under current settings." msgstr "No hay extrusiones con los ajustes actuales." -msgid "" -"Smooth mode of timelapse is not supported when \"by object\" sequence is " -"enabled." +msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "" +"Modo de intervalo suave no está soportado cuando la secuencia \"por objeto\" está activada." msgid "" -"Please select \"By object\" print sequence to print multiple objects in " -"spiral vase mode." +"Please select \"By object\" print sequence to print multiple objects in spiral vase mode." msgstr "" -"Seleccione la secuencia de impresión \"Por objeto\" para imprimir varios " -"objetos en el modo de jarrón espiral." +"Seleccione la secuencia de impresión \"Por objeto\" para imprimir varios objetos en el " +"modo de jarrón espiral." -msgid "" -"The spiral vase mode does not work when an object contains more than one " -"materials." +msgid "The spiral vase mode does not work when an object contains more than one materials." msgstr "" -"El modo de jarrón en espiral no funciona cuando un objeto contiene más de un " -"material." +"El modo de jarrón en espiral no funciona cuando un objeto contiene más de un material." msgid "The prime tower is not supported in \"By object\" print." -msgstr "La torre principal no es compatible con la impresión \"Por objeto\"." +msgstr "La torre de purga no es compatible con la impresión \"Por objeto\"." 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 "" -"La torre principal no es compatible cuando la altura de capa adaptativa está " -"activada. Requiere que todos los objetos tengan la misma altura de capa." +"La torre de purga no es compatible cuando la altura de capa adaptativa está activada. " +"Requiere que todos los objetos tengan la misma altura de capa." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" -"La torre principal requiere que el \"hueco de apoyo\" sea múltiplo de la " -"altura de la capa" +"La torre de purga requiere que el \"hueco de apoyo\" sea múltiplo de la altura de la capa" msgid "The prime tower requires that all objects have the same layer heights" -msgstr "" -"La torre principal requiere que todos los objetos tengan la misma altura de " -"capa" +msgstr "La torre de purga requiere que todos los objetos tengan la misma altura de capa" msgid "" -"The prime tower requires that all objects are printed over the same number " -"of raft layers" +"The prime tower requires that all objects are printed over the same number of raft layers" msgstr "" -"La torre principal requiere que todos los objetos se impriman sobre el mismo " -"número de capas de balsa" +"La torre de purga requiere que todos los objetos se impriman sobre el mismo número de " +"capas de base de impresión" -msgid "" -"The prime tower requires that all objects are sliced with the same layer " -"heights." +msgid "The prime tower requires that all objects are sliced with the same layer heights." msgstr "" -"La torre principal requiere que todos los objetos se corten con las mismas " -"alturas de capa." +"La torre de purga requiere que todos los objetos se corten con las mismas alturas de capa." -msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" +msgid "The prime tower is only supported if all objects have the same variable layer height" msgstr "" +"La torre de purga sólo se admite si todos los objetos tienen la misma altura de capa " +"variable" msgid "Too small line width" msgstr "Ancho de línea demasiado pequeño" @@ -6388,27 +6435,24 @@ msgstr "Ancho de línea demasiado pequeño" msgid "Too large line width" msgstr "Ancho de línea demasiado grande" -msgid "" -"The prime tower requires that support has the same layer height with object." +msgid "The prime tower requires that support has the same layer height with object." msgstr "" -"La torre principal requiere que el soporte tenga la misma altura de capa con " -"el objeto." +"La torre de purga requiere que el soporte tenga la misma altura de capa con el objeto." -msgid "" -"Support enforcers are used but support is not enabled. Please enable support." +msgid "Support enforcers are used but support is not enabled. Please enable support." msgstr "" -"Se utilizan las herramientas de aplicación de soporte pero el soporte no " -"está habilitado. Por favor, active el soporte." +"Se utilizan las herramientas de aplicación de soporte pero el soporte no está habilitado. " +"Por favor, active el soporte." msgid "Layer height cannot exceed nozzle diameter" msgstr "La altura de la capa no puede superar el diámetro de la boquilla" #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" -msgstr "" +msgstr "Cama %d: %s no soporta filamento %s" msgid "Generating skirt & brim" -msgstr "Generando falda y ala" +msgstr "Generando falda y borde de adherencia" msgid "Exporting G-code" msgstr "Exportando código G" @@ -6426,33 +6470,34 @@ msgid "Bed exclude area" msgstr "La cama excluye el área" 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 "" +"Área no imprimible en el plano XY. Por ejemplo, las impresoras de la serie X1 utilizan la " +"esquina delantera izquierda para cortar el filamento durante el cambio de filamento. El " +"área se expresa como polígono por puntos en el siguiente formato: \"XxY, XxY, ...\"" msgid "Bed custom texture" -msgstr "" +msgstr "Textura personalizada de cama" msgid "Bed custom model" -msgstr "" +msgstr "Modelo personalizado de cama" msgid "Elephant foot compensation" msgstr "Compensación del pie de elefante" -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 "" -"Contraer la capa inicial en la placa de impresión para compensar el efecto " -"de la pata de elefante" +"Contraer la capa inicial en la cama de impresión para compensar el efecto de la pata de " +"elefante" msgid "" -"Slicing height for each layer. Smaller layer height means more accurate and " -"more printing time" +"Slicing height for each layer. Smaller layer height means more accurate and more printing " +"time" msgstr "" -"Altura de corte para cada capa. Una altura de capa más pequeña significa más " -"precisión y más tiempo de impresión" +"Altura de corte para cada capa. Una altura de capa más pequeña significa más precisión y " +"más tiempo de impresión" msgid "Printable height" msgstr "Altura imprimible" @@ -6464,125 +6509,135 @@ msgid "Printer preset names" msgstr "Nombres de ajustes de la impresora" msgid "Hostname, IP or URL" -msgstr "" +msgstr "Nombre de host, IP o 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 "" +"OrcaSlicer puede subir archivos G-Code a una impresora. Este campo debería contener el " +"nombre de host, la dirección IP o la URL de la instancia de la impresora. Se puede acceder " +"a la impresora detrás de un proxy con la autenticación básica activada por un nombre de " +"usuario y contraseña en la URL en el siguiente formato: https://nombredeusuario:" +"contraseña@tudirecciondeoctopi/" msgid "Device UI" -msgstr "" +msgstr "IU de dispositivo" -msgid "" -"Specify the URL of your device user interface if it's not same as print_host" -msgstr "" +msgid "Specify the URL of your device user interface if it's not same as print_host" +msgstr "Especifica la URL de tu IU de dispositivo si no es el mismo que el host de impresión" msgid "API Key / Password" -msgstr "" +msgstr "Clave API / Contraseña" 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 "" +"OrcaSlicer puede cargar archivos G-Cpde a un host de impresora. Este campo debería " +"contener una clave API o una contraseña requerida para la autenticación." msgid "Name of the printer" -msgstr "" +msgstr "Nombre de la impresora" msgid "HTTPS CA File" -msgstr "" +msgstr "Archivo CA 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." +"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 "" +"Es posible especificar un archivo Certificado CA personalizado para conexiones, en formato " +"crt/pem. Si se deja en blanco, se usará el reposittorio de certificados CA del SO." msgid "User" -msgstr "" +msgstr "Usuario" msgid "Password" -msgstr "" +msgstr "Contraseña" msgid "Ignore HTTPS certificate revocation checks" -msgstr "" +msgstr "Ignorar comprobaciones de revocación de certificado 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." +"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 "" +"Ignorar comprobaciones de certificado de revocación HTTPS en caso de perder o puntos de " +"distribución sin conexión. Se debería activar esta opción de certificados autofirmados si " +"la conexión falla." msgid "Names of presets related to the physical printer" -msgstr "" +msgstr "Nombres de preajustes relacionados por la impresora física" msgid "Authorization Type" -msgstr "" +msgstr "Tipo de autorización" msgid "API key" -msgstr "" +msgstr "Clave API" msgid "HTTP digest" -msgstr "" +msgstr "Resumen HTTP" msgid "Avoid crossing wall" -msgstr "" +msgstr "Evitar cruzar pared" msgid "Detour and avoid to travel across wall which may cause blob on surface" msgstr "" -"Desvíese y evite atravesar el muro, ya que puede provocar una mancha en la " -"superficie" +"Desvíese y evite atravesar el pared, ya que puede provocar una mancha en la superficie" msgid "Avoid crossing wall - Max detour length" -msgstr "" +msgstr "Evitar cruzar pared - Longitud de desvío máximo" 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 "" +"Distancia de desvio máximo para evitar cruzar el pared. No lo evite si la distancia de " +"desvío es más alta que este valor. La distancia de desvío podría tanto como un valor " +"absoluto como pocentaje (por ejemplo 50%) de una trayectoria de viaje directa. Cero para " +"deshabilitar" msgid "mm or %" -msgstr "" +msgstr "mm o %" msgid "Other layers" msgstr "Otras capas" 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 "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa " -"fría." +"Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 " +"significa que el filamento no admite la impresión en la cama fría" 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 "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa de " -"ingeniería." +"Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 " +"significa que el filamento no admite la impresión en la cama de ingeniería" 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 "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa de " -"alta temperatura." +"Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 " +"significa que el filamento no admite la impresión en la cama de alta temperatura" 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 "" +"Temperatura de cama para las capas excepto la inicial. El valor 0 significa que el " +"filamento no es compatible para imprimir en la cama PEI texturizada" msgid "Initial layer" msgstr "Capa inicial" @@ -6591,31 +6646,32 @@ msgid "Initial layer bed temperature" msgstr "Temperatura inicial de la cama en la capa" 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 "" -"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 " -"significa que el filamento no admite la impresión en la placa fría." +"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 significa que el " +"filamento no admite la impresión en la cama fría" 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 "" -"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 " -"significa que el filamento no admite la impresión en la placa de ingeniería." +"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 significa que el " +"filamento no admite la impresión en la cama de ingeniería" 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 "" -"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 " -"significa que el filamento no admite la impresión en la placa de alta " -"temperatura." +"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 significa que el " +"filamento no admite la impresión en la cama de alta temperatura" 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 "" +"Temperatura del lecho de la capa inicial. El valor 0 significa que el filamento no es " +"compatible para imprimir en la cama PEI texturizada" msgid "Bed types supported by the printer" msgstr "Tipos de cama que admite la impresora" @@ -6627,188 +6683,193 @@ msgid "Bottom shell layers" msgstr "Capas inferiores de cubierta" 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 "" -"Es el número de capas sólidas de la carcasa inferior, incluida la capa " -"superficial inferior. Si el grosor calculado por este valor es menor que el " -"grosor del armazón inferior, las capas del armazón inferior se incrementarán" +"Es el número de capas sólidas de la carcasa inferior, incluida la capa superficial " +"inferior. Si el grosor calculado por este valor es menor que el grosor del armazón " +"inferior, las capas del armazón inferior se incrementarán" msgid "Bottom shell thickness" msgstr "Espesor de la carcasa inferior" 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 "" -"El número de capas sólidas del fondo se incrementa al cortar si el grosor " -"calculado por las capas del fondo es más fino que este valor. Esto puede " -"evitar tener una capa demasiado fina cuando la altura de la capa es pequeña. " -"0 significa que este ajuste está desactivado y el grosor de la capa inferior " -"está absolutamente determinado por las capas de la capa inferior." +"El número de capas sólidas del fondo se incrementa al cortar si el grosor calculado por " +"las capas del fondo es más fino que este valor. Esto puede evitar tener una capa demasiado " +"fina cuando la altura de la capa es pequeña. 0 significa que este ajuste está desactivado " +"y el grosor de la capa inferior está absolutamente determinado por las capas de la capa " +"inferior" msgid "Force cooling for overhang and bridge" msgstr "Refrigeración forzada para el voladizo y el puente" msgid "" -"Enable this option to optimize part cooling fan speed for overhang and " -"bridge to get better cooling" +"Enable this option to optimize part cooling fan speed for overhang and bridge to get " +"better cooling" msgstr "" -"Habilite esta opción para optimizar la velocidad del ventilador de " -"refrigeración de la pieza para el voladizo y el puente para obtener una " -"mejor refrigeración" +"Habilite esta opción para optimizar la velocidad del ventilador de refrigeración de la " +"pieza para el voladizo y el puente para obtener una mejor refrigeración" msgid "Fan speed for overhang" msgstr "Velocidad del ventilador para el voladizo" 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 "" -"Forzar el ventilador de la pieza a esta velocidad cuando se imprime el " -"puente o la pared del voladizo que tiene un gran grado de voladizo. Al " -"forzar la refrigeración de los voladizos y puentes se puede obtener una " -"mejor calidad para estas piezas." +"Forzar el ventilador de la pieza a esta velocidad cuando se imprime el puente o la pared " +"del voladizo que tiene un gran grado de voladizo. Al forzar la refrigeración de los " +"voladizos y puentes se puede obtener una mejor calidad para estas piezas" msgid "Cooling overhang threshold" msgstr "Umbral del voladizo de refrigeración" #, 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 "" +"Fuerza al ventilador de refrigeración a una velocidad específica cuando el grado de " +"voladizo de la pieza impresa excede este valor. Expresado como porcentaje, indica la " +"anchura de la línea sin soporte de la capa inferior. 0% m significa forzar la " +"refrigeración de toda la pared exterior sin importar el grado de voladizo" msgid "Bridge infill direction" -msgstr "" +msgstr "Dirección de relleno de puente" 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 "" +"Anulación del ángulo de puenteo. Si se deja a cero, el ángulo de puente se calculará " +"automáticamente. De lo contrario, se utilizará el ángulo proporcionado para los puentes " +"externos. Utilice 180° para el ángulo cero." msgid "Bridge density" -msgstr "" +msgstr "Densidad de puente" msgid "Density of external bridges. 100% means solid bridge. Default is 100%." -msgstr "" +msgstr "Densidad de puentes externos. 100% significa puente sólido. Por defecto es 100%." msgid "Bridge flow" msgstr "Flujo del puente" 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 "" -"Disminuya este valor ligeramente (por ejemplo 0,9) para reducir la cantidad " -"de material para el puente, para mejorar el hundimiento" +"Disminuya este valor ligeramente (por ejemplo 0,9) para reducir la cantidad de material " +"para el puente, para mejorar el hundimiento" msgid "Top surface flow ratio" -msgstr "" +msgstr "Ratio de flujo de superficie superior" 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 "" +"Este factor afecta a la cantidad de material de para relleno sólido superior. Puede " +"disminuirlo ligeramente para obtener un acabado suave de superficie" msgid "Bottom surface flow ratio" -msgstr "" +msgstr "Ratio de flujo de superficie inferior" msgid "This factor affects the amount of material for bottom solid infill" -msgstr "" +msgstr "Este factor afecta a la cantidad de material para el relleno sólido inferior" msgid "Precise wall(experimental)" -msgstr "" +msgstr "Muro preciso(experimental)" msgid "" -"Improve shell precision by adjusting outer wall spacing. This also improves " -"layer consistency." +"Improve shell precision by adjusting outer wall spacing. This also improves layer " +"consistency." msgstr "" +"Mejorar precisión de la carcasa ajustando el espaciado del pared exterior. Esto además " +"mejora la consistencia de capa." msgid "Only one wall on top surfaces" msgstr "Sólo una pared en las superficies superiores" -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 "" -"Sólo una pared en la superficies superiores, para dar más espacio a la placa " -"de relleno superior" +"Sólo una pared en la superficies superiores, para dar más espacio al patrónde relleno " +"superior" msgid "Only one wall on first layer" -msgstr "" +msgstr "Solo un pared en la primera capa" -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 "" +"Usar solo un pared en la primera capa, para dar más espacio en el patrón de relleno " +"inferior" msgid "Classic mode" -msgstr "" +msgstr "Modo clásico" msgid "Enable this option to use classic mode" -msgstr "" +msgstr "Activar esta opción para usar el modo clásico" msgid "Slow down for overhang" msgstr "Disminución de velocidad de voladizo" msgid "Enable this option to slow printing down for different overhang degree" -msgstr "" -"Habilite esta opción para ralentizar la impresión para diferentes grados de " -"voladizo" +msgstr "Habilite esta opción para ralentizar la impresión para diferentes grados de voladizo" msgid "mm/s" msgstr "mm/s" msgid "Speed of bridge and completely overhang wall" -msgstr "Velocidad del puente y muro completo en voladizo" +msgstr "Velocidad del puente y pared completo en voladizo" msgid "Brim width" -msgstr "Ancho de la balsa" +msgstr "Ancho de del borde de adherencia" msgid "Distance from model to the outermost brim line" -msgstr "Distancia del modelo a la línea más externa del borde" +msgstr "Distancia del modelo a la línea más externa del borde de adherencia" msgid "Brim type" -msgstr "Tipo de balsa" +msgstr "Tipo de borde de adherencia" 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 "" +"Esto controla la generación del borde de adherencia en el lado exterior y/o interior de " +"los modelos. Auto significa que el ancho de borde de adherencia es analizado y calculado " +"automaticamente." msgid "outer_only" -msgstr "" +msgstr "exterior_solo" msgid "Inner brim only" -msgstr "" +msgstr "Solo borde de adherencia interior" msgid "Outer and inner brim" -msgstr "" +msgstr "Borde de adherencia exterior e interior" msgid "Brim-object gap" -msgstr "Espacio borde-objeto" +msgstr "Espacio borde de adherencia-objeto" -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 "" -"Un hueco entre la línea más interna del borde y el objeto puede hacer que el " -"borde se retire más fácilmente" +"Un hueco entre la línea más interna del borde de adherencia y el objeto puede hacer que el " +"borde de adherencia se retire más fácilmente" msgid "Compatible machine" msgstr "Máquina compatible" msgid "upward compatible machine" -msgstr "" +msgstr "máquina compatible ascendente" msgid "Compatible machine condition" msgstr "Condición de máquina compatible" @@ -6829,30 +6890,25 @@ msgid "By object" msgstr "Por objeto" msgid "Slow printing down for better layer cooling" -msgstr "" -"Reducir la velocidad de impresión para mejorar el enfriamiento de las capas" +msgstr "Reducir la velocidad de impresión para mejorar el enfriamiento de las capas" 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 "" -"Active esta opción para reducir la velocidad de impresión para que el tiempo " -"de la capa final no sea inferior al umbral de tiempo de la capa en \"Umbral " -"de velocidad máxima del ventilador\", de modo que la capa pueda enfriarse " -"durante más tiempo. Esto puede mejorar la calidad del enfriamiento para las " -"agujas y los detalles pequeños." +"Active esta opción para reducir la velocidad de impresión para que el tiempo de la capa " +"final no sea inferior al umbral de tiempo de la capa en \"Umbral de velocidad máxima del " +"ventilador\", de modo que la capa pueda enfriarse durante más tiempo. Esto puede mejorar " +"la calidad del enfriamiento para las agujas y los detalles pequeños" msgid "Normal printing" msgstr "Impresión normal" -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 "" -"La aceleración por defecto tanto de la impresión normal como del " -"desplazamiento excepto la capa inicial" +"La aceleración por defecto tanto de la impresión normal como del desplazamiento excepto la " +"capa inicial" msgid "mm/s²" msgstr "mm/s²" @@ -6861,26 +6917,23 @@ msgid "Default filament profile" msgstr "Perfil de filamento por defecto" msgid "Default filament profile when switch to this machine profile" -msgstr "" -"Perfil de filamento por defecto cuando se cambia a este perfil de máquina" +msgstr "Perfil de filamento por defecto cuando se cambia a este perfil de máquina" msgid "Default process profile" msgstr "Perfil de proceso por defecto" 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" +msgstr "Perfil de proceso por defecto cuando se cambia a este perfil de máquina" msgid "No cooling for the first" msgstr "No hay refrigeración para la primera" 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 "" -"Apague todos los ventiladores de refrigeración de las primeras capas. El " -"ventilador de la primera capa debe estar cerrado para conseguir una mejor " -"adhesión de la placa de impresión." +"Apague todos los ventiladores de refrigeración de las primeras capas. El ventilador de la " +"primera capa debe estar cerrado para conseguir una mejor adhesión de la cama de impresión" msgid "layers" msgstr "capas" @@ -6889,32 +6942,33 @@ msgid "Don't support bridges" msgstr "No soportar puentes" 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 "" -"No apoye todo el área del puente que hace el apoyo muy grande. El puente " -"normalmente puede imprimirse directamente sin soporte si no es muy largo" +"No apoye todo el área del puente que hace el apoyo muy grande. El puente normalmente puede " +"imprimirse directamente sin soporte si no es muy largo" msgid "Thick bridges" -msgstr "" +msgstr "Puentes gruesos" 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 "" +"Si están activados, los puentes son más fiables, pueden salvar distancias más largas, pero " +"pueden tener peor aspecto. Si están desactivados, los puentes se ven mejor pero son " +"fiables sólo para distancias más cortas." msgid "Max bridge length" msgstr "Distancia máxima de puentes" 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 "" -"Esta es la longitud máxima de los puentes que no necesitan soporte. Ajústalo " -"a 0 si quieres que todos los puentes sean soportados, y ajústalo a un valor " -"muy grande si no quieres que ningún puente sea soportado." +"Esta es la longitud máxima de los puentes que no necesitan soporte. Ajústalo a 0 si " +"quieres que todos los puentes sean soportados, y ajústalo a un valor muy grande si no " +"quieres que ningún puente sea soportado." msgid "End G-code" msgstr "Código G final" @@ -6926,23 +6980,28 @@ msgid "End G-code when finish the printing of this filament" msgstr "Terminar el código G cuando se termine de imprimir este filamento" msgid "Ensure vertical shell thickness" -msgstr "" +msgstr "Asegurar grosor de carcasa vertical" 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 "" +"Añadir relleno sólido al lado de superficies inclinadas para garantizar el grosor de " +"carcasa vertical (capas sólidas superior+inferior)" msgid "Internal bridge support thickness" -msgstr "" +msgstr "Grosor de soportes de puente interno" msgid "" -"If enabled, Studio will generate support loops 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" +"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 escasa es " +"baja. 0 significa deshabilitar esta característica" msgid "Top surface pattern" msgstr "Patrón de la superficie superior" @@ -6963,62 +7022,61 @@ msgid "Monotonic line" msgstr "Linea continua" msgid "Aligned Rectilinear" -msgstr "" +msgstr "Alineación Rectilinea" msgid "Hilbert Curve" -msgstr "" +msgstr "Curva Hilbert" msgid "Archimedean Chords" -msgstr "" +msgstr "Arcodes de Arquímedes" msgid "Octagram Spiral" -msgstr "" +msgstr "Octograma en Espiral" msgid "Bottom surface pattern" msgstr "Patrón de la superficie inferior" msgid "Line pattern of bottom surface infill, not bridge infill" -msgstr "" -"Patrón de líneas del relleno de la superficie inferior, no del relleno del " -"puente" +msgstr "Patrón de líneas del relleno de la superficie inferior, no del relleno del puente" msgid "Line width of outer wall" msgstr "Ancho de línea de la pared exterior" msgid "" -"Speed of outer wall which is outermost and visible. It's used to be slower " -"than inner wall speed to get better quality." +"Speed of outer wall which is outermost and visible. It's used to be slower than inner wall " +"speed to get better quality." msgstr "" -"Velocidad de la pared exterior, que es la más externa y visible. Se utiliza " -"para ser más lento que la velocidad de la pared interior para obtener una " -"mejor calidad." +"Velocidad de la pared exterior, que es la más externa y visible. Se utiliza para ser más " +"lento que la velocidad de la pared interior para obtener una mejor calidad." msgid "Small perimeters" -msgstr "" +msgstr "Perímetros pequeños" msgid "" "This separate setting will affect the speed of perimeters having radius <= " -"small_perimeter_threshold (usually holes). If expressed as percentage (for " -"example: 80%) it will be calculated on the outer wall speed setting above. " -"Set to zero for auto." +"small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) " +"it will be calculated on the outer wall speed setting above. Set to zero for auto." msgstr "" +"Este ajuste independiente afectará a la velocidad de los perímetros con radio <= " +"small_perimeter_threshold (normalmente agujeros). Si se expresa como porcentaje (por " +"ejemplo: 80%) se calculará sobre el ajuste de velocidad de la pared exterior anterior. " +"Póngalo a cero para auto." msgid "mm/s or %" -msgstr "" +msgstr "mm/s o %" msgid "Small perimeters threshold" -msgstr "" +msgstr "Umbral Perímetral Pequeño" -msgid "" -"This sets the threshold for small perimeter length. Default threshold is 0mm" +msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" msgstr "" +"Esto configura el umbral para longitud de perímetro pequeño. El umbral por defecto es 0mm" msgid "Order of inner wall/outer wall/infil" msgstr "Orden de la pared interior/pared exterior/relleno" msgid "Print sequence of inner wall, outer wall and infill. " -msgstr "" -"Imprimir la secuencia de la pared interior, la pared exterior y el relleno. " +msgstr "Imprimir la secuencia de la pared interior, la pared exterior y el relleno. " msgid "inner/outer/infill" msgstr "interior/exterior/relleno" @@ -7033,28 +7091,31 @@ msgid "infill/outer/inner" msgstr "relleno/exterior/interior" msgid "inner-outer-inner/infill" -msgstr "" +msgstr "interior-exterior-interior/relleno" msgid "Height to rod" msgstr "Altura a la barra" msgid "" -"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " -"by-object printing." +"Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-object " +"printing." msgstr "" +"Distancia de la punta de la boquilla hasta la varilla baja. Usado para evitar colisiones " +"en las impresiones por objeto." msgid "Height to lid" msgstr "Altura hasta la tapa" msgid "" -"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" -"object printing." +"Distance of the nozzle tip to the lid. Used for collision avoidance in by-object printing." msgstr "" +"Distancia de la punta de la boquilla a la tapa. Usado para evitar la colisión con la " +"impresión por objeto." -msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +msgid "Clearance radius around extruder. Used for collision avoidance in by-object printing." msgstr "" +"El radio de claridad alrededor del extrusor. Se utiliza para evitar la colisión con la " +"impresión por objeto." msgid "Extruder Color" msgstr "Color del extrusor" @@ -7069,29 +7130,27 @@ msgid "Flow ratio" msgstr "Proporción de flujo" 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 "" -"El material puede tener un cambio volumétrico después de cambiar entre el " -"estado fundido y el estado cristalino. Este ajuste cambia proporcionalmente " -"todo el flujo de extrusión de este filamento en gcode. El rango de valores " -"recomendado es entre 0.95 y 1.05. Tal vez usted puede ajustar este valor " -"para obtener una superficie plana agradable cuando hay un ligero " -"desbordamiento o sub-desbordamiento" +"El material puede tener un cambio volumétrico después de cambiar entre el estado fundido y " +"el estado cristalino. Este ajuste cambia proporcionalmente todo el flujo de extrusión de " +"este filamento en gcode. El rango de valores recomendado es entre 0.95 y 1.05. Tal vez " +"usted puede ajustar este valor para obtener una superficie plana agradable cuando hay un " +"ligero desbordamiento o sub-desbordamiento" msgid "Enable pressure advance" -msgstr "" +msgstr "Activar avance de presión" -msgid "" -"Enable pressure advance, auto calibration result will be overwriten once " -"enabled." +msgid "Enable pressure advance, auto calibration result will be overwriten once enabled." msgstr "" +"Activar avance de presión, resultado de auto calibración se sobreescribirá una vez " +"activado." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" -msgstr "" +msgstr "El avance de presión(Klipper) AKA Factor de avance lineal(Marlin)" msgid "Default line width if some line width is set to be zero" msgstr "Ancho de línea por defecto si se ajusta algún ancho de línea es cero" @@ -7100,99 +7159,112 @@ msgid "Keep fan always on" msgstr "Mantener el ventilador siempre encendido" 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 "" -"Si se activa este ajuste, el ventilador nunca se detendrá y funcionará al " -"menos a la velocidad mínima para reducir la frecuencia de arranque y parada." +"Si se activa este ajuste, el ventilador nunca se detendrá y funcionará al menos a la " +"velocidad mínima para reducir la frecuencia de arranque y parada" msgid "Layer time" msgstr "Tiempo de capa" 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 "" -"El ventilador de refrigeración de la pieza se activará para las capas cuyo " -"tiempo estimado sea inferior a este valor. La velocidad del ventilador se " -"interpola entre las velocidades mínima y máxima del ventilador según el " -"tiempo de impresión de las capas" +"El ventilador de refrigeración de la pieza se activará para las capas cuyo tiempo estimado " +"sea inferior a este valor. La velocidad del ventilador se interpola entre las velocidades " +"mínima y máxima del ventilador según el tiempo de impresión de las capas" msgid "s" msgstr "s" msgid "Default color" -msgstr "" +msgstr "Color por defecto" msgid "Default filament color" -msgstr "" +msgstr "Color de filamento por defecto" msgid "Color" msgstr "Color" msgid "Required nozzle HRC" -msgstr "" +msgstr "HRC de boquilla requerido" msgid "" -"Minimum HRC of nozzle required to print the filament. Zero means no checking " -"of nozzle's HRC." +"Minimum HRC of nozzle required to print the filament. Zero means no checking of nozzle's " +"HRC." msgstr "" +"HRC mínimo de boquilla requerido para imprimir el filamento. Cero significa no comprobar " +"el HRC de la boquilla." 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 "" +"Este ajuste representa la cantidad de volumen de filamento puede ser derretido extruido " +"por segundo. La velocidad de impresión está limitado por cuanta velocidad, en caso de " +"velocidad demasiado alta o no razonable. No puede ser cero" msgid "mm³/s" msgstr "mm³/s" msgid "Minimal purge on wipe tower" -msgstr "Purga mínima en la torre de limpieza" +msgstr "Purga mínima en la torre de purga" 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 "" +"Tras un cambio de herramienta, es posible que no se conozca la posición exacta del " +"filamento recién cargado dentro de la boquilla y que la presión del filamento aún no sea " +"estable. Antes de purgar el cabezal de impresión en un relleno o un objeto de sacrificio, " +"OrcaSlicer siempre cebará esta cantidad de material en la torre de purga para producir " +"sucesivas extrusiones de relleno u objetos de sacrificio de forma fiable." msgid "Filament load time" msgstr "Tiempo de carga de filamento" msgid "Time to load new filament when switch filament. For statistics only" msgstr "" -"Tiempo para cargar un nuevo filamento cuando se cambia de filamento. Sólo " -"para estadísticas" +"Tiempo para cargar un nuevo filamento cuando se cambia de filamento. Sólo para estadísticas" msgid "Filament unload time" msgstr "Tiempo de descarga del filamento" msgid "Time to unload old filament when switch filament. For statistics only" msgstr "" -"Tiempo para descargar el filamento viejo cuando se cambia de filamento. Sólo " -"para las estadísticas" +"Tiempo para descargar el filamento viejo cuando se cambia de filamento. Sólo para las " +"estadísticas" msgid "" -"Filament diameter is used to calculate extrusion in gcode, so it's important " -"and should be accurate" +"Filament diameter is used to calculate extrusion in gcode, so it's important and should be " +"accurate" msgstr "" -"El diámetro del filamento se utiliza para calcular la extrusión en el gcode, " -"por lo que es importante y debe ser preciso" +"El diámetro del filamento se utiliza para calcular la extrusión en el gcode, por lo que es " +"importante y debe ser preciso" msgid "Shrinkage" -msgstr "" +msgstr "Retracción" #, 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 "" +"Introduzca el porcentaje de encogimiento que tendrá el filamento después de enfriarse " +"('94% i' si mide 94mm en lugar de 100mm). La pieza se escalará en xy para compensar. Sólo " +"se tiene en cuenta el filamento utilizado para el perímetro.\n" +"Asegúrese de dejar suficiente espacio entre los objetos, ya que esta compensación se " +"realiza después de las comprobaciones." msgid "Density" msgstr "Densidad" @@ -7209,30 +7281,28 @@ msgstr "El tipo de material del filamento" msgid "Soluble material" msgstr "Material soluble" -msgid "" -"Soluble material is commonly used to print support and support interface" +msgid "Soluble material is commonly used to print support and support interface" msgstr "" -"El material soluble se utiliza habitualmente para imprimir el soporte y la " -"interfaz de soporte" +"El material soluble se utiliza habitualmente para imprimir el soporte y la interfaz de " +"soporte" msgid "Support material" msgstr "Material de soporte" -msgid "" -"Support material is commonly used to print support and support interface" +msgid "Support material is commonly used to print support and support interface" msgstr "" -"El material de soporte se utiliza habitualmente para imprimir el soporte y " -"interficies de soporte" +"El material de soporte se utiliza habitualmente para imprimir el soporte y interficies de " +"soporte" msgid "Temperature of vitrificaiton" msgstr "Temperatura de vitrificación" msgid "" -"Material becomes soft at this temperature. Thus the heatbed cannot be hotter " -"than this tempature" +"Material becomes soft at this temperature. Thus the heatbed cannot be hotter than this " +"tempature" msgstr "" -"El material se ablanda a esta temperatura. Por lo tanto, el lecho térmico no " -"puede estar más caliente que esta temperatura" +"El material se ablanda a esta temperatura. Por lo tanto, el lecho térmico no puede estar " +"más caliente que esta temperatura" msgid "Price" msgstr "Precio" @@ -7249,12 +7319,10 @@ msgstr "(No definido)" msgid "Infill direction" msgstr "Dirección del relleno" -msgid "" -"Angle for sparse infill pattern, which controls the start or main direction " -"of line" +msgid "Angle for sparse infill pattern, which controls the start or main direction of line" msgstr "" -"Ángulo para el patrón de relleno disperso, que controla el inicio o la " -"dirección principal de la línea" +"Ángulo para el patrón de relleno disperso, que controla el inicio o la dirección principal " +"de la línea" msgid "Sparse infill density" msgstr "Densidad de relleno" @@ -7262,8 +7330,7 @@ msgstr "Densidad de relleno" #, c-format msgid "Density of internal sparse infill, 100% means solid throughout" msgstr "" -"Densidad del relleno interno disperso, el 100%% significa sólido en todo el " -"territorio" +"Densidad del relleno interno disperso, el 100%% significa sólido en todo el territorio" msgid "Sparse infill pattern" msgstr "Patrón de relleno disperso" @@ -7293,89 +7360,146 @@ msgid "Adaptive Cubic" msgstr "Cúbico Adaptativo" msgid "3D Honeycomb" -msgstr "" +msgstr "Panal 3D" msgid "Support Cubic" -msgstr "" +msgstr "Soporte Cúbico" msgid "Lightning" +msgstr "Rayo" + +msgid "Sparse infill anchor length" +msgstr "Longitud de anclaje de relleno" + +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 "" +"Conectar una línea de relleno a un perímetro interno con un segmento corto de un perímetro " +"adicional. Si se expresa como porcentaje (ejemplo: 15%) este es calculado sobre el ancho " +"de extrusión de relleno. OrcaSlicer intenta conectar dos líneas de relleno cercanas a un " +"segmento de perímetro corto. Si no se encuentra ningún segmento más corto que " +"relleno_anclaje_max, la línea de relleno se conecta a un semento de perímetro en un solo " +"lado y la longitud del ancho de segmento de perímetro escogido se limita a este parámetro, " +"pero no más largo que anclage_longitud_max. \n" +"Configue este parámetro a cero para deshabilitar los perímetros de anclaje conectados a " +"una sola línea de relleno." + +msgid "0 (no open anchors)" +msgstr "0 (no abrir anclajes)" + +msgid "1000 (unlimited)" +msgstr "1000 (ilimitada)" + +msgid "Maximum length of the infill anchor" +msgstr "Máxima longitud de relleno de anclaje" + +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 "" +"Conectar la línea de relleno a un perímetro interno con un segmento corto de un perímetro " +"adicional. Si se expresa como porcentaje (por ejemplo: 15%) este se calcula sobre el ancho " +"de relleno de extrusión. OrcaSlicer intenta conectar dos líneas de relleno cercanas a un " +"segmento de perímetro corto. Si no hay ningún segmento más corto que este parámetro, esta " +"líena de relleno se conecta a un segmento de perímetro solamente a un lado y la longitud " +"del segmento de perìmetro escogida se limita a relleno_anclaje, pero no más alto que este " +"parámetro. \n" +"Si se deja a 0, el algoritmo antiguo para conexión de relleno se usará, esto debería drear " +"el mismo resultado que con 1000 y 0." + +msgid "0 (Simple connect)" +msgstr "0 (Conexión simple)" msgid "Acceleration of outer walls" -msgstr "" +msgstr "Aceleración de las paredes externos" msgid "Acceleration of inner walls" -msgstr "" +msgstr "Aceleración de las paredes internos" msgid "Acceleration of travel moves" -msgstr "" +msgstr "Aceleración de movimiento de viaje" msgid "" -"Acceleration of top surface infill. Using a lower value may improve top " -"surface quality" +"Acceleration of top surface infill. Using a lower value may improve top surface quality" msgstr "" -"Aceleración del relleno de la superficie superior. El uso de un valor más " -"bajo puede mejorar la calidad de la superficie superior" +"Aceleración del relleno de la superficie superior. El uso de un valor más bajo puede " +"mejorar la calidad de la superficie superior" msgid "Acceleration of outer wall. Using a lower value can improve quality" -msgstr "" +msgstr "Aceleración del pared externo. Usando un valor menor puede mejorar la calidad" 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 "" +"Aceleración de los puentes. Si el valor es expresado como un porcentaje (por ejemplo 50%), " +"se calculará basándose en la aceleración del pared externo." msgid "mm/s² or %" -msgstr "" +msgstr "mm/s² o %" 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 "" +"Aceleración de dispersión de relleno. Si el valor se expresa en porcentaje (por ejemplo " +"100%), se calculará basándose en la aceleración por defecto." 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 "" +"Aceleración de relleno sólido interno. Si el valor se expresa como porcentaje (por ejemplo " +"100%), este se calculará basándose en la aceleración por defecto." -msgid "" -"Acceleration of initial layer. Using a lower value can improve build plate " -"adhensive" +msgid "Acceleration of initial layer. Using a lower value can improve build plate adhensive" msgstr "" -"Aceleración de la capa inicial. El uso de un valor más bajo puede mejorar la " -"adherencia de la placa de impresión" +"Aceleración de la capa inicial. El uso de un valor más bajo puede mejorar la adherencia de " +"la cama de impresión" msgid "Enable accel_to_decel" -msgstr "" +msgstr "Activar acel_a_decel" msgid "Klipper's max_accel_to_decel will be adjusted automatically" -msgstr "" +msgstr "El max_accel_a_decel de Klipper será ajustado automaticamente" msgid "accel_to_decel" -msgstr "" +msgstr "accel_to_decel" #, c-format, boost-format msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" -msgstr "" +msgstr "El max_accel_to_decel de Klipper se ajustará a este % o de aceleración" msgid "Jerk of outer walls" -msgstr "" +msgstr "Jerk de las paredes externas" msgid "Jerk of inner walls" -msgstr "" +msgstr "Jerk de las paredes internass" msgid "Jerk for top surface" -msgstr "" +msgstr "Jerk de la superficie superior" msgid "Jerk for infill" -msgstr "" +msgstr "Jerk de relleno" msgid "Jerk for initial layer" -msgstr "" +msgstr "Jerk de la capa inicial" msgid "Jerk for travel" -msgstr "" +msgstr "Jerk de viaje" msgid "Line width of initial layer" msgstr "Ancho de línea de la capa inicial" @@ -7384,11 +7508,11 @@ msgid "Initial layer height" msgstr "Altura de la capa inicial" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"Height of initial layer. Making initial layer height to be thick slightly can improve " +"build plate adhension" msgstr "" -"Altura de la capa inicial. Hacer que la altura de la capa inicial sea " -"ligeramente gruesa puede mejorar la adherencia de la placa de impresión" +"Altura de la capa inicial. Hacer que la altura de la capa inicial sea ligeramente gruesa " +"puede mejorar la adherencia de la cama de impresión" msgid "Speed of initial layer except the solid infill part" msgstr "Velocidad de la capa inicial excepto la parte sólida de relleno" @@ -7400,63 +7524,71 @@ msgid "Speed of solid infill part of initial layer" msgstr "Velocidad de la parte de relleno sólido de la capa inicial" msgid "Initial layer travel speed" -msgstr "" +msgstr "Velocidad de viaje de la capa inicial" msgid "Travel speed of initial layer" -msgstr "" +msgstr "Velocidad de viaje de capa inicial" msgid "Number of slow layers" -msgstr "" +msgstr "Número de capas lentas" 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 "" +"Las primeras capas se imprimen más lentamente de lo normal. La velocidad se incrementa " +"gradualmente de una forma lineal sobre un número específico de capas." msgid "Initial layer nozzle temperature" msgstr "Temperatura de la boquilla de la capa inicial" msgid "Nozzle temperature to print initial layer when using this filament" msgstr "" -"Temperatura de la boquilla para imprimir la capa inicial cuando se utiliza " -"este filamento" +"Temperatura de la boquilla para imprimir la capa inicial cuando se utiliza este filamento" msgid "Full fan speed at layer" 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 " +"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 "" +"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\". " +"\"full_fan_speed_layer\" se ignorará si es menor que \"close_fan_the_first_x_layers\", en " +"cuyo caso el ventilador funcionará al máximo permitido de capa " +"\"close_fan_the_first_x_layers\" + 1." msgid "Support interface fan speed" -msgstr "" +msgstr "Velocidad de ventilador de interfaz de soporte" 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 "" +"La velocidad de ventilador se fuerza durante todas interfaces de soporte, será capaz de " +"debilitar sus uniones con una velocidad de ventilador más alta.Solo puede ser sobreescrita " +"deshabilitando 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 "" -"Se puede imprimir la pared de forma aleatoria, de modo que la superficie " -"tenga un aspecto rugoso. Este ajuste controla la posición difusa" +"Se puede imprimir la pared de forma aleatoria, de modo que la superficie tenga un aspecto " +"rugoso. Este ajuste controla la posición difusa" msgid "None" msgstr "Ninguno" msgid "Contour" -msgstr "" +msgstr "Contorno" msgid "Contour and hole" -msgstr "" +msgstr "Contorno y agujero" msgid "All walls" msgstr "Todas las paredes" @@ -7464,81 +7596,74 @@ msgstr "Todas las paredes" msgid "Fuzzy skin thickness" msgstr "Distancia del punto de piel difusa" -msgid "" -"The width within which to jitter. It's adversed to be below outer wall line " -"width" +msgid "The width within which to jitter. It's adversed to be below outer wall line width" msgstr "" -"La anchura dentro de la cual se va a jitear. Se aconseja que esté por debajo " -"de la anchura de la línea de la pared exterior" +"La anchura dentro de la cual se va a jitear. Se aconseja que esté por debajo de la anchura " +"de la línea de la pared exterior" msgid "Fuzzy skin point distance" msgstr "Distancia al punto de superficie irregular" -msgid "" -"The average diatance between the random points introducded on each line " -"segment" +msgid "The average diatance between the random points introducded on each line segment" msgstr "" -"La diatancia media entre los puntos aleatorios introducidos en cada segmento " -"de línea" +"La diatancia media entre los puntos aleatorios introducidos en cada segmento de línea" msgid "Filter out tiny gaps" -msgstr "" +msgstr "Filtrar pequeños huecos" msgid "Layers and Perimeters" -msgstr "" +msgstr "Capas y Perímetros" msgid "" -"Filter out gaps smaller than the threshold specified. This setting won't " -"affact top/bottom layers" +"Filter out gaps smaller than the threshold specified. This setting won't affact top/bottom " +"layers" msgstr "" +"Filtrar espacions menores que el umbral especificado. Esta configuración no afectará en " +"las capas superior/inferior" msgid "" -"Speed of gap infill. Gap usually has irregular line width and should be " -"printed more slowly" +"Speed of gap infill. Gap usually has irregular line width and should be printed more slowly" msgstr "" -"Velocidad de relleno del hueco. El hueco suele tener una anchura de línea " -"irregular y debe imprimirse más lentamente" +"Velocidad de relleno del hueco. El hueco suele tener una anchura de línea irregular y debe " +"imprimirse más lentamente" msgid "Arc fitting" msgstr "Ajuste del arco" 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 "" -"Habilite esto para obtener un archivo de código G que tiene movimientos G2 y " -"G3. Y la tolerancia de ajuste es la misma con la resolución" +"Habilite esto para obtener un archivo de código G que tiene movimientos G2 y G3. Y la " +"tolerancia de ajuste es la misma con la resolución" msgid "Add line number" msgstr "Añadir número de línea" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" msgstr "" -"Active esta opción para añadir el número de línea (Nx) al principio de cada " -"línea de G-Code" +"Active esta opción para añadir el número de línea (Nx) al principio de cada línea de G-Code" msgid "Scan first layer" msgstr "Escanear la primera capa" -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 "" -"Active esta opción para que la cámara de la impresora pueda comprobar la " -"calidad de la primera capa" +"Active esta opción para que la cámara de la impresora pueda comprobar la calidad de la " +"primera capa" msgid "Nozzle type" msgstr "Tipo de boquilla" msgid "" -"The metallic material of nozzle. This determines the abrasive resistance of " -"nozzle, and what kind of filament can be printed" +"The metallic material of nozzle. This determines the abrasive resistance of nozzle, and " +"what kind of filament can be printed" msgstr "" -"El material metálico de la boquilla. Esto determina la resistencia a la " -"abrasión de la boquilla, y qué tipo de filamento se puede imprimir" +"El material metálico de la boquilla. Esto determina la resistencia a la abrasión de la " +"boquilla, y qué tipo de filamento se puede imprimir" msgid "Undefine" -msgstr "" +msgstr "Indefinido" msgid "Hardened steel" msgstr "Acero endurecido" @@ -7550,49 +7675,60 @@ msgid "Brass" msgstr "Latón" msgid "Nozzle HRC" -msgstr "" +msgstr "HRC Boquilla" -msgid "" -"The nozzle's hardness. Zero means no checking for nozzle's hardness during " -"slicing." +msgid "The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing." msgstr "" +"La dureza de la boquilla. Cero significa no comprobará la dureza de la boquilla durante el " +"laminado." msgid "HRC" 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 " -"refrigeración de piezas" +"Habilite esta opción si la máquina tiene un ventilador auxiliar de refrigeración de piezas" 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 "" +"Inicia el ventilador este numero de segundos antes que el tiempo de inicio objetivo " +"(puedes usar segundos fraccionales). Esto asume aceleración para esta estimación de " +"tiempo, y esto solo se tendrá en cuenta los movimientos G1 y g0 (no soporta el montaje de " +"arco).\n" +"Esto no moverá comandos de ventilador desde gcodes personalizados (ellos actúan como un " +"tipo de 'barrera').\n" +"Usar 0 para desactivar." msgid "Only overhangs" -msgstr "" +msgstr "Solo voladizos" msgid "Will only take into account the delay for the cooling of overhangs." -msgstr "" +msgstr "Solo se tomará dentro de la cuenta el retraso para enfriar los voladizos." msgid "Fan kick-start time" -msgstr "" +msgstr "Tiempo de arranque de ventilador" 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 "" +"Emite un comando de velocidad máxima del ventilador durante esta cantidad de segundos " +"antes de reducir a la velocidad objetivo para poner en marcha el ventilador de " +"refrigeración.\n" +"Esto es útil para ventiladores donde un PWM/potencia baja puede ser insuficiente para que " +"el ventilador comience a girar desde una parada, o para que el ventilador alcance la " +"velocidad más rápido.\n" +"Ajústelo a 0 para desactivarlo." msgid "G-code flavor" msgstr "Tipo de código G" @@ -7604,40 +7740,46 @@ msgid "Klipper" msgstr "" msgid "Label objects" -msgstr "" +msgstr "Objetos de etiqueta" 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 "" +"Habilite esta opción para añadir comentarios en el G-Code etiquetando los movimientos de " +"impresión con el objeto al que pertenecen, lo cual es útil para el plugin Octoprint " +"CancelObject. Esta configuración NO es compatible con la configuración de Extrusor Único " +"Multi Material y Limpiar en Objeto / Limpiar en Relleno." msgid "Exclude objects" -msgstr "" +msgstr "Excluir objetos" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "" +msgstr "Activar esta opción para añadir el comando EXCLUDE OBJECT en el gcode" msgid "Verbose G-code" -msgstr "" +msgstr "Detallar G-code" 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 "" +"Activar esto para escoger un archivo de G-code comentado, con cada línea explicado por un " +"texto descriptivo. Si imprime desde la tarjeta SD, el peso adicional del archivo podría " +"hacer que tu firmware se ralentice." msgid "Infill combination" msgstr "Combinación de relleno" 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 "" -"Combine automáticamente el relleno disperso de varias capas para imprimirlas " -"juntas y reducir el tiempo. La pared se sigue imprimiendo con la altura " -"original de la capa." +"Combine automáticamente el relleno disperso de varias capas para imprimirlas juntas y " +"reducir el tiempo. La pared se sigue imprimiendo con la altura original de la capa." msgid "Filament to print internal sparse infill." msgstr "Filamento para imprimir el relleno interno disperso." @@ -7649,38 +7791,39 @@ msgid "Infill/Wall overlap" msgstr "Superposición de relleno/pared" 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 "" -"El área de relleno se amplía ligeramente para que se solape con el muro y " -"así mejorar la adherencia. El valor porcentual es relativo a la anchura de " -"la línea del relleno disperso" +"El área de relleno se amplía ligeramente para que se solape con el pared y así mejorar la " +"adherencia. El valor porcentual es relativo a la anchura de la línea del relleno disperso" msgid "Speed of internal sparse infill" msgstr "Velocidad del relleno interno disperso" msgid "Interface shells" -msgstr "" +msgstr "Carcasas de interfaz" 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 "" +"Fuerza la generación de carcasas sólidas entre materiales/volúmenes adyacentes. Útil para " +"impresiones multiextrusoras con materiales translúcidos o material de soporte soluble " +"manualmente" msgid "Ironing Type" msgstr "Tipo de alisado" 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 "" -"El planchado es el uso de un pequeño flujo para imprimir en la misma altura " -"de la superficie de nuevo para hacer la superficie plana más suave. Este " -"ajuste controla la capa que se plancha" +"El alisado es el uso de un pequeño flujo para imprimir en la misma altura de la superficie " +"de nuevo para hacer la superficie plana más suave. Este ajuste controla la capa que se " +"alisa" msgid "No ironing" -msgstr "Sin planchado" +msgstr "Sin alisado" msgid "Top surfaces" msgstr "Superficies superiores" @@ -7692,49 +7835,48 @@ msgid "All solid layer" msgstr "Toda la capa sólida" msgid "Ironing flow" -msgstr "Flujo de planchado" +msgstr "Flujo de alisado" 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 "" -"La cantidad de material a extruir durante el planchado. Relativo al flujo de " -"la altura de la capa normal. Un valor demasiado alto provoca una " -"sobreextrusión en la superficie" +"La cantidad de material a extruir durante el alisado. Relativo al flujo de la altura de la " +"capa normal. Un valor demasiado alto provoca una sobreextrusión en la superficie" msgid "Ironing line spacing" -msgstr "Espacio entre líneas de planchado" +msgstr "Espacio entre líneas de alisado" msgid "The distance between the lines of ironing" -msgstr "La distancia entre las líneas de planchado" +msgstr "La distancia entre las líneas de alisado" msgid "Ironing speed" -msgstr "Velocidad de planchado" +msgstr "Velocidad de alisado" msgid "Print speed of ironing lines" -msgstr "Velocidad de impresión de las líneas de planchado" +msgstr "Velocidad de impresión de las líneas de alisado" msgid "This gcode part is inserted at every layer change after lift z" -msgstr "" -"Esta parte de gcode se inserta en cada cambio de capa después de levantar z" +msgstr "Esta parte de gcode se inserta en cada cambio de capa después de levantar z" msgid "Supports silent mode" msgstr "Admite el modo silencioso" msgid "" -"Whether the machine supports silent mode in which machine use lower " -"acceleration to print" +"Whether the machine supports silent mode in which machine use lower acceleration to print" msgstr "" -"Si la máquina admite el modo silencioso en el que la máquina utiliza una " -"menor aceleración para imprimir" +"Si la máquina admite el modo silencioso en el que la máquina utiliza una menor aceleración " +"para imprimir" 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 "" +"Este G-code se usará como cídugo para la pausa de impresión. El usuario puede insertar una " +"pausa en el visor de gcode" msgid "This G-code will be used as a custom code" -msgstr "" +msgstr "Este G-code se usará para el código personalizado" msgid "Maximum speed X" msgstr "Velocidad máxima X" @@ -7845,51 +7987,49 @@ 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" +"Part cooling fan speed may be increased when auto cooling is enabled. This is the maximum " +"speed limitation of part cooling fan" msgstr "" -"La velocidad del ventilador de enfriamiento de la pieza puede aumentarse " -"cuando la refrigeración automática está activada. Esta es la limitación de " -"velocidad máxima del ventilador de refrigeración parcial" +"La velocidad del ventilador de enfriamiento de la pieza puede aumentarse cuando la " +"refrigeración automática está activada. Esta es la limitación de velocidad máxima del " +"ventilador de refrigeración parcial" 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 "" -"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." +"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 "Minimum speed for part cooling fan" msgstr "Velocidad mínima del ventilador de refrigeración de la pieza" 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 "" -"Velocidad del ventilador de la parte auxiliar. El ventilador auxiliar " -"funcionará a esta velocidad durante la impresión, excepto en las primeras " -"capas, que se define por la ausencia de capas de refrigeración" +"Velocidad del ventilador de la parte auxiliar. El ventilador auxiliar funcionará a esta " +"velocidad durante la impresión, excepto en las primeras capas, que se define por la " +"ausencia de capas de refrigeración" 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 "" -"La menor altura de capa imprimible para el extrusor. Se utiliza para limitar " -"la altura mínima de la capa cuando se activa la altura de capa adaptable." +"La menor altura de capa imprimible para el extrusor. Se utiliza para limitar la altura " +"mínima de la capa cuando se activa la altura de capa adaptable" msgid "Min print speed" msgstr "Velocidad de impresión mínima" msgid "The minimum printing speed when slow down for cooling" -msgstr "" -"La velocidad mínima de impresión cuando se ralentiza para el enfriamiento" +msgstr "La velocidad mínima de impresión cuando se ralentiza para el enfriamiento" msgid "Nozzle diameter" msgstr "Diámetro de la boquilla" @@ -7898,12 +8038,14 @@ msgid "Diameter of nozzle" msgstr "Diámetro de la boquilla" msgid "Host Type" -msgstr "" +msgstr "Tipo de host" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Slic3r can upload G-code files to a printer host. This field must contain the kind of the " +"host." msgstr "" +"Orca Slicer puede cargar archivos G-code a un host de impresora. Este campo puede contener " +"el tipo de host." msgid "Nozzle volume" msgstr "Tamaño de la boquilla" @@ -7912,19 +8054,23 @@ msgid "Volume of nozzle between the cutter and the end of nozzle" msgstr "Espacio de la boquilla entre el cortador y el extremo de la boquilla" msgid "Start end points" -msgstr "" +msgstr "Puntos de inicio fin" msgid "The start and end points which is from cutter area to garbage can." -msgstr "" +msgstr "Los puntos de inicio y fin, desde la zona de corte al cubo de basura." msgid "Reduce infill retraction" msgstr "Reducir la retracción del relleno" 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 "" +"No retraiga cuando el viaje está totalmente en el área de relleno. Eso significa que el " +"rezume no se puede ver. Esto puede reducir los tiempos de retracción para el modelo " +"complejo y ahorrar tiempo de impresión, pero hacer que el corte y la generación de código " +"G más lento" msgid "Enable" msgstr "Habilitar" @@ -7934,20 +8080,19 @@ msgstr "Formato de los archivos" msgid "User can self-define the project file name when export" msgstr "" -"El usuario puede definir por sí mismo el nombre del archivo del proyecto al " -"exportarlo" +"El usuario puede definir por sí mismo el nombre del archivo del proyecto al exportarlo" msgid "Detect overhang wall" msgstr "Detectar el voladizo de la pared" #, 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 "" -"Detecta el porcentaje de voladizo en relación con el ancho de la línea y " -"utiliza diferentes velocidades para imprimir. Para el 100%% de voladizo, se " -"utiliza la velocidad de puente." +"Detecta el porcentaje de voladizo en relación con el ancho de la línea y utiliza " +"diferentes velocidades para imprimir. Para el 100%% de voladizo, se utiliza la velocidad " +"de puente." msgid "Line width of inner wall" msgstr "Ancho de línea de la pared interior" @@ -7959,78 +8104,74 @@ msgid "Number of walls of every layer" msgstr "Número de paredes de cada capa" 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 "" +"Si desea procesar el G-code de salida a través de scripts personalizados, simplemente " +"enumere sus rutas absolutas aquí. Separe varios scripts con punto y coma. A los scripts se " +"les pasará la ruta absoluta al archivo G-code como primer argumento, y pueden acceder a " +"los ajustes de configuración de OrcaSlicer leyendo variables de entorno." msgid "Raft contact Z distance" -msgstr "Distancia Z de contacto de la balsa" +msgstr "Distancia Z de contacto de la base de impresión" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "" -"Espacio Z entre el objeto y la balsa. Se ignora para la interfaz soluble" +msgstr "Espacio Z entre el objeto y la base de impresión. Se ignora para la interfaz soluble" msgid "Raft expansion" -msgstr "Expansión de la balsa" +msgstr "Expansión de la base de impresión" msgid "Expand all raft layers in XY plane" -msgstr "Expandir todas las capas de la balsa en el plano XY" +msgstr "Expandir todas las capas de la base de impresión en el plano XY" msgid "Initial layer density" msgstr "Densidad de la capa inicial" msgid "Density of the first raft or support layer" -msgstr "Densidad de la primera balsa o capa de soporte" +msgstr "Densidad de la primera base de impresión o capa de soporte" msgid "Initial layer expansion" msgstr "Expansión de la capa inicial" msgid "Expand the first raft or support layer to improve bed plate adhesion" msgstr "" -"Expandir la primera balsa o capa de soporte para mejorar la adherencia de la " -"placa de la cama" +"Expandir la primera base de impresión o capa de soporte para mejorar la adherencia de la " +"cama de la cama" msgid "Raft layers" -msgstr "Capas de balsa" +msgstr "Capas de base de impresión" 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 "" -"El objeto será elevado por este número de capas de soporte. Utilice esta " -"función para evitar la envoltura al imprimir ABS" +"El objeto será elevado por este número de capas de soporte. Utilice esta función para " +"evitar la envoltura al imprimir 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 "" -"La ruta del código G se genera después de simplificar el contorno del modelo " -"para evitar demasiados puntos y líneas de código G en el archivo de código " -"G. Un valor más pequeño significa una mayor resolución y más tiempo para " -"cortar." +"La ruta del código G se genera después de simplificar el contorno del modelo para evitar " +"demasiados puntos y líneas de código G en el archivo de código G. Un valor más pequeño " +"significa una mayor resolución y más tiempo para cortar" msgid "Travel distance threshold" msgstr "Umbral de distancia de desplazamiento" -msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" +msgid "Only trigger retraction when the travel distance is longer than this threshold" msgstr "" -"Sólo se activa la retracción cuando la distancia de recorrido es superior a " -"este umbral" +"Sólo se activa la retracción cuando la distancia de recorrido es superior a este umbral" msgid "Retract amount before wipe" msgstr "Retracta cantidad antes de limpiar" -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 "" -"La longitud de la retracción rápida antes de la limpieza, en relación con la " -"longitud de la retracción" +"La longitud de la retracción rápida antes de la limpieza, en relación con la longitud de " +"la retracción" msgid "Retract when change layer" msgstr "Retirada al cambiar de capa" @@ -8045,47 +8186,50 @@ msgid "Retraction Length" msgstr "Longitud de retracción" 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 "" -"Una cierta cantidad de material en el extrusor se extrae para evitar el " -"rezumado durante el recorrido largo. Ajustar el cero para desactivar la " -"retracción" +"Una cierta cantidad de material en el extrusor se extrae para evitar el rezumado durante " +"el recorrido largo. Ajustar el cero para desactivar la retracción" msgid "Z hop when retract" -msgstr "Salto en Z al replegarse" +msgstr "Salto en Z al retraerse" 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 "" -"Cada vez que se realiza la retracción, la boquilla se levanta un poco para " -"crear un espacio libre entre la boquilla y la impresión. Esto evita que la " -"boquilla golpee la impresión cuando se desplaza. El uso de la línea espiral " -"para levantar z puede evitar el encordado" +"Cada vez que se realiza la retracción, la boquilla se levanta un poco para crear un " +"espacio libre entre la boquilla y la impresión. Esto evita que la 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 type" -msgstr "" +msgstr "Tipo de salto Z" msgid "Slope" -msgstr "" +msgstr "Pendiente" msgid "Spiral" -msgstr "" +msgstr "Espiral" msgid "Extra length on restart" -msgstr "" +msgstr "Longitud extra de reinicio" 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 "" +"Cuando la retracción se compensa después de un movimiento de viaje, el extrusor expulsará " +"esa cantidad de filamento adicional. Este ajuste raramente se necesitará." msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." +"When the retraction is compensated after changing tool, the extruder will push this " +"additional amount of filament." msgstr "" +"Cuando se compensa la retracción después de cambiar de herramienta, el extrusor empujará " +"esta cantidad adicional de filamento." msgid "Retraction Speed" msgstr "Velocidad de retracción" @@ -8096,23 +8240,23 @@ msgstr "Velocidad de las retracciones" msgid "Deretraction Speed" msgstr "Velocidad de deretracción" -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 "" -"Velocidad de recarga del filamento en el extrusor. Cero significa la misma " -"velocidad con la retracción" +"Velocidad de recarga del filamento en el extrusor. Cero significa la misma velocidad con " +"la retracción" msgid "Use firmware retraction" -msgstr "" +msgstr "Usar retracción de firmware" 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 "" +"Esta configuración experimental utiliza los comandos G10 y G11 para que el firmware se " +"encargue de la retracción. Sólo se admite en variables de entorno recientes de Marlin.ding." msgid "Show auto-calibration marks" -msgstr "" +msgstr "Muestra marcas de autocalibración" msgid "Seam position" msgstr "Posición de la costura" @@ -8130,56 +8274,69 @@ msgid "Back" msgstr "Volver" msgid "Random" -msgstr "" +msgstr "Aleatorio" msgid "Seam gap" -msgstr "" +msgstr "Separación entre costuras" 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 15%." +"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 15%." msgstr "" +"Para reducir la visibilidad de la costura en una extrusión de bucle cerrado, el bucle se " +"interrumpe y se acorta en una cantidad especificada.\n" +"Esta cantidad puede especificarse en milímetros o como porcentaje del diámetro actual del " +"extrusor. El valor por defecto de este parámetro es 15%." msgid "Role base wipe speed" -msgstr "" +msgstr "Velocidad de limpieza de la base de roles" 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 "" +"La velocidad de limpieza viene determinada por la velocidad de la función de extrusión " +"actual. Por ejemplo, si se ejecuta una acción de limpieza inmediatamente después de una " +"extrusión de la pared exterior, se utilizará la velocidad de la extrusión de la pared " +"exterior para la acción de limpieza." msgid "Wipe on loops" -msgstr "" +msgstr "Barrido en bucles" 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 "" +"Para minimizar la visibilidad de la costura en una extrusión de bucle cerrado, se ejecuta " +"un pequeño movimiento hacia dentro antes de que el extrusor abandone el bucle." msgid "Wipe speed" -msgstr "" +msgstr "Velocidad de limpieza" 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 "" +"La velocidad de barrido viene determinada por el ajuste de velocidad especificado en esta " +"configuración. Si el valor se expresa en porcentaje (por ejemplo, 80%), se calculará en " +"función del ajuste de velocidad de desplazamiento anterior. El valor por defecto de este " +"parámetro es 80%" msgid "Skirt distance" msgstr "Distancia de la falda" msgid "Distance from skirt to brim or object" -msgstr "Distancia de la falda al borde o al objeto" +msgstr "Distancia de la falda al borde de adherencia o al objeto" msgid "Skirt height" -msgstr "" +msgstr "Altura de falda" msgid "How many layers of skirt. Usually only one layer" -msgstr "" +msgstr "C capas de falda. Normalmente sólo una capa" msgid "Skirt loops" msgstr "Contorno de la falda" @@ -8188,22 +8345,21 @@ msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "Número de bucles de la falda. Cero significa desactivar el faldón" 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 "" -"La velocidad de impresión en el gcode exportado se ralentizará, cuando el " -"tiempo estimado de la capa sea inferior a este valor, para conseguir una " -"mejor refrigeración de estas capas" +"La velocidad de impresión en el gcode exportado se ralentizará, cuando el tiempo estimado " +"de la capa sea inferior a este valor, para conseguir una mejor refrigeración de estas capas" msgid "Minimum sparse infill threshold" msgstr "Umbral mínimo de relleno disperso" msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " -"internal solid infill" +"Sparse infill area which is smaller than threshold value is replaced by internal solid " +"infill" msgstr "" -"El área de relleno disperso que es menor que el valor del umbral se " -"sustituye por un relleno sólido interno" +"El área de relleno disperso que es menor que el valor del umbral se sustituye por un " +"relleno sólido interno" msgid "mm²" msgstr "mm²" @@ -8212,34 +8368,37 @@ msgid "Line width of internal solid infill" msgstr "Ancho de línea del relleno sólido interno" msgid "Speed of internal solid infill, not the top and bottom surface" -msgstr "" -"Velocidad del relleno sólido interno, no la superficie superior e inferior" +msgstr "Velocidad del relleno sólido interno, no la superficie superior e inferior" msgid "Spiral vase" -msgstr "" +msgstr "Vaso en espiral" 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 suaviza los movimientos z del contorno exterior. Y convierte un " -"modelo sólido en una impresión de una sola pared con capas inferiores " -"sólidas. El modelo final generado no tiene costura" +"Spiralize suaviza los movimientos z del contorno exterior. Y convierte un modelo sólido en " +"una impresión de una sola pared con capas inferiores sólidas. El modelo final generado no " +"tiene costura" 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 "" +"Sí se selecciona el modo suave o tradicional, se generará un vídeo time-lapse para cada " +"impresión. Después de imprimir cada capa, se toma una instantánea con la cámara. Todas " +"estas instantáneas se componen en un vídeo time-lapse cuando finaliza la impresión. Si se " +"selecciona el modo suave, el cabezal de la herramienta se moverá a la rampa de exceso " +"después de cada capa se imprime y luego tomar una instantánea. Dado que el filamento " +"fundido puede gotear de la boquilla durante el proceso de tomar una instantánea, la torre " +"de purga es necesaria para el modo suave de limpiar la boquilla." msgid "Traditional" -msgstr "" +msgstr "Tradicional" msgid "Temperature variation" msgstr "Variación de temperatura" @@ -8254,30 +8413,35 @@ msgid "Start G-code when start the printing of this filament" msgstr "Inicie el código G al comenzar la impresión de este filamento" msgid "Slice gap closing radius" -msgstr "" +msgstr "Radio de cierre de laminado" 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 "" +"Las grietas más pequeñas que el radio de cierre 2x se rellenan durante el corte de la " +"malla triangular. La operación de cierre de huecos puede reducir la resolución de " +"impresión final, por lo que es aconsejable mantener el valor razonablemente bajo." msgid "Slicing Mode" -msgstr "" +msgstr "Modo de laminado" 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 "" +"Utilice \"Par-impar\" para los modelos de avión de 3DLabPrint. Utilice \"Cerrar agujeros\" " +"para cerrar todos los agujeros del modelo." msgid "Regular" msgstr "" msgid "Even-odd" -msgstr "" +msgstr "Par-impar" msgid "Close holes" -msgstr "" +msgstr "Cerrar agujeros" msgid "Enable support" msgstr "Habilitar el soporte" @@ -8286,10 +8450,11 @@ msgid "Enable support generation." msgstr "Habilitar la generación de soporte." 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 "" +"normal(auto) y tree(auto) se utiliza para generar soporte automáticamente. Si se " +"selecciona normal(manual) o árbol(manual), sólo se generan los refuerzos de apoyo" msgid "normal(auto)" msgstr "normal(auto)" @@ -8301,7 +8466,7 @@ msgid "normal(manual)" msgstr "" msgid "tree(manual)" -msgstr "" +msgstr "árbol(manual)" msgid "Support/object xy distance" msgstr "Distancia soporte/objeto xy" @@ -8313,23 +8478,20 @@ msgid "Pattern angle" msgstr "Ángulo del patrón" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "" -"Utilice este ajuste para girar el patrón de soporte en el plano horizontal." +msgstr "Utilice este ajuste para girar el patrón de soporte en el plano horizontal." msgid "On build plate only" -msgstr "Sólo en la placa de impresión" +msgstr "Sólo en la cama de impresión" msgid "Don't create support on model surface, only on build plate" -msgstr "" -"No crear soporte en la superficie del modelo, sólo en la placa de impresión" +msgstr "No crear soporte en la superficie del modelo, sólo en la cama de impresión" msgid "Support critical regions only" -msgstr "" +msgstr "Añadir soportes en regiones críticas solo" -msgid "" -"Only create support for critical regions including sharp tail, cantilever, " -"etc." +msgid "Only create support for critical regions including sharp tail, cantilever, etc." msgstr "" +"Cree soportes sólo para las regiones críticas, como la cola afilada, el voladizo, etc." msgid "Top Z distance" msgstr "Distancia Z superior" @@ -8338,18 +8500,20 @@ msgid "The z gap between the top support interface and object" msgstr "La distancia z entre la interfaz de soporte superior y el objeto" msgid "Bottom Z distance" -msgstr "" +msgstr "Distancia Z inferior" msgid "The z gap between the bottom support interface and object" -msgstr "" +msgstr "La distancia z entre la interfaz de apoyo inferior y el objeto" msgid "Support/raft base" -msgstr "" +msgstr "Soporte/plataforma base" 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 "" +"Filamento para imprimir la base de soporte y la base de impresión. \"Por defecto\" " +"significa que no hay filamento específico para el soporte y se utiliza el filamento actual" msgid "Line width of support" msgstr "Ancho de línea del soporte" @@ -8357,19 +8521,19 @@ msgstr "Ancho de línea del soporte" msgid "Interface use loop pattern" msgstr "Uso de la interfaz en forma de bucle" -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." +msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -"Cubrir la capa de contacto superior de los soportes con bucles. Desactivado " -"por defecto." +"Cubrir la capa de contacto superior de los soportes con bucles. Desactivado por defecto." msgid "Support/raft interface" -msgstr "" +msgstr "Interfaz de soporte/base de impresión" 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 "" +"Filamento para imprimir interfaz de soporte. \"Por defecto\" significa que no hay " +"filamento específico para la interfaz de soporte y se utiliza el filamento actual" msgid "Top interface layers" msgstr "Capas de la interfaz superior" @@ -8384,16 +8548,13 @@ msgid "Top interface spacing" msgstr "Distancia de la interfaz superior" msgid "Spacing of interface lines. Zero means solid interface" -msgstr "" -"Espacio de las líneas de interfaz. Cero significa que la interfaz es sólida" +msgstr "Espacio de las líneas de interfaz. Cero significa que la interfaz es sólida" msgid "Bottom interface spacing" msgstr "Distancia de la interfaz inferior" msgid "Spacing of bottom interface lines. Zero means solid interface" -msgstr "" -"Espacio entre las líneas de la interfaz inferior. Cero significa interfaz " -"sólida" +msgstr "Espacio entre las líneas de la interfaz inferior. Cero significa interfaz sólida" msgid "Speed of support interface" msgstr "Velocidad de la interfaz de soporte" @@ -8408,22 +8569,21 @@ msgid "Rectilinear grid" msgstr "Rejilla rectilínea" msgid "Hollow" -msgstr "" +msgstr "Hueco" msgid "Interface pattern" msgstr "Patrón de interfaz" 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 "" -"Patrón de líneas de la interfaz de soporte. El patrón por defecto para la " -"interfaz de soporte no soluble es Rectilíneo, mientras que el patrón por " -"defecto para la interfaz de soporte soluble es Concéntrico" +"Patrón de líneas de la interfaz de soporte. El patrón por defecto para la interfaz de " +"soporte no soluble es Rectilíneo, mientras que el patrón por defecto para la interfaz de " +"soporte soluble es Concéntrico" msgid "Rectilinear Interlaced" -msgstr "" +msgstr "Entrelazado rectilíneo" msgid "Base pattern spacing" msgstr "Espaciamiento del patrón base" @@ -8432,96 +8592,103 @@ msgid "Spacing between support lines" msgstr "Espacio entre las líneas de apoyo" msgid "Normal Support expansion" -msgstr "" +msgstr "Expasión de Soporte Normal" msgid "Expand (+) or shrink (-) the horizontal span of normal support" -msgstr "" +msgstr "Ampliar (+) o reducir (-) la expansión horizontal del soporte normal" msgid "Speed of support" msgstr "Velocidad de la asistencia" 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 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 "Snug" msgstr "Ajustado" msgid "Tree Slim" -msgstr "" +msgstr "Árbol Delgado" msgid "Tree Strong" -msgstr "" +msgstr "Árbol Fuerte" msgid "Tree Hybrid" -msgstr "" +msgstr "Árbol Híbrido" msgid "Independent support layer height" msgstr "Altura de la capa de soporte independiente" 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 "" +"La capa de soporte utiliza una altura de capa independiente de la capa del objeto. Esta " +"opción no será válida si la torre de purga está activada." msgid "Threshold angle" msgstr "Ángulo de umbral" -msgid "" -"Support will be generated for overhangs whose slope angle is below the " -"threshold." +msgid "Support will be generated for overhangs whose slope angle is below the threshold." msgstr "" -"Se generará un soporte para los voladizos cuyo ángulo de inclinación sea " -"inferior al umbral." +"Se generará un soporte para los voladizos cuyo ángulo de inclinación sea inferior al " +"umbral." msgid "Tree support branch angle" msgstr "Ángulo de la rama de soporte del árbol" 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 "" -"Este ajuste determina el ángulo máximo de voladizo que pueden hacer las " -"ramas del soporte del árbol. Si se aumenta el ángulo, las ramas pueden " -"imprimirse más horizontalmente, permitiendo que lleguen más lejos." +"Este ajuste determina el ángulo máximo de voladizo que pueden hacer las ramas del soporte " +"del árbol. Si se aumenta el ángulo, las ramas pueden imprimirse más horizontalmente, " +"permitiendo que lleguen más lejos." msgid "Tree support branch distance" msgstr "Distancia de la rama de soporte del árbol" -msgid "" -"This setting determines the distance between neighboring tree support nodes." -msgstr "" -"Este ajuste determina la distancia entre los nodos de soporte del árbol " -"vecinos." +msgid "This setting determines the distance between neighboring tree support nodes." +msgstr "Este ajuste determina la distancia entre los nodos de soporte del árbol vecinos." msgid "Adaptive layer height" msgstr "Altura de capa adaptable" 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 "" +"Si se activa esta opción, se calculará automáticamente la altura de todas las capas de " +"soporte de los árboles excepto la primera. " msgid "Auto brim width" -msgstr "" +msgstr "Ancho de borde de adherencia automático" msgid "" -"Enabling this option means the width of the brim for tree support will be " -"automatically calculated" +"Enabling this option means the width of the brim for tree support will be automatically " +"calculated" msgstr "" +"Si activa esta opción, se calculará automáticamente la anchura del borde de adherencia " +"para el soporte del árbol" msgid "Tree support brim width" -msgstr "" +msgstr "Anchura del borde de adherencia" msgid "Distance from tree branch to the outermost brim line" -msgstr "" +msgstr "Distancia desde la rama del árbol hasta la línea más externa del borde de adherencia" msgid "Tree support branch diameter" msgstr "Diámetro de la rama de soporte del árbol" @@ -8533,21 +8700,18 @@ msgid "Tree support wall loops" msgstr "Lazos de pared de soporte para arboles" msgid "This setting specify the count of walls around tree support" -msgstr "" -"Este ajuste especifica el número de muros alrededor del soporte del árbol" +msgstr "Este ajuste especifica el número de paredes alrededor del soporte del árbol" msgid "Tree support with infill" msgstr "Soporte para árboles con relleno" -msgid "" -"This setting specifies whether to add infill inside large hollows of tree " -"support" +msgid "This setting specifies whether to add infill inside large hollows of tree support" msgstr "" -"Este ajuste especifica si se añade relleno dentro de los grandes huecos del " -"soporte del árbol" +"Este ajuste especifica si se añade relleno dentro de los grandes huecos del soporte del " +"árbol" msgid "Target chamber temperature" -msgstr "" +msgstr "Temperatura objetivo de la cámara" msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura de la boquilla después de la primera capa" @@ -8556,28 +8720,29 @@ 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" +"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 capa inicial " +"por encima de este umbral. Una temperatura demasiado baja de la otra capa puede hacer que " +"el modelo se desprenda de la cama de impresión" msgid "Detect thin wall" msgstr "Detectar la pared delgada" 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 "" -"Detectar la pared delgada que no puede contener dos líneas de ancho. Y " -"utilizar una sola línea para imprimir. Tal vez no se imprime muy bien, " -"porque no es de bucle cerrado" +"Detectar la pared delgada que no puede contener dos líneas de ancho. Y utilizar una sola " +"línea para imprimir. Tal vez no se imprime muy bien, porque no es de bucle cerrado" msgid "" -"This gcode is inserted when change filament, including T command to trigger " -"tool change" +"This gcode is inserted when change filament, including T command to trigger tool change" msgstr "" -"Este gcode se inserta cuando se cambia de filamento, incluyendo el comando T " -"para activar el cambio de herramienta" +"Este gcode se inserta cuando se cambia de filamento, incluyendo el comando T para activar " +"el cambio de herramienta" msgid "Line width for top surfaces" msgstr "Ancho de línea para las superficies superiores" @@ -8589,14 +8754,13 @@ msgid "Top shell layers" msgstr "Capas superiores de la cubierta" 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 "" -"Es el número de capas sólidas de la cubierta superior, incluida la capa " -"superficial superior. Si el grosor calculado por este valor es menor que el " -"grosor de la cubierta superior, las capas de la cubierta superior se " -"incrementarán" +"Es el número de capas sólidas de la cubierta superior, incluida la capa superficial " +"superior. Si el grosor calculado por este valor es menor que el grosor de la cubierta " +"superior, las capas de la cubierta superior se incrementarán" msgid "Top solid layers" msgstr "Capas solidas superiores" @@ -8605,18 +8769,16 @@ msgid "Top shell thickness" msgstr "Espesor de la cubierta superior" 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 "" -"El número de capas sólidas superiores se incrementa al rebanar si el espesor " -"calculado por las capas superiores de la cáscara es más delgado que este " -"valor. Esto puede evitar tener una capa demasiado fina cuando la altura de " -"la capa es pequeña. 0 significa que este ajuste está desactivado y el grosor " -"de la capa superior está absolutamente determinado por las capas de la capa " -"superior." +"El número de capas sólidas superiores se incrementa al laminar si el espesor calculado por " +"las capas superiores de la cáscara es más delgado que este valor. Esto puede evitar tener " +"una capa demasiado fina cuando la altura de la capa es pequeña. 0 significa que este " +"ajuste está desactivado y el grosor de la capa superior está absolutamente determinado por " +"las capas de la capa superior" msgid "Speed of travel which is faster and without extrusion" msgstr "Velocidad de desplazamiento más rápida y sin extrusión" @@ -8625,27 +8787,29 @@ msgid "Wipe while retracting" msgstr "Limpiar mientras se retrae" 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 "" -"Mueva la boquilla a lo largo de la última trayectoria de extrusión cuando se " -"retraiga para limpiar el material filtrado en la boquilla. Esto puede " -"minimizar las manchas cuando se imprime una nueva pieza después del recorrido" +"Mueva la boquilla a lo largo de la última trayectoria de extrusión cuando se retraiga para " +"limpiar el material filtrado en la boquilla. Esto puede minimizar las manchas cuando se " +"imprime una nueva pieza después del recorrido" msgid "Wipe Distance" msgstr "Distancia de limpieza" -msgid "" -"Discribe how long the nozzle will move along the last path when retracting" +msgid "Discribe how long the nozzle will move along the last path when retracting" msgstr "" -"Describa cuánto tiempo se moverá la boquilla a lo largo de la última " -"trayectoria al retraerse" +"Describa cuánto tiempo se moverá la boquilla a lo largo de la última trayectoria al " +"retraerse" 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 "" +"La torre de purga puede utilizarse para limpiar los residuos de la boquilla y estabilizar " +"la presión de la cámara en el interior de la boquilla, con el fin de evitar defectos de " +"aspecto al imprimir objetos." msgid "Purging volumes" msgstr "Volúmenes de purga" @@ -8654,9 +8818,11 @@ msgid "Flush multiplier" msgstr "Multiplicador de flujo" msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by " -"the flushing volumes in the table." +"The actual flushing volumes is equal to the flush multiplier multiplied by the flushing " +"volumes in the table." msgstr "" +"El volumen de descarga real es igual al multiplicador de descarga multiplicado por los " +"volúmenes de descarga de la tabla." msgid "Prime volume" msgstr "Volumen principal" @@ -8668,174 +8834,209 @@ msgid "Width" msgstr "Ancho" msgid "Width of prime tower" -msgstr "Anchura de la torre principal" +msgstr "Anchura de la torre de purga" 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 "" +"La purga tras el cambio de filamento se realizará dentro de los rellenos de los objetos. " +"Esto puede reducir la cantidad de residuos y disminuir el tiempo de impresión. Si las " +"paredes se imprimen con filamento transparente, el relleno de color mixto se verá en el " +"exterior. No tendrá efecto, a menos que la torre de purga esté activada." 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 "" +"La purga tras el cambio de filamento se realizará dentro del soporte de los objetos. Esto " +"puede reducir la cantidad de residuos y disminuir el tiempo de impresión. No tendrá " +"efecto, a menos que la torre de purga esté activada." 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 "" +"Este objeto se utilizará para purgar la boquilla después de un cambio de filamento para " +"ahorrar filamento y disminuir el tiempo de impresión. Los colores de los objetos se " +"mezclarán como resultado. No tendrá efecto, a menos que la torre de purga esté activada." msgid "X-Y hole compensation" msgstr "Compensación de huecos X-Y" 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 "" -"Los huecos del objeto crecerán o se reducirán en el plano XY según el valor " -"configurado. Un valor positivo hace que los huecos sean más grandes. Un " -"valor negativo hace que los huecos sean más pequeños. Esta función se " -"utiliza para ajustar el tamaño ligeramente cuando el objeto tiene problemas " -"de ensamblaje" +"Los huecos del objeto crecerán o se reducirán en el plano XY según el valor configurado. " +"Un valor positivo hace que los huecos sean más grandes. Un valor negativo hace que los " +"huecos sean más pequeños. Esta función se utiliza para ajustar el tamaño ligeramente " +"cuando el objeto tiene problemas de ensamblaje" msgid "X-Y contour compensation" msgstr "Compensación de contornos X-Y" 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 "" -"El contorno del objeto crecerá o se reducirá en el plano XY según el valor " -"configurado. Un valor positivo hace que el contorno sea más grande. Un valor " -"negativo hace que el contorno sea más pequeño. Esta función se utiliza para " -"ajustar el tamaño ligeramente cuando el objeto tiene problemas de ensamblaje" +"El contorno del objeto crecerá o se reducirá en el plano XY según el valor configurado. Un " +"valor positivo hace que el contorno sea más grande. Un valor negativo hace que el contorno " +"sea más pequeño. Esta función se utiliza para ajustar el tamaño ligeramente cuando el " +"objeto tiene problemas de ensamblaje" msgid "G-code thumbnails" -msgstr "" +msgstr "Miniaturas de G-code" 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 "" +"Los tamaños de las imágenes deben almacenarse en archivos .gcode y .sl1 / .sl1s, en el " +"siguiente formato: \"XxY, XxY, ...\"" msgid "Use relative E distances" -msgstr "" +msgstr "Usar distancias relativas 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" +"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 "" +"Se recomienda la extrusión relativa cuando se utiliza la opción \"label_objects\". Algunos " +"extrusores funcionan mejor con esta opción desactivada (modo de extrusión absoluta). La " +"torre de borrado sólo es compatible con el modo relativo. Siempre está activada en las " +"impresoras BambuLab. Por defecto está marcada" 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 "" +"El generador de pareds clásico produce pareds con anchura de extrusión constante y para " +"zonas muy finas se utiliza rellenar-espacio. El motor Arachne produce paredes con anchura " +"de extrusión variable." msgid "Classic" -msgstr "" +msgstr "Clásico" msgid "Arachne" msgstr "" msgid "Wall transition length" -msgstr "" +msgstr "Anchura de transición de pared" 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 "" +"Cuando se pasa de un número de paredes a otro a medida que la pieza se vuelve más fina, se " +"asigna una determinada cantidad de espacio para dividir o unir los segmentos de pared. Se " +"expresa como un porcentaje sobre el diámetro de la boquilla" msgid "Wall transitioning filter margin" -msgstr "" +msgstr "Margen del filtro de transición a la pared" 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 "" +"Evita la transición entre una pared de más y una de menos. Este margen amplía el rango de " +"anchos de extrusión que siguen a [Ancho mínimo de pared - margen, 2 * Ancho mínimo de " +"pared + margen]. Aumentando este margen se reduce el número de transiciones, lo que reduce " +"el número de arranques/paradas de extrusión y el tiempo de recorrido. Sin embargo, una " +"gran variación de la anchura de extrusión puede provocar problemas de infra o " +"sobreextrusión. Se expresa en porcentaje sobre el diámetro de la boquilla" msgid "Wall transitioning threshold angle" -msgstr "" +msgstr "Ángulo del umbral de transición de la pared" 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" +"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 "" +"Cuándo crear transiciones entre números pares e impares de paredes. Una forma de cuña con " +"un ángulo mayor que este ajuste no tendrá transiciones y no se imprimirán paredes en el " +"centro para rellenar el espacio restante. La reducción de este ajuste reduce el número y " +"la longitud de estas paredes centrales, pero puede dejar huecos o sobresalir" msgid "Wall distribution count" -msgstr "" +msgstr "Recuento de distribución de paredes" 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 "" +"El número de paredes, contadas desde el centro, sobre las que debe repartirse la " +"variación. Los valores más bajos significan que las paredes exteriores no cambian de " +"anchura" msgid "Minimum feature size" -msgstr "" +msgstr "Tamaño mínimo del elemento" 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 "" +"Espesor mínimo de los elementos finos. Las características del modelo que sean más finas " +"que este valor no se imprimirán, mientras que las características más gruesas que el " +"Tamaño mínimo del Elemento se ensancharán hasta el Ancho mínimo de pared. Se expresa en " +"porcentaje sobre el diámetro de la boquilla" msgid "Minimum wall width" -msgstr "" +msgstr "Ancho mínimo de pared" 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 "" +"Anchura del pared que sustituirá a los elementos finos (según el tamaño mínimo del " +"elemento) del modelo. Si la anchura Mínima de la pared es menor que el grosor de la " +"característica, la pared será tan gruesa como la propia característica. Se expresa en " +"porcentaje sobre el diámetro de la boquilla" msgid "Detect narrow internal solid infill" msgstr "Detectar el relleno sólido interno estrecho" 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 "" -"Esta opción detectará automáticamente el área de relleno sólido interno " -"estrecho. Si se activa, se utilizará un patrón concéntrico para el área para " -"acelerar la impresión. De lo contrario, se utilizará por defecto un patrón " -"rectilíneo." +"Esta opción detectará automáticamente el área de relleno sólido interno estrecho. Si se " +"activa, se utilizará un patrón concéntrico para el área para acelerar la impresión. De lo " +"contrario, se utilizará por defecto un patrón rectilíneo." msgid "invalid value " -msgstr "" +msgstr "valor inválido " #, c-format, boost-format msgid " doesn't work at 100%% density " -msgstr "" +msgstr " no funciona con una densidad del 100%% " msgid "Invalid value when spiral vase mode is enabled: " -msgstr "" +msgstr "Valor no válido cuando está activado el modo jarrón espiral: " msgid "too large line width " -msgstr "" +msgstr "demasiada anchura de línea " msgid " not in range " -msgstr "" +msgstr " fuera de rango " msgid "Export 3MF" msgstr "Exportar 3MF" @@ -8844,55 +9045,57 @@ msgid "Export project as 3MF." msgstr "Exportar el proyecto como 3MF." msgid "Export slicing data" -msgstr "" +msgstr "Exportar datos de laminado" msgid "Export slicing data to a folder." -msgstr "" +msgstr "Exportar datos de laminado a una carpeta." msgid "Load slicing data" -msgstr "" +msgstr "Cargar datos de laminado" msgid "Load cached slicing data from directory" -msgstr "" +msgstr "Cargar datos de laminado en caché desde el directorio" msgid "Slice" msgstr "Laminar" msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" -msgstr "Cortar las placas: 0-todas las placas, i-placa i, otras-inválidas" +msgstr "Cortar las camas: 0-todas las camas, i-cama i, otras-inválidas" msgid "Show command help." msgstr "Mostrar la ayuda del comando." msgid "UpToDate" -msgstr "" +msgstr "Actualizado" msgid "Update the configs values of 3mf to latest." -msgstr "" +msgstr "Actualice los valores de configuración de 3mf a la última versión." msgid "mtcpp" msgstr "" msgid "max triangle count per plate for slicing." -msgstr "" +msgstr "número máximo de triángulos por plato para laminar." msgid "mstpp" msgstr "" msgid "max slicing time per plate in seconds." -msgstr "" +msgstr "tiempo máximo de corte por cama en segundos." msgid "No check" -msgstr "" +msgstr "No comprobado" msgid "Do not run any validity checks, such as gcode path conflicts check." msgstr "" +"No ejecute ninguna comprobación de validez, como la comprobación de conflictos de ruta de " +"gcode." msgid "Normative check" -msgstr "" +msgstr "Comprobación de normativa" msgid "Check the normative items." -msgstr "" +msgstr "Comprueba los elementos normativos." msgid "Output Model Info" msgstr "Información del modelo de salida" @@ -8907,10 +9110,10 @@ msgid "Export settings to a file." msgstr "Exporta los ajustes a un archivo." msgid "Send progress to pipe" -msgstr "" +msgstr "Enviar el progreso a la tubería" msgid "Send progress to pipe." -msgstr "" +msgstr "Enviar el progreso a la tubería." msgid "Arrange Options" msgstr "Opciones de posicionamiento" @@ -8940,23 +9143,23 @@ msgid "Load Filament Settings" msgstr "Cargar los ajustes del filamento" msgid "Load filament settings from the specified file list" -msgstr "" -"Cargar los ajustes del filamento desde la lista de archivos especificada" +msgstr "Cargar los ajustes del filamento desde la lista de archivos especificada" msgid "Skip Objects" -msgstr "" +msgstr "Omitir objetos" msgid "Skip some objects in this print" -msgstr "" +msgstr "Omitir algunos objetos en esta impresión" msgid "Data directory" -msgstr "" +msgstr "Directorio de datos" 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 "" +"Carga y almacena configuraciones en el directorio dado. Esto es útil para mantener " +"diferentes perfiles o incluir configuraciones desde un almacenamiento en red." msgid "Output directory" msgstr "Directorio de salida" @@ -8967,18 +9170,16 @@ msgstr "Directorio de salida para los archivos exportados." msgid "Debug level" msgstr "Nivel de depuración" -msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +msgid "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" msgstr "" -"Ajusta el nivel de registro de depuración. 0:fatal, 1:error, 2:advertencia, " -"3:información, 4:depuración, 5:rastreo\n" +"Ajusta el nivel de registro de depuración. 0:fatal, 1:error, 2:advertencia, 3:información, " +"4:depuración, 5:rastreo\n" msgid "Error in zip archive" msgstr "Error en el archivo zip" msgid "Generating walls" -msgstr "Generación de muros" +msgstr "Generación de paredes" msgid "Generating infill regions" msgstr "Generación de zonas de relleno" @@ -8987,7 +9188,7 @@ msgid "Generating infill toolpath" msgstr "Generación de la trayectoria de la herramienta de relleno" msgid "Detect overhangs for auto-lift" -msgstr "" +msgstr "Detección de voladizos para autoelevación" msgid "Generating support" msgstr "Generar soporte" @@ -8996,43 +9197,45 @@ msgid "Checking support necessity" msgstr "Comprobación de la necesidad de soporte" msgid "floating regions" -msgstr "" +msgstr "regiones flotantes" msgid "floating cantilever" -msgstr "" +msgstr "voladizo flotante" msgid "large overhangs" -msgstr "" +msgstr "voladizos grandes" #, 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 "" +"Parece que el objeto %s tiene %s. Por favor, reoriente el objeto o active la generación de " +"soporte." msgid "Optimizing toolpath" msgstr "Optimización de la trayectoria de la herramienta" msgid "Empty layers around bottom are replaced by nearest normal layers." -msgstr "" -"Las capas vacías del fondo se sustituyen por las capas normales más cercanas." +msgstr "Las capas vacías del fondo se sustituyen por las capas normales más cercanas." msgid "The model has too many empty layers." -msgstr "" +msgstr "El modelo tiene demasiadas capas vacías." msgid "Slicing mesh" msgstr "Malla de corte" 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 "" +"No se han detectado capas. Es posible que desee reparar su(s) archivo(s) STL o comprobar " +"su tamaño o grosor y volver a intentarlo.\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 "" +"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." #, c-format, boost-format msgid "Support: generate toolpath at layer %d" @@ -9066,7 +9269,7 @@ msgid "Support: propagate branches at layer %d" msgstr "Soporte: propagar ramas en la capa %d" msgid "PA Calibration" -msgstr "" +msgstr "Calibración PA" msgid "DDE" msgstr "" @@ -9075,28 +9278,28 @@ msgid "Bowden" msgstr "" msgid "Extruder type" -msgstr "" +msgstr "Tipo de extrusor" msgid "PA Tower" -msgstr "" +msgstr "Torre PA" msgid "PA Line" -msgstr "" +msgstr "Línea PA" msgid "Method" -msgstr "" +msgstr "Método" msgid "Start PA: " -msgstr "" +msgstr "Iniciar PA: " msgid "End PA: " -msgstr "" +msgstr "Finalizar PA: " msgid "PA step: " msgstr "" msgid "Print numbers" -msgstr "" +msgstr "Imprimir números" msgid "" "Please input valid values:\n" @@ -9104,9 +9307,13 @@ msgid "" "End PA: > Start PA\n" "PA step: >= 0.001)" msgstr "" +"Por favor, introduzca valores válidos:\n" +"Iniciar PA: >=0.0\n" +"Finalizar PA:> Iniciar PA\n" +"Paso PA:>=0.001)" msgid "Temperature calibration" -msgstr "" +msgstr "Calibración de temperatura" msgid "PLA" msgstr "" @@ -9127,16 +9334,16 @@ msgid "PET-CF" msgstr "" msgid "Filament type" -msgstr "" +msgstr "Tipo de filamento" msgid "Start temp: " -msgstr "" +msgstr "Temperatura inicial: " msgid "End end: " -msgstr "" +msgstr "Temperatura final: " msgid "Temp step: " -msgstr "" +msgstr "Paso temperatura: " msgid "" "Please input valid values:\n" @@ -9144,276 +9351,364 @@ msgid "" "End temp: >= 180\n" "Start temp > End temp + 5)" msgstr "" +"Por favor introduzca valores válidos:\n" +"Temperatura inicial: <= 350\n" +"Temperatura final: >= 180\n" +"Temperatura inicial > Temperatura final + 5)" msgid "Max volumetric speed test" -msgstr "" +msgstr "Test de velocidad volumétrica máxima" msgid "Start volumetric speed: " -msgstr "" +msgstr "Velocidad volumétrica inicial: " msgid "End volumetric speed: " -msgstr "" +msgstr "Velocidad volumétrica final: " msgid "step: " -msgstr "" +msgstr "paso: " 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 "VFA test" -msgstr "" +msgstr "Test VFA" msgid "Start speed: " -msgstr "" +msgstr "Velocidad inicial: " msgid "End speed: " -msgstr "" +msgstr "Velocidad final: " 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 "Start retraction length: " -msgstr "" +msgstr "Iniciar anchura de retracción: " msgid "End retraction length: " -msgstr "" +msgstr "Finalizar " msgid "mm/mm" msgstr "" msgid "Physical Printer" -msgstr "" +msgstr "Impresora física" msgid "Print Host upload" -msgstr "" +msgstr "Carga de Host de Impresión" msgid "Test" msgstr "" msgid "Could not get a valid Printer Host reference" -msgstr "" +msgstr "No se ha podido obtener una referencia de host de impresora válida" msgid "Success!" -msgstr "" +msgstr "¡Exitoso!" msgid "Refresh Printers" -msgstr "" +msgstr "Refrescar Impresoras" msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed " +"certificate." msgstr "" +"El archivo HTTPS CA es opcional. Solo es necesario si utiliza HTTPS con un certificado " +"autofirmado." msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "" +msgstr "Archivos de certificado (*.crt, *.pem)|*.crt;*.pem|Todos los archivos|*.*" msgid "Open CA certificate file" -msgstr "" +msgstr "Abrir archivo de certificado CA" #, c-format, boost-format msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store " -"or Keychain." +"On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "" +"En este sistema, %s utiliza certificados HTTPS del almacén de certificados o llavero del " +"sistema." msgid "" -"To use a custom CA file, please import your CA file into Certificate Store / " -"Keychain." +"To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "" +"Para utilizar un archivo de CA personalizado, importe su archivo de CA a Almacén de " +"certificados / Llavero." msgid "Connection to printers connected via the print host failed." -msgstr "" +msgstr "Ha fallado la conexión a impresoras conectadas a través del host de impresión." #: 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 "" +"Operaciones de la escena 3D\n" +"¿Sabías cómo controlar la vista y la selección de objetos/partes con el ratón y el panel " +"táctil en la escena 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 "" +"Herramienta de corte\n" +"¿Sabías que puedes cortar un modelo en cualquier ángulo y posición con la herramienta de " +"corte?" #: 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 "" +"Fijar modelo\n" +"¿Sabías que puedes arreglar un modelo 3D dañado para evitar muchos problemas de corte?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" "Timelapse\n" "Did you know that you can generate a timelapse video during each print?" msgstr "" +"Timelapse\n" +"¿Sabías que puedes generar un vídeo timelapse durante cada impresión?" #: 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 "" +"Auto-organizar\n" +"¿Sabías que puedes ordenar automáticamente todos los objetos de tu proyecto?" #: 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 "" +"Orientación automática\n" +"¿Sabía que puede girar los objetos a una orientación óptima para la impresión con un " +"simple clic?" #: 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 "" +"Colocar en la cara\n" +"¿Sabías que puedes orientar rápidamente un modelo para que una de sus caras quede sobre el " +"lecho de impresión? Seleccione la función \"Colocar en la cara\" o pulse la tecla 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 "" +"Lista de objetos\n" +"¿Sabías que puedes ver todos los objetos/piezas en una lista y cambiar los ajustes de cada " +"objeto/pieza?" #: 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 "" +"Simplificar modelo\n" +"¿Sabías que puedes reducir el número de triángulos de una malla utilizando la función " +"Simplificar malla? Haga clic con el botón derecho del ratón en el modelo y seleccione " +"Simplificar modelo. Más información en la documentació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 "" +"Tabla de parámetros de laminado\n" +"¿Sabía que puede ver todos los objetos/partes de una tabla y cambiar los parámetros de " +"cada objeto/parte?" #: 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 "" +"Dividir en Objetos/Partes\n" +"¿Sabías que puedes dividir un objeto grande en pequeños para colorearlo o imprimirlo " +"fácilmente?" #: 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 "" +"Restar una parte\n" +"¿Sabías que puedes sustraer una malla de otra utilizando el modificador de pieza Negativa? " +"De esta forma puedes, por ejemplo, crear agujeros fácilmente redimensionables directamente " +"en Orca Slicer. Más información en la documentación." #: 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" +"¿Sabías que puedes mejorar la calidad de impresión cortando un archivo STEP en lugar de un " +"STL?\n" +"Orca Slicer soporta el corte de archivos STEP, proporcionando resultados más suaves que un " +"STL de menor resolución. ¡Pruébalo!" #: 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 "" +"Ubicación de la costura Z\n" +"¿Sabías que puedes personalizar la ubicación de la costura Z, e incluso pintarla en tu " +"impresión, para tenerla en un lugar menos visible? Esto mejora el aspecto general de tu " +"modelo. ¡Compruébalo!" #: 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 "" +"Ajuste fino del caudal\n" +"¿Sabías que el caudal puede ajustarse para obtener impresiones aún más atractivas? " +"Dependiendo del material, puede mejorar el acabado general del modelo impreso realizando " +"algunos ajustes." #: 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 "" +"Divide tus impresiones en planchas\n" +"¿Sabías que puedes dividir un modelo con muchas piezas en camas individuales listas para " +"imprimir? Esto simplificará el proceso de seguimiento de todas las piezas." -#: 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 "" +"Acelere su impresión con la altura de capa adaptable\n" +"¿Sabías que puedes imprimir un modelo aún más rápido utilizando la opción Altura de capa " +"adaptable? ¡Compruébalo!" #: 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 "" +"Pintura de soportes\n" +"¿Sabías que puedes pintar la ubicación de los soportes? Esta función facilita la " +"colocación del material de soporte sólo en las secciones del modelo que realmente lo " +"necesitan." #: 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 "" +"Diferentes tipos de soportes\n" +"¿Sabías que puedes elegir entre varios tipos de soportes? Los soportes en forma de árbol " +"son ideales para modelos orgánicos, ahorran filamento y mejoran la velocidad de impresión. " +"¡Compruébalos!" #: 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 "" +"Impresión de filamento de seda\n" +"¿Sabías que el filamento de seda necesita una consideración especial para imprimirlo con " +"éxito? Se recomienda siempre una temperatura más alta y una velocidad más baja para " +"obtener los mejores resultados." #: 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 "" +"Borde de adherencia para una mejor adherencia\n" +"¿Sabía que cuando los modelos de impresión tienen una pequeña interfaz de contacto con la " +"superficie de impresión, se recomienda utilizar un borde de adherencia?" #: 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 "" +"Establecer parámetros para varios objetos\n" +"¿Sabías que puedes establecer parámetros de corte para todos los objetos seleccionados a " +"la vez?" #: resources/data/hints.ini: [hint:Stack objects] msgid "" "Stack objects\n" "Did you know that you can stack objects as a whole one?" msgstr "" +"Apilar objetos\n" +"¿Sabías que puedes apilar objetos como un todo?" #: 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 "" +"Descarga en soporte/objetos/relleno\n" +"¿Sabías que puedes ahorrarte el filamento desperdiciado vertiéndolo en soporte/objetos/" +"relleno durante el cambio de filamento?" #: 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 "" +"Mejorar la resistencia\n" +"¿Sabías que puedes utilizar más bucles de pared y mayor densidad de relleno disperso para " +"mejorar la resistencia del modelo?" +# 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 "Mejorar la fuerza\n" +# "¿Sabías que puedes utilizar más bucles de pared y mayor densidad de relleno disperso para mejorar la resistencia del modelo?" #~ msgid "Keep upper part" #~ msgstr "Mantener la parte superior" @@ -9426,55 +9721,20 @@ msgstr "" #~ msgid "Backup interval" #~ msgstr "Intervalo de copia de seguridad" -#~ msgid "" -#~ "Print a tower to prime material in nozzle after switching to a new " +#~ msgid "Print a tower to prime material in nozzle after switching to a new material." +#~ msgstr "" +#~ "Imprimir una torre para cebar el material en la boquilla después de cambiar a un nuevo " #~ "material." -#~ msgstr "" -#~ "Imprimir una torre para cebar el material en la boquilla después de " -#~ "cambiar a un nuevo material." - -#~ msgid "" -#~ "The configuration may be generated by a newer version of BambuStudio." -#~ msgstr "" -#~ "La configuración puede ser generada por una versión más reciente de " -#~ "BambuStudio." - -#~ msgid "" -#~ "BambuStudio 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 "" -#~ "BambuStudio terminará porque se está quedando sin memoria. Le " -#~ "agradeceremos que comunique el problema a nuestro equipo." - -#~ msgid "" -#~ "BambuStudio will terminate because of a localization error. It will be " -#~ "appreciated if you report the specific scenario this issue happened." -#~ msgstr "" -#~ "BambuStudio terminará debido a un error de localización. Le agradeceremos " -#~ "que nos informe del escenario específico en el que se ha producido este " -#~ "problema." - -#, boost-format -#~ msgid "BambuStudio got an unhandled exception: %1%" -#~ msgstr "" -#~ "BambuStudio recibió una notificación de excepción no controlada: %1%." - -#~ msgid "" -#~ "BambuStudio configuration file may be corrupted and is not abled to be " -#~ "parsed.Please delete the file and try again." -#~ msgstr "" -#~ "El archivo de configuración de OrcaSlicer puede estar dañado y no puede " -#~ "ser procesado." #~ msgid "Loading user presets..." #~ msgstr "Cargando los preajustes del usuario..." #~ msgid "" -#~ "Orca Slicer is based on PrusaSlicer by Prusa Research, which is from " -#~ "Slic3r by Alessandro Ranellucci and the RepRap community" +#~ "Orca Slicer is based on PrusaSlicer by Prusa Research, which is from Slic3r by " +#~ "Alessandro Ranellucci and the RepRap community" #~ msgstr "" -#~ "Orca Slicer se basa en PrusaSlicer de Prusa Research, que proviene de " -#~ "Slic3r de Alessandro Ranellucci y la comunidad RepRap" +#~ "Orca Slicer se basa en PrusaSlicer de Prusa Research, que proviene de Slic3r de " +#~ "Alessandro Ranellucci y la comunidad RepRap" #~ msgid "Export G-Code." #~ msgstr "Exportar Código G." @@ -9483,22 +9743,20 @@ msgstr "" #~ msgstr "Exportar." #~ msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files." -#~ msgstr "" -#~ "Importación de datos geométricos desde archivos STL/STEP/3MF/OBJ/AMF." +#~ msgstr "Importación de datos geométricos desde archivos STL/STEP/3MF/OBJ/AMF." #, boost-format #~ msgid "Copying directory %1% to %2% failed: %3%" #~ msgstr "La copia del directorio %1% a %2% ha fallado: %3%" #~ msgid "" -#~ "This controls brim position including outer side of models, inner side of " -#~ "holes or both. Auto means both the brim position and brim width is " -#~ "analysed and calculated automatically" +#~ "This controls brim position including outer side of models, inner side of holes or " +#~ "both. Auto means both the brim position and brim width is analysed and calculated " +#~ "automatically" #~ msgstr "" -#~ "Esto controla la posición del borde, incluyendo el lado exterior de los " -#~ "modelos, el lado interior de los huecos o ambos. Auto significa que tanto " -#~ "la posición como la anchura del borde se analizan y calculan " -#~ "automáticamente" +#~ "Esto controla la posición del borde de adherencia, incluyendo el lado exterior de los " +#~ "modelos, el lado interior de los huecos o ambos. Auto significa que tanto la posición " +#~ "como la anchura del borde de adherencia se analizan y calculan automáticamente" #~ msgid "Choose one file (gcode/.gco/.g/.ngc/ngc):" #~ msgstr "Elija un archivo (gcode/.gco/.g/.ngc/ngc):" @@ -9512,19 +9770,13 @@ msgstr "" #~ msgid "" #~ "\n" -#~ "%1% is too close to exclusion area, there will be collisions when " -#~ "printing." +#~ "%1% is too close to exclusion area, there will be collisions when printing." #~ msgstr "" #~ "\n" -#~ "%1% está demasiado cerca del área de exclusión, habrá colisiones al " -#~ "imprimir." +#~ "%1% está demasiado cerca del área de exclusión, habrá colisiones al imprimir." -#~ msgid "" -#~ "%1% is too close to exclusion area, there will be collisions when " -#~ "printing." -#~ msgstr "" -#~ "%1% está demasiado cerca del área de exclusión, habrá colisiones al " -#~ "imprimir." +#~ msgid "%1% is too close to exclusion area, there will be collisions when printing." +#~ msgstr "%1% está demasiado cerca del área de exclusión, habrá colisiones al imprimir." #~ msgid "0%" #~ msgstr "0%" @@ -9533,27 +9785,24 @@ msgstr "" #~ "An object is layed over the boundary of plate.\n" #~ "Please solve the problem by moving it totally inside or outside plate." #~ msgstr "" -#~ "Un objeto está colocado sobre el límite de la placa.\n" -#~ "Por favor, resuelva el problema moviéndolo totalmente dentro o fuera de " -#~ "la placa." +#~ "Un objeto está colocado sobre el límite de la cama.\n" +#~ "Por favor, resuelva el problema moviéndolo totalmente dentro o fuera de la cama." #~ msgid "" #~ "Arachne engine only works when overhang slowing down is disabled.\n" -#~ "This may cause decline in the quality of overhang surface when print " -#~ "fastly\n" +#~ "This may cause decline in the quality of overhang surface when print fastly\n" #~ msgstr "\n" #~ msgid "Auto arrange" #~ msgstr "Auto posicionamiento" #~ 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 project." +#~ "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 project." #~ msgstr "" -#~ "Orienta automáticamente los objetos seleccionados o todos los objetos.Si " -#~ "hay objetos seleccionados, sólo orienta los seleccionados.En caso " -#~ "contrario, orienta todos los objetos del proyecto." +#~ "Orienta automáticamente los objetos seleccionados o todos los objetos.Si hay objetos " +#~ "seleccionados, sólo orienta los seleccionados.En caso contrario, orienta todos los " +#~ "objetos del proyecto." #~ msgid "Aux Cooling" #~ msgstr "Enfriamiento Auxiliar" @@ -9562,12 +9811,11 @@ msgstr "" #~ msgstr "Evitar cruzar el muro en los desplazamientos" #~ msgid "" -#~ "Bed temperature is higher than vitrification temperature of this " -#~ "filament.\n" +#~ "Bed temperature is higher than vitrification temperature of this filament.\n" #~ "This may cause nozzle blocked and printing failure" #~ msgstr "" -#~ "La temperatura del lecho es superior a la temperatura de vitrificación de " -#~ "este filamento.\n" +#~ "La temperatura del lecho es superior a la temperatura de vitrificación de este " +#~ "filamento.\n" #~ "Esto puede causar el bloqueo de la boquilla y el fracaso de la impresión" #~ msgid "Choose one or more files (3mf/step/stl/obj/amf):" @@ -9577,12 +9825,11 @@ msgstr "" #~ msgstr "Borrar todo" #~ msgid "" -#~ "Clearance radius around extruder. Used as input of auto-arrange to avoid " -#~ "collision when print object by object" +#~ "Clearance radius around extruder. Used as input of auto-arrange to avoid collision when " +#~ "print object by object" #~ msgstr "" -#~ "Radio de separación alrededor del extrusor. Se utiliza como entrada de " -#~ "auto-organización para evitar la colisión cuando se imprime objeto por " -#~ "objeto" +#~ "Radio de separación alrededor del extrusor. Se utiliza como entrada de auto-" +#~ "organización para evitar la colisión cuando se imprime objeto por objeto" #~ msgid "Click the pencil icon to edit the filament." #~ msgstr "Haga clic en el icono del lápiz para editar el filamento." @@ -9621,14 +9868,13 @@ msgstr "" #~ msgstr "Mostrar los triángulos de los modelos" #~ msgid "" -#~ "Do not recommand 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" +#~ "Do not recommand 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 cama de la otra capa sea " -#~ "inferior a la de la capa inicial por más de este umbral. Una temperatura " -#~ "demasiado baja de la otra capa puede hacer que el modelo se desprenda de " -#~ "la placa de impresión." +#~ "No se recomienda que la temperatura de la cama de la otra capa sea inferior a la de la " +#~ "capa inicial por más de este umbral. Una temperatura demasiado baja de la otra capa " +#~ "puede hacer que el modelo se desprenda de la cama de impresión." #~ msgid "" #~ "Do you want to synchronize your personal data from Bambu Cloud? \n" @@ -9652,24 +9898,22 @@ msgstr "" #~ msgstr "\n" #~ msgid "" -#~ "Don't retract when the travel is in infill area absolutely. That means " -#~ "the oozing can't been seen" +#~ "Don't retract when the travel is in infill area absolutely. That means the oozing can't " +#~ "been seen" #~ msgstr "" -#~ "No se repliegue cuando el recorrido esté en zona de relleno " -#~ "absolutamente. Eso significa que el rezago no puede ser visto" +#~ "No se repliegue cuando el recorrido esté en zona de relleno absolutamente. Eso " +#~ "significa que el rezago no puede ser visto" #~ msgid "" -#~ "Enabling this option means the height of every layer except the first " -#~ "will be automatically calculated during slicing according to the slope of " -#~ "the model’s surface.\n" -#~ "Note that this option only takes effect if no prime tower is generated in " -#~ "current plate." +#~ "Enabling this option means the height of every layer except the first will be " +#~ "automatically calculated during slicing according to the slope of the model’s surface.\n" +#~ "Note that this option only takes effect if no prime tower is generated in current plate." #~ msgstr "" -#~ "Si se activa esta opción, la altura de cada capa, excepto la primera, se " -#~ "calculará automáticamente durante el corte en función de la pendiente de " -#~ "la superficie del modelo.\n" -#~ "Tenga en cuenta que esta opción sólo surte efecto si no se genera ninguna " -#~ "torre principal en la placa actual." +#~ "Si se activa esta opción, la altura de cada capa, excepto la primera, se calculará " +#~ "automáticamente durante el corte en función de la pendiente de la superficie del " +#~ "modelo.\n" +#~ "Tenga en cuenta que esta opción sólo surte efecto si no se genera ninguna torre de " +#~ "purga en la cama actual." #~ msgid "Enter a search term" #~ msgstr "Teclea un término de búsqueda" @@ -9681,16 +9925,16 @@ msgstr "" #~ msgstr "Error en la línea %1%:\n" #~ msgid "Export Sliced File" -#~ msgstr "Exportar Archivo Rebanado" +#~ msgstr "Exportar Archivo laminado" #~ msgid "Export current Sliced file" -#~ msgstr "Exportar el archivo rebanado actual" +#~ msgstr "Exportar el archivo laminado actual" #~ msgid "Export ok." #~ msgstr "Exportación correcta." #~ msgid "Export sliced file" -#~ msgstr "Exportar archivo rebanado" +#~ msgstr "Exportar archivo laminado" #~ msgid "Extruder position" #~ msgstr "Posición del extrusor" @@ -9705,19 +9949,18 @@ msgstr "" #~ msgstr "Filamento N XX" #~ msgid "" -#~ "Filament to print support and skirt. 0 means no specific filament for " -#~ "support and current filament is used" +#~ "Filament to print support and skirt. 0 means no specific filament for support and " +#~ "current filament is used" #~ msgstr "" -#~ "Filamento para imprimir el soporte y el faldón. 0 significa que no hay " -#~ "filamento específico para el soporte y se utiliza el filamento actual" +#~ "Filamento para imprimir el soporte y el faldón. 0 significa que no hay filamento " +#~ "específico para el soporte y se utiliza el filamento actual" #~ msgid "" -#~ "Filament to print support interface. 0 means no specific filament for " -#~ "support interface and current filament is used" +#~ "Filament to print support interface. 0 means no specific filament for support interface " +#~ "and current filament is used" #~ msgstr "" -#~ "Filamento para imprimir la interfaz de soporte. 0 significa que no hay " -#~ "filamento específico para la interfaz de soporte y se utiliza el " -#~ "filamento actual" +#~ "Filamento para imprimir la interfaz de soporte. 0 significa que no hay filamento " +#~ "específico para la interfaz de soporte y se utiliza el filamento actual" #~ msgid "Filaments Selection" #~ msgstr "Selección de filamentos" @@ -9738,13 +9981,13 @@ msgstr "" #~ msgstr "Filamento limpiado" #~ 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" +#~ "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" #~ msgstr "" -#~ "Fuerza al ventilador de refrigeración a una velocidad específica cuando " -#~ "el grado de voladizo de la pieza impresa supera este valor. Expresado en " -#~ "porcentaje, indica la anchura de la línea sin apoyo de la capa inferior." +#~ "Fuerza al ventilador de refrigeración a una velocidad específica cuando el grado de " +#~ "voladizo de la pieza impresa supera este valor. Expresado en porcentaje, indica la " +#~ "anchura de la línea sin apoyo de la capa inferior." #~ msgid "Fragment Filter" #~ msgstr "Filtro de fragmentos" @@ -9766,12 +10009,11 @@ msgstr "" #~ msgstr "Altura:" #~ msgid "" -#~ "Height of the clearance cylinder around extruder. Used as input of auto-" -#~ "arrange to avoid collision when print object by object" +#~ "Height of the clearance cylinder around extruder. Used as input of auto-arrange to " +#~ "avoid collision when print object by object" #~ msgstr "" -#~ "Altura del cilindro de separación alrededor del extrusor. Se utiliza como " -#~ "entrada de auto-organización para evitar la colisión cuando se imprime " -#~ "objeto por objeto." +#~ "Altura del cilindro de separación alrededor del extrusor. Se utiliza como entrada de " +#~ "auto-organización para evitar la colisión cuando se imprime objeto por objeto." #~ msgid "Import 3MF/STL/STEP/OBJ/AMF" #~ msgstr "Importar 3MF/STL/STEP/OBJ/AMF" @@ -9788,12 +10030,10 @@ msgstr "" #~ msgid "Inner wall speed" #~ msgstr "Velocidad de la pared interior" -#~ msgid "" -#~ "It seems object %s needs support to print. Please enable support " -#~ "generation." +#~ msgid "It seems object %s needs support to print. Please enable support generation." #~ msgstr "" -#~ "Parece que el objeto %s necesita soporte para imprimir. Por favor, active " -#~ "la generación de soporte." +#~ "Parece que el objeto %s necesita soporte para imprimir. Por favor, active la generación " +#~ "de soporte." #~ msgid "Line type" #~ msgstr "Tipo de línea" @@ -9805,11 +10045,11 @@ msgstr "" #~ msgstr "Distancia máxima de desvío de viaje" #~ msgid "" -#~ "Maximum detour distance for avoiding crossing wall. Don't detour if the " -#~ "detour distance is large than this value" +#~ "Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance " +#~ "is large than this value" #~ msgstr "" -#~ "Distancia máxima de desvío para evitar cruzar el muro. No se desvía si la " -#~ "distancia de desvío es mayor que este valor" +#~ "Distancia máxima de desvío para evitar cruzar el muro. No se desvía si la distancia de " +#~ "desvío es mayor que este valor" #~ msgid "Module" #~ msgstr "Módulo" @@ -9848,14 +10088,13 @@ msgstr "" #~ msgstr "\n" #~ msgid "Plate %d: %s does not support filament %s.\n" -#~ msgstr "La placa %d: %s no admite el filamento %s.\n" +#~ msgstr "La cama %d: %s no admite el filamento %s.\n" #~ msgid "Plate %d: %s does not support filament %s (%s).\n" #~ msgstr "\n" #~ msgid "" -#~ "Please check the following infomation and click Confirm to continue " -#~ "sending print:\n" +#~ "Please check the following infomation and click Confirm to continue sending print:\n" #~ msgstr "\n" #~ msgid "Please fill report first." @@ -9881,23 +10120,20 @@ msgstr "" #~ msgstr "Selección de la impresora" #~ 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" +#~ "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" #~ msgstr "" -#~ "La purga tras el cambio de filamento se realizará dentro del relleno de " -#~ "los objetos. Esto puede reducir la cantidad de residuos y disminuir el " -#~ "tiempo de impresión. Si las paredes se imprimen con filamento " -#~ "transparente, el mezclado se podrá ver en el exterior." +#~ "La purga tras el cambio de filamento se realizará dentro del relleno de los objetos. " +#~ "Esto puede reducir la cantidad de residuos y disminuir el tiempo de impresión. Si las " +#~ "paredes se imprimen con filamento transparente, el mezclado se podrá ver en el exterior." #~ msgid "" -#~ "Purging after filament change will be done inside objects' support. This " -#~ "may lower the amount of waste and decrease the print time" +#~ "Purging after filament change will be done inside objects' support. This may lower the " +#~ "amount of waste and decrease the print time" #~ msgstr "" -#~ "La purga después del cambio de filamento se hará dentro del soporte de " -#~ "los objetos. Esto puede reducir la cantidad de residuos y disminuir el " -#~ "tiempo de impresión." +#~ "La purga después del cambio de filamento se hará dentro del soporte de los objetos. " +#~ "Esto puede reducir la cantidad de residuos y disminuir el tiempo de impresión." #~ msgid "" #~ "Push new filament \n" @@ -9907,15 +10143,15 @@ msgstr "" #~ "en el extrusor" #~ msgid "" -#~ "Record timelapse video of printing without showing toolhead. In this mode " -#~ "the toolhead docks near the excess chute at each layer change, and then a " -#~ "snapshot is taken with the chamber camera. When printing finishes a " -#~ "timelapse video is composed of all the snapshots." +#~ "Record timelapse video of printing without showing toolhead. In this mode the toolhead " +#~ "docks near the excess chute at each layer change, and then a snapshot is taken with the " +#~ "chamber camera. When printing finishes a timelapse video is composed of all the " +#~ "snapshots." #~ msgstr "" -#~ "Record timelapse video of printing without showing the toolhead. In this " -#~ "mode the toolhead docks near the excess chute at each layer change, and " -#~ "then a snapshot is taken with the chamber camera. When printing finishes, " -#~ "a timelapse video is created from all the snapshots." +#~ "Record timelapse video of printing without showing the toolhead. In this mode the " +#~ "toolhead docks near the excess chute at each layer change, and then a snapshot is taken " +#~ "with the chamber camera. When printing finishes, a timelapse video is created from all " +#~ "the snapshots." #~ msgid "Reduce Triangles" #~ msgstr "Reducir los triángulos" @@ -9967,27 +10203,24 @@ msgstr "" #~ msgid "" #~ "Spiral mode only works when wall loops is 1, \n" -#~ "support is disabled, top shell layers is 0 and sparse infill density is " -#~ "0\n" +#~ "support is disabled, top shell layers is 0 and sparse infill density is 0\n" #~ msgstr "" #~ "El modo espiral sólo funciona cuando los bucles de pared son 1, \n" -#~ "el soporte está desactivado, las capas superiores de la cáscara es 0 y la " -#~ "densidad de relleno dispersa es 0\n" +#~ "el soporte está desactivado, las capas superiores de la cáscara es 0 y la densidad de " +#~ "relleno dispersa es 0\n" #~ msgid "Successfully sent.Will automatically jump to the device page in %s s" -#~ msgstr "" -#~ "Enviado con éxito. Saltará automáticamente a la página del dispositivo en " -#~ "%s s" +#~ msgstr "Enviado con éxito. Saltará automáticamente a la página del dispositivo en %s s" #~ msgid "" -#~ "Support layer uses layer height independent with object layer. This is to " -#~ "support custom support gap,but may cause extra filament switches if " -#~ "support is specified as different extruder with object" +#~ "Support layer uses layer height independent with object layer. This is to support " +#~ "custom support gap,but may cause extra filament switches if support is specified as " +#~ "different extruder with object" #~ msgstr "" -#~ "La capa de soporte utiliza la altura de la capa independientemente de la " -#~ "capa del objeto. Esto es para soportar la brecha de soporte " -#~ "personalizada, pero puede causar cambios de filamento adicionales si el " -#~ "soporte se especifica como un extrusor diferente con el objeto" +#~ "La capa de soporte utiliza la altura de la capa independientemente de la capa del " +#~ "objeto. Esto es para soportar la brecha de soporte personalizada, pero puede causar " +#~ "cambios de filamento adicionales si el soporte se especifica como un extrusor diferente " +#~ "con el objeto" #~ msgid "" #~ "Switch to rectilinear pattern?\n" @@ -10002,71 +10235,64 @@ msgstr "" #~ msgstr "" #~ "¿Cambiar al patrón en zig-zag?\n" #~ "Sí - cambia automáticamente al patrón en zig-zag\n" -#~ "No - restablecer automáticamente la densidad al valor por defecto que no " -#~ "es del 100%.\n" +#~ "No - restablecer automáticamente la densidad al valor por defecto que no es del 100%.\n" #~ msgid "Swith cloud environment, Please login again!" #~ msgstr "Cambiar el entorno de la nube, ¡Por favor, inicie sesión de nuevo!" #~ msgid "" -#~ "The 3mf's version %s is newer than %s's version %s, Found following keys " -#~ "unrecognized:\n" +#~ "The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:\n" #~ msgstr "" -#~ "La versión %s de 3mf es más reciente que la versión %s de %s, se han " -#~ "encontrado las siguientes claves no reconocidas:\n" +#~ "La versión %s de 3mf es más reciente que la versión %s de %s, se han encontrado las " +#~ "siguientes claves no reconocidas:\n" #~ msgid "" -#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade " -#~ "your software.\n" +#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software.\n" #~ msgstr "\n" #~ msgid "The Config is not compatible and can not be loaded." #~ msgstr "La configuración no es compatible y no se puede cargar." #~ msgid "" -#~ "The firmware versions of printer and AMS are too low.Please update to the " -#~ "latest version before sending the print job" +#~ "The firmware versions of printer and AMS are too low.Please update to the latest " +#~ "version before sending the print job" #~ msgstr "" -#~ "Las versiones del firmware de la impresora y del AMS son demasiado " -#~ "antiguas, por favor, actualice a la última versión antes de enviar el " -#~ "trabajo de impresión." +#~ "Las versiones del firmware de la impresora y del AMS son demasiado antiguas, por favor, " +#~ "actualice a la última versión antes de enviar el trabajo de impresión." #~ msgid "" -#~ "The model has overlapping or self-intersecting facets. I tried to repair " -#~ "it, however you might want to check the results or repair the input file " -#~ "and retry." +#~ "The model has overlapping or self-intersecting facets. I tried to repair it, however " +#~ "you might want to check the results or repair the input file and retry." #~ msgstr "" -#~ "El modelo tiene facetas superpuestas o auto-intersecadas. He intentado " -#~ "repararlo, sin embargo, es posible que desee comprobar los resultados o " -#~ "reparar el archivo de entrada y volver a intentarlo." +#~ "El modelo tiene facetas superpuestas o auto-intersecadas. He intentado repararlo, sin " +#~ "embargo, es posible que desee comprobar los resultados o reparar el archivo de entrada " +#~ "y volver a intentarlo." #~ msgid "" -#~ "The printer type used to generate G-code is not the same type as the " -#~ "currently selected physical printer. It is recommend to re-slice by " -#~ "selecting the same printer type.\n" +#~ "The printer type used to generate G-code is not the same type as the currently selected " +#~ "physical printer. It is recommend to re-slice by selecting the same printer type.\n" #~ msgstr "\n" #~ 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" +#~ "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" #~ msgstr "" -#~ "Este objeto se utilizará para purgar la boquilla después de un cambio de " -#~ "filamento para ahorrar filamento y disminuir el tiempo de impresión. Los " -#~ "colores de los objetos se mezclarán como resultado" +#~ "Este objeto se utilizará para purgar la boquilla después de un cambio de filamento para " +#~ "ahorrar filamento y disminuir el tiempo de impresión. Los colores de los objetos se " +#~ "mezclarán como resultado" #~ 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. Zero means no limit" +#~ "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. Zero means no limit" #~ msgstr "" -#~ "Este ajuste representa la cantidad de volumen de filamento que se puede " -#~ "fundir y extruir por segundo. La velocidad de impresión está limitada por " -#~ "la velocidad volumétrica máxima, en caso de ajustar una velocidad " -#~ "demasiado alta y poco razonable. Cero significa que no hay límite" +#~ "Este ajuste representa la cantidad de volumen de filamento que se puede fundir y " +#~ "extruir por segundo. La velocidad de impresión está limitada por la velocidad " +#~ "volumétrica máxima, en caso de ajustar una velocidad demasiado alta y poco razonable. " +#~ "Cero significa que no hay límite" #~ msgid "Timelapse Wipe Tower" -#~ msgstr "Timelapse Torre de limpieza" +#~ msgstr "Timelapse torre de purga" #~ msgid "Translation" #~ msgstr "Translación" @@ -10084,10 +10310,10 @@ msgstr "" #~ msgstr "Esperando" #~ 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\".\n" +#~ "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\".\n" #~ msgstr "\n" #~ msgid "" @@ -10103,15 +10329,11 @@ msgstr "" #~ msgid " Object:" #~ msgstr "Objeto" -#~ msgid "" -#~ " is too close to exclusion area, there may be collisions when printing.\n" +#~ msgid " is too close to exclusion area, there may be collisions when printing.\n" #~ msgstr "\n" -#~ msgid "" -#~ " is too close to exclusion area, there will be collisions when printing.\n" -#~ msgstr "" -#~ " está demasiado cerca del área de exclusión, habrá colisiones al " -#~ "imprimir.\n" +#~ msgid " is too close to exclusion area, there will be collisions when printing.\n" +#~ msgstr " está demasiado cerca del área de exclusión, habrá colisiones al imprimir.\n" #~ msgid " is too close to others, there may be collisions when printing.\n" #~ msgstr "\n" @@ -10126,12 +10348,11 @@ msgstr "" #~ msgstr "normal" #~ msgid "" -#~ "normal(auto) and tree(auto) is used to generate support automatically. If " -#~ "normal or tree is selected, only support enforcers are generated" +#~ "normal(auto) and tree(auto) is used to generate support automatically. If normal or " +#~ "tree is selected, only support enforcers are generated" #~ msgstr "" -#~ "normal(auto) y tree(auto) se utiliza para generar soporte " -#~ "automáticamente. Si se selecciona normal o árbol, sólo se generan los " -#~ "soportes" +#~ "normal(auto) y tree(auto) se utiliza para generar soporte automáticamente. Si se " +#~ "selecciona normal o árbol, sólo se generan los soportes" #~ msgid "the 3mf is not compatible, load geometry data only!" #~ msgstr "el 3mf no es compatible, ¡cargue sólo los datos geométricos!" diff --git a/bbl/i18n/fr/OrcaSlicer_fr.po b/bbl/i18n/fr/OrcaSlicer_fr.po index 246de337bb..5cb5d140ad 100644 --- a/bbl/i18n/fr/OrcaSlicer_fr.po +++ b/bbl/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-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-07-07 00:37+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n==0 || n==1) ? 0 : 1;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.3.1\n" msgid "Supports Painting" msgstr "Peindre les supports" @@ -1939,8 +1939,11 @@ msgstr "" msgid "You need to select the material type and color first." msgstr "Vous devez d’abord sélectionner le type de matériau et la couleur." -msgid "Other color" -msgstr "Autres couleurs" +msgid "Other Color" +msgstr "" + +msgid "Custom Color" +msgstr "" msgid "Dynamic flow calibration" msgstr "Calibration dynamique du débit" @@ -3419,10 +3422,10 @@ msgid "Pressure advance" msgstr "Pressure Advance" msgid "Retraction test" -msgstr "" +msgstr "Test de rétraction" msgid "Orca Tolerance Test" -msgstr "" +msgstr "Test de tolérance Orca" msgid "Max flowrate" msgstr "Débit maximal" @@ -5620,10 +5623,10 @@ msgid "Printable space" msgstr "Espace imprimable" msgid "Cooling Fan" -msgstr "" +msgstr "Ventilateur de refroidissement" msgid "Fan speed-up time" -msgstr "" +msgstr "Durée d’accélération du ventilateur" msgid "Extruder Clearance" msgstr "Tête d’impression" @@ -6634,6 +6637,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "Aucune extrusion dans les paramètres actuels." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -7310,18 +7316,12 @@ msgid "Internal bridge support thickness" msgstr "Épaisseur des supports de ponts internes" msgid "" -"If enabled, Studio will generate support loops 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" +"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 cette option est activée, Bambu Studio génère des boucles de support sous " -"les contours des ponts internes. Ces boucles de support peuvent empêcher les " -"ponts internes de s'extruder dans le vide et améliorer la qualité de la " -"surface supérieure, en particulier lorsque la densité de remplissage est " -"faible. Cette valeur détermine l'épaisseur de boucles de soutien. Une valeur " -"à 0 signifie que cette fonctionnalité est désactivée" msgid "Top surface pattern" msgstr "Motif des surfaces supérieures" @@ -7712,6 +7712,64 @@ msgstr "Support cubique" msgid "Lightning" msgstr "Éclair" +msgid "Sparse infill anchor length" +msgstr "Longueur de l’ancrage de remplissage interne" + +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 "" +"Connecter une ligne de remplissage à un périmètre interne avec un court " +"segment de périmètre supplémentaire. S’il est exprimé en pourcentage " +"(exemple : 15%), il est calculé sur la largeur de l’extrusion de " +"remplissage. Si aucun segment de périmètre plus court que infill_anchor_max " +"n’est trouvé, la ligne de remplissage est connectée à un segment de " +"périmètre d’un seul côté et la longueur du segment de périmètre pris est " +"limitée à ce paramètre, mais pas plus long que anchor_length_max.\n" +"Une valeur à 0 désactive les périmètres d’ancrage connectés à une seule " +"ligne de remplissage." + +msgid "0 (no open anchors)" +msgstr "0 (pas d’ancres ouvertes)" + +msgid "1000 (unlimited)" +msgstr "1000 (illimité)" + +msgid "Maximum length of the infill anchor" +msgstr "Longueur maximale de l’ancrage de remplissage" + +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 "" +"Connecter une ligne de remplissage à un périmètre interne avec un court " +"segment de périmètre supplémentaire. S’il est exprimé en pourcentage " +"(exemple : 15 %), il est calculé sur la largeur de l’extrusion de " +"remplissage. Slic3r essaie de connecter deux lignes de remplissage proches à " +"un court segment de périmètre. Si aucun segment de périmètre plus court que " +"ce paramètre n’est trouvé, la ligne de remplissage est connectée à un " +"segment de périmètre sur un seul côté et la longueur du segment de périmètre " +"pris est limitée à infill_anchor, mais pas plus longue que ce paramètre.\n" +"S’il est défini sur 0, l’ancien algorithme de connexion de remplissage sera " +"utilisé, il devrait créer le même résultat qu’avec 1000 et 0." + +msgid "0 (Simple connect)" +msgstr "0 (connexions simples)" + msgid "Acceleration of outer walls" msgstr "Accélération des parois extérieures" @@ -7831,12 +7889,15 @@ msgid "Travel speed of initial layer" msgstr "Vitesse de déplacement de la couche initiale" msgid "Number of slow layers" -msgstr "" +msgstr "Nombre de couches lentes" 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 "" +"Les premières couches sont imprimées plus lentement que la normale. La " +"vitesse augmente progressivement de manière linéaire sur le nombre de " +"couches spécifié." msgid "Initial layer nozzle temperature" msgstr "Température de la buse de la couche initiale" @@ -7856,9 +7917,15 @@ msgid "" "\"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 vitesse du ventilateur augmentera de manière linéaire à partir de zéro à " +"la couche \"close_fan_the_first_x_layers\" jusqu’au maximum à la couche " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" sera ignoré s’il est " +"inférieur à \"close_fan_the_first_x_layers\", auquel cas le ventilateur " +"fonctionnera à la vitesse maximale autorisée à la couche " +"\"close_fan_the_first_x_layers\" + 1." msgid "Support interface fan speed" -msgstr "" +msgstr "Vitesse du ventilateur" msgid "" "This fan speed is enforced during all support interfaces, to be able to " @@ -7866,6 +7933,11 @@ msgid "" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." msgstr "" +"Cette vitesse de ventilateur est appliquée pendant toutes les interfaces de " +"support, pour pouvoir affaiblir leur liaison avec une vitesse de ventilateur " +"élevée.\n" +"Réglez sur -1 pour désactiver ce remplacement.\n" +"Ne peut être remplacé que par disable_fan_first_layers." msgid "" "Randomly jitter while printing the wall, so that the surface has a rough " @@ -8005,15 +8077,25 @@ msgid "" "gcode' is activated.\n" "Use 0 to deactivate." msgstr "" +"Démarrer le ventilateur plus tôt de ce nombre de secondes par rapport au " +"démarrage cible (vous pouvez utiliser des fractions de secondes). Cela " +"suppose une accélération infinie pour cette estimation de durée et ne prend " +"en compte que les mouvements G1 et G0 (l’ajustement arc n’est pas pris en " +"charge).\n" +"Cela ne déplacera pas les commandes de ventilateur des G-codes personnalisés " +"(ils agissent comme une sorte de \"barrière\").\n" +"Cela ne déplacera pas les commandes de ventilateur dans le G-code de " +"démarrage si seul le ‘G-code de démarrage personnalisé’ est activé.\n" +"Utiliser 0 pour désactiver." msgid "Only overhangs" -msgstr "" +msgstr "Sur les surplombs uniquement" msgid "Will only take into account the delay for the cooling of overhangs." -msgstr "" +msgstr "Ne prend en compte que le délai de refroidissement des surplombs." msgid "Fan kick-start time" -msgstr "" +msgstr "Durée de démarrage du ventilateur" msgid "" "Emit a max fan speed command for this amount of seconds before reducing to " @@ -8022,6 +8104,13 @@ msgid "" "fan started spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" +"Émettre une commande de vitesse maximale du ventilateur pendant ce nombre de " +"secondes avant de réduire à la vitesse cible pour démarrer le ventilateur de " +"refroidissement.\n" +"Ceci est utile pour les ventilateurs où un faible PWM/puissance peut être " +"insuffisant pour redémarrer le ventilateur après un arrêt, ou pour faire " +"démarrer le ventilateur plus rapidement.\n" +"Mettre à 0 pour désactiver." msgid "G-code flavor" msgstr "Version de G-code" @@ -8599,6 +8688,14 @@ msgstr "Arrière" msgid "Random" msgstr "Aléatoire" +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 "Seam gap" msgstr "Distance de la couture" @@ -8608,10 +8705,10 @@ msgid "" "This amount can be specified in millimeters or as a percentage of the " "current extruder diameter. The default value for this parameter is 15%." msgstr "" -"Lors de l’extrusion d’une boucle fermée, la boucle est interrompue et " -"raccourcie un peu pour réduire la couture.\n" -"Peut être en mm ou en % du diamètre actuel de la buse. La valeur par défaut " -"est de 15%." +"Afin de réduire la visibilité de la couture dans une extrusion en boucle " +"fermée, la boucle est interrompue et raccourcie d’une valeur spécifiée.\n" +"Cette quantité peut être spécifiée en millimètres ou en pourcentage du " +"diamètre actuel de la buse. La valeur par défaut de ce paramètre est 15 %." msgid "Role base wipe speed" msgstr "Vitesse d’essuyage basée sur la vitesse d’extrusion" @@ -8669,6 +8766,12 @@ msgstr "Nombre de lignes de la jupe" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "Nombre de ligne de la jupe. Une valeur à 0 signifie aucune jupe" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + 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" @@ -9798,31 +9901,31 @@ msgstr "" "Fin > Début + Intervalle)" msgid "Start retraction length: " -msgstr "" +msgstr "Longueur de rétraction de début: " msgid "End retraction length: " -msgstr "" +msgstr "Longueur de rétraction de fin: " msgid "mm/mm" -msgstr "" +msgstr "mm/mm" msgid "Physical Printer" msgstr "Imprimante Physique" msgid "Print Host upload" -msgstr "" +msgstr "Envoi vers l’imprimante hôte" msgid "Test" -msgstr "" +msgstr "Tester" msgid "Could not get a valid Printer Host reference" -msgstr "" +msgstr "Impossible d’obtenir une référence d’imprimante hôte valide" msgid "Success!" -msgstr "" +msgstr "Succès !" msgid "Refresh Printers" -msgstr "" +msgstr "Actualiser les imprimantes" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -9833,9 +9936,10 @@ msgstr "" msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "" +"Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*" msgid "Open CA certificate file" -msgstr "" +msgstr "Ouvrir le fichier de certificat CA" #, c-format, boost-format msgid "" @@ -9854,302 +9958,282 @@ msgstr "" 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é." -#: 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 "" -"Opérations de scène 3D\n" -"Savez-vous comment contrôler la vue et la sélection d'objets/pièces avec la " -"souris et l'écran tactile dans la scène 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?" -msgstr "" -"Outil de coupe\n" -"Saviez-vous que vous pouvez couper un modèle à n'importe quel angle et " -"position avec l'outil de coupe ?" - -#: 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 "" -"Réparer le modèle\n" -"Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de " -"nombreux problèmes de découpage ?" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" -"Timelapse\n" -"Saviez-vous que vous pouvez générer une vidéo Timelapse lors de chaque " -"impression ?" - -#: 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 "" -"Organisation automatique\n" -"Saviez-vous que vous pouvez organiser automatiquement tous les objets de " -"votre projet ?" - -#: 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 "" -"Orientation automatique\n" -"Saviez-vous que vous pouvez faire pivoter des objets dans une orientation " -"optimale pour l'impression d'un simple clic ?" - -#: 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 "" -"Poser sur la face\n" -"Saviez-vous que vous pouvez orienter rapidement un modèle de manière à ce " -"que l'une de ses faces repose sur le plateau d'impression ? Sélectionnez la " -"fonction \"Poser sur la face\" ou appuyez sur la touche 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?" -msgstr "" -"Liste d'objets\n" -"Saviez-vous que vous pouvez afficher tous les objets/pièces dans une liste " -"et modifier les paramètres de chaque objet/pièce ?" - -#: 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 "" -"Simplifier le modèle\n" -"Saviez-vous que vous pouvez réduire le nombre de triangles dans un maillage " -"à l'aide de la fonction Simplifier le maillage ? Cliquez avec le bouton " -"droit sur le modèle et sélectionnez Simplifier le modèle. Plus " -"d'informations dans la documentation." - -#: 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 "" -"Tableau des paramètres de découpage\n" -"Saviez-vous que vous pouvez afficher tous les objets/pièces d'un tableau et " -"modifier les paramètres de chaque objet/pièce ?" - -#: 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 "" -"Fractionner en objets/pièces\n" -"Saviez-vous que vous pouvez diviser un gros objet en petits objets pour " -"faciliter la coloration ou l'impression ?" - -#: 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 "" -"Soustraire une partie\n" -"Saviez-vous que vous pouvez soustraire un maillage d'un autre à l'aide du " -"modificateur de partie négative ? De cette façon, vous pouvez, par exemple, " -"créer des trous facilement redimensionnables directement dans Orca Slicer. " -"Plus d'informations dans la documentation." - -#: 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 "" -"STEP\n" -"Saviez-vous que vous pouvez améliorer votre qualité d'impression en " -"découpant un fichier .step au lieu d'un .stl ?\n" -"Orca Slicer prend en charge le découpage des fichiers .step, offrant des " -"résultats plus fluides qu'un .stl de résolution inférieure. Essayez !" - -#: 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 "" -"Emplacement de la couture en Z\n" -"Saviez-vous que vous pouvez personnaliser l'emplacement de la couture Z, et " -"même la peindre sur votre impression, pour l'avoir dans un endroit moins " -"visible ? Cela améliore l'aspect général de votre impression. Essayez !" - -#: 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 "" -"Réglage précis du débit\n" -"Saviez-vous que le débit peut être ajusté pour des impressions encore plus " -"belles ? Selon le matériau, vous pouvez améliorer la finition globale du " -"modèle imprimé en effectuant quelques ajustements." - -#: 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 "" -"Divisez vos impressions en plateaux\n" -"Saviez-vous que vous pouvez diviser un modèle comportant de nombreuses " -"pièces en plateaux individuels prêts à imprimer ? Cela simplifiera le " -"processus de suivi de toutes les pièces." - -#: 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 "" -"Accélérez votre impression avec la hauteur de couche adaptative\n" -"Saviez-vous que vous pouvez imprimer un modèle encore plus rapidement en " -"utilisant l'option Hauteur de couche adaptative ? Essayez !" - -#: 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 "" -"Peindre les supports\n" -"Saviez-vous que vous pouvez peindre l'emplacement de vos supports ? Cette " -"fonctionnalité permet de placer facilement les supports uniquement sur les " -"sections du modèle qui en ont réellement besoin." - -#: 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 "" -"Différents types de supports\n" -"Saviez-vous que vous pouvez choisir parmi plusieurs types de supports ? Les " -"supports arborescents fonctionnent parfaitement pour les modèles organiques, " -"tout en économisant du filament et en améliorant la vitesse d'impression. . " -"Essayez-les !" - -#: 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 "" -"Impression de filament Silk\n" -"Saviez-vous que le filament Silk nécessite une attention particulière pour " -"être imprimé avec succès ? Une température plus élevée et une vitesse plus " -"faible sont toujours recommandées pour obtenir les meilleurs résultats." - -#: 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 "" -"Bordure pour une meilleure adhérence\n" -"Saviez-vous que lorsque les modèles d'impression ont une petite surface de " -"contact sur le plateau, il est recommandé d'utiliser une bordure ?" - -#: 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 "" -"Définir les paramètres de plusieurs objets\n" -"Saviez-vous que vous pouvez définir des paramètres de découpage pour tous " -"les objets sélectionnés en même temps ?" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -msgstr "" -"Empiler des objets\n" -"Saviez-vous que vous pouvez assembler des objets en un seul ?" - -#: 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 "" -"Purge dans les supports / les objets / le remplissage\n" -"Saviez-vous que vous pouvez économiser du filament en le purgeant dans les " -"supports / les objets / le remplissage lors du changement de filament ?" - -#: 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 "" -"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 "Send to print" -#~ msgstr "Envoi vers l'imprimante" - -#~ msgid "Upload" -#~ msgstr "Envoyer" - -#~ msgid "Upload and Print" -#~ msgstr "Imprimer" - -#~ msgid "Use forward slashes ( / ) as a directory separator if needed." -#~ msgstr "" -#~ "Utilisez des barres obliques ( / ) comme séparateur de répertoire si " -#~ "nécessaire." - -#~ msgid "Post-processing scripts" -#~ msgstr "Scripts de post-traitement" - -#~ msgid "Bridge direction" -#~ msgstr "Direction des ponts" +#~ msgid "Other color" +#~ msgstr "Autres couleurs" #~ msgid "" -#~ "Angle for bridge infill pattern, which controls the start or main " -#~ "direction of line" +#~ "3D Scene Operations\n" +#~ "Did you know how to control view and object/part selection with mouse and " +#~ "touchpanel in the 3D scene?" #~ msgstr "" -#~ "Angle pour le motif de remplissage des ponts, qui contrôle le début ou la " -#~ "direction principale de la ligne" +#~ "Opérations de scène 3D\n" +#~ "Savez-vous comment contrôler la vue et la sélection d'objets/pièces avec " +#~ "la souris et l'écran tactile dans la scène 3D ?" + +#~ msgid "" +#~ "Cut Tool\n" +#~ "Did you know that you can cut a model at any angle and position with the " +#~ "cutting tool?" +#~ msgstr "" +#~ "Outil de coupe\n" +#~ "Saviez-vous que vous pouvez couper un modèle à n'importe quel angle et " +#~ "position avec l'outil de coupe ?" + +#~ msgid "" +#~ "Fix Model\n" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " +#~ "slicing problems?" +#~ msgstr "" +#~ "Réparer le modèle\n" +#~ "Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de " +#~ "nombreux problèmes de découpage ?" + +#~ msgid "" +#~ "Timelapse\n" +#~ "Did you know that you can generate a timelapse video during each print?" +#~ msgstr "" +#~ "Timelapse\n" +#~ "Saviez-vous que vous pouvez générer une vidéo Timelapse lors de chaque " +#~ "impression ?" + +#~ msgid "" +#~ "Auto-Arrange\n" +#~ "Did you know that you can auto-arrange all objects in your project?" +#~ msgstr "" +#~ "Organisation automatique\n" +#~ "Saviez-vous que vous pouvez organiser automatiquement tous les objets de " +#~ "votre projet ?" + +#~ msgid "" +#~ "Auto-Orient\n" +#~ "Did you know that you can rotate objects to an optimal orientation for " +#~ "printing by a simple click?" +#~ msgstr "" +#~ "Orientation automatique\n" +#~ "Saviez-vous que vous pouvez faire pivoter des objets dans une orientation " +#~ "optimale pour l'impression d'un simple clic ?" + +#~ 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 "" +#~ "Poser sur la face\n" +#~ "Saviez-vous que vous pouvez orienter rapidement un modèle de manière à ce " +#~ "que l'une de ses faces repose sur le plateau d'impression ? Sélectionnez " +#~ "la fonction \"Poser sur la face\" ou appuyez sur la touche F." + +#~ 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 "" +#~ "Liste d'objets\n" +#~ "Saviez-vous que vous pouvez afficher tous les objets/pièces dans une " +#~ "liste et modifier les paramètres de chaque objet/pièce ?" + +#~ 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 "" +#~ "Simplifier le modèle\n" +#~ "Saviez-vous que vous pouvez réduire le nombre de triangles dans un " +#~ "maillage à l'aide de la fonction Simplifier le maillage ? Cliquez avec le " +#~ "bouton droit sur le modèle et sélectionnez Simplifier le modèle. Plus " +#~ "d'informations dans la documentation." + +#~ 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 "" +#~ "Tableau des paramètres de découpage\n" +#~ "Saviez-vous que vous pouvez afficher tous les objets/pièces d'un tableau " +#~ "et modifier les paramètres de chaque objet/pièce ?" + +#~ 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 "" +#~ "Fractionner en objets/pièces\n" +#~ "Saviez-vous que vous pouvez diviser un gros objet en petits objets pour " +#~ "faciliter la coloration ou l'impression ?" + +#~ 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 "" +#~ "Soustraire une partie\n" +#~ "Saviez-vous que vous pouvez soustraire un maillage d'un autre à l'aide du " +#~ "modificateur de partie négative ? De cette façon, vous pouvez, par " +#~ "exemple, créer des trous facilement redimensionnables directement dans " +#~ "Orca Slicer. Plus d'informations dans la documentation." + +#~ 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 "" +#~ "STEP\n" +#~ "Saviez-vous que vous pouvez améliorer votre qualité d'impression en " +#~ "découpant un fichier .step au lieu d'un .stl ?\n" +#~ "Orca Slicer prend en charge le découpage des fichiers .step, offrant des " +#~ "résultats plus fluides qu'un .stl de résolution inférieure. Essayez !" + +#~ 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 "" +#~ "Emplacement de la couture en Z\n" +#~ "Saviez-vous que vous pouvez personnaliser l'emplacement de la couture Z, " +#~ "et même la peindre sur votre impression, pour l'avoir dans un endroit " +#~ "moins visible ? Cela améliore l'aspect général de votre impression. " +#~ "Essayez !" + +#~ 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 "" +#~ "Réglage précis du débit\n" +#~ "Saviez-vous que le débit peut être ajusté pour des impressions encore " +#~ "plus belles ? Selon le matériau, vous pouvez améliorer la finition " +#~ "globale du modèle imprimé en effectuant quelques ajustements." + +#~ 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 "" +#~ "Divisez vos impressions en plateaux\n" +#~ "Saviez-vous que vous pouvez diviser un modèle comportant de nombreuses " +#~ "pièces en plateaux individuels prêts à imprimer ? Cela simplifiera le " +#~ "processus de suivi de toutes les pièces." + +#~ 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 "" +#~ "Accélérez votre impression avec la hauteur de couche adaptative\n" +#~ "Saviez-vous que vous pouvez imprimer un modèle encore plus rapidement en " +#~ "utilisant l'option Hauteur de couche adaptative ? Essayez !" + +#~ 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 "" +#~ "Peindre les supports\n" +#~ "Saviez-vous que vous pouvez peindre l'emplacement de vos supports ? Cette " +#~ "fonctionnalité permet de placer facilement les supports uniquement sur " +#~ "les sections du modèle qui en ont réellement besoin." + +#~ 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 "" +#~ "Différents types de supports\n" +#~ "Saviez-vous que vous pouvez choisir parmi plusieurs types de supports ? " +#~ "Les supports arborescents fonctionnent parfaitement pour les modèles " +#~ "organiques, tout en économisant du filament et en améliorant la vitesse " +#~ "d'impression. . Essayez-les !" + +#~ 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 "" +#~ "Impression de filament Silk\n" +#~ "Saviez-vous que le filament Silk nécessite une attention particulière " +#~ "pour être imprimé avec succès ? Une température plus élevée et une " +#~ "vitesse plus faible sont toujours recommandées pour obtenir les meilleurs " +#~ "résultats." + +#~ 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 "" +#~ "Bordure pour une meilleure adhérence\n" +#~ "Saviez-vous que lorsque les modèles d'impression ont une petite surface " +#~ "de contact sur le plateau, il est recommandé d'utiliser une bordure ?" + +#~ msgid "" +#~ "Set parameters for multiple objects\n" +#~ "Did you know that you can set slicing parameters for all selected objects " +#~ "at one time?" +#~ msgstr "" +#~ "Définir les paramètres de plusieurs objets\n" +#~ "Saviez-vous que vous pouvez définir des paramètres de découpage pour tous " +#~ "les objets sélectionnés en même temps ?" + +#~ msgid "" +#~ "Stack objects\n" +#~ "Did you know that you can stack objects as a whole one?" +#~ msgstr "" +#~ "Empiler des objets\n" +#~ "Saviez-vous que vous pouvez assembler des objets en un seul ?" + +#~ 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 "" +#~ "Purge dans les supports / les objets / le remplissage\n" +#~ "Saviez-vous que vous pouvez économiser du filament en le purgeant dans " +#~ "les supports / les objets / le remplissage lors du changement de " +#~ "filament ?" + +#~ 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 "" +#~ "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 "" +#~ "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 cette option est activée, Bambu Studio génère des boucles de support " +#~ "sous les contours des ponts internes. Ces boucles de support peuvent " +#~ "empêcher les ponts internes de s'extruder dans le vide et améliorer la " +#~ "qualité de la surface supérieure, en particulier lorsque la densité de " +#~ "remplissage est faible. Cette valeur détermine l'épaisseur de boucles de " +#~ "soutien. Une valeur à 0 signifie que cette fonctionnalité est désactivée" + +#~ msgid "Maximum speed of X axis" +#~ msgstr "Vitesse maximale de l'axe X" + +#~ msgid "Maximum speed of Y axis" +#~ msgstr "Vitesse maximale de l'axe Y" + +#~ msgid "Maximum speed of Z axis" +#~ msgstr "Vitesse maximale de l'axe Z" + +#~ msgid "Maximum speed of E axis" +#~ msgstr "Vitesse maximale de l'extrudeur" diff --git a/bbl/i18n/hu/OrcaSlicer_hu.po b/bbl/i18n/hu/OrcaSlicer_hu.po index b0d77da42d..efbd5e26ed 100644 --- a/bbl/i18n/hu/OrcaSlicer_hu.po +++ b/bbl/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-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-07-07 00:37+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1894,7 +1894,10 @@ msgstr "" msgid "You need to select the material type and color first." msgstr "" -msgid "Other color" +msgid "Other Color" +msgstr "" + +msgid "Custom Color" msgstr "" msgid "Dynamic flow calibration" @@ -6300,6 +6303,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "A jelenlegi beállítások mellett nincsenek extrudálások." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6906,11 +6912,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops 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" +"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" @@ -7268,6 +7274,45 @@ msgstr "" msgid "Lightning" msgstr "" +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." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +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." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" @@ -8096,6 +8141,14 @@ msgstr "Hátul" msgid "Random" 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 "Seam gap" msgstr "" @@ -8157,6 +8210,12 @@ msgstr "" "Még a tárgyak előtt kerül nyomtatásra és a feladata a fúvóka " "anyagáramlásának stabilizálása" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + 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" @@ -9196,190 +9255,6 @@ msgstr "" msgid "Connection to printers connected via the print host failed." 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 "" - -#: 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 "" - -#: 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 "" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -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?" -msgstr "" - -#: 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 "" - #~ msgid "Keep upper part" #~ msgstr "Felső rész megtartása" diff --git a/bbl/i18n/it/OrcaSlicer_it.po b/bbl/i18n/it/OrcaSlicer_it.po index 7cac3e09e0..ab8fcbaaea 100644 --- a/bbl/i18n/it/OrcaSlicer_it.po +++ b/bbl/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-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-07-07 00:37+0800\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1870,7 +1870,10 @@ msgstr "" msgid "You need to select the material type and color first." msgstr "" -msgid "Other color" +msgid "Other Color" +msgstr "" + +msgid "Custom Color" msgstr "" msgid "Dynamic flow calibration" @@ -6247,6 +6250,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "No extrusions under current settings." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6849,11 +6855,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops 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" +"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" @@ -7208,6 +7214,45 @@ msgstr "" msgid "Lightning" msgstr "" +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." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +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." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" @@ -8025,6 +8070,14 @@ msgstr "Back" msgid "Random" 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 "Seam gap" msgstr "" @@ -8081,6 +8134,12 @@ msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "" "This is the number of loops for the skirt. 0 means the skirt is disabled." +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + 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" @@ -9114,190 +9173,6 @@ msgstr "" msgid "Connection to printers connected via the print host failed." 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 "" - -#: 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 "" - -#: 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 "" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -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?" -msgstr "" - -#: 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 "" - #~ msgid "Keep upper part" #~ msgstr "Mantieni parte superiore" diff --git a/bbl/i18n/ja/OrcaSlicer_ja.po b/bbl/i18n/ja/OrcaSlicer_ja.po index 80a8f6016c..10287eb5a5 100644 --- a/bbl/i18n/ja/OrcaSlicer_ja.po +++ b/bbl/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-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-07-07 00:37+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -1861,7 +1861,10 @@ msgstr "有効な値を入力してください (K: 0 ~ 0.5, N: 0.6 ~ 2.0)" msgid "You need to select the material type and color first." msgstr "" -msgid "Other color" +msgid "Other Color" +msgstr "" + +msgid "Custom Color" msgstr "" msgid "Dynamic flow calibration" @@ -6245,6 +6248,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "現在の設定では造形しません" +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6843,11 +6849,11 @@ msgid "Internal bridge support thickness" msgstr "内部ブリッジサポート厚さ" msgid "" -"If enabled, Studio will generate support loops 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" +"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" @@ -7195,6 +7201,45 @@ msgstr "キュービックサポート" msgid "Lightning" msgstr "ライトニング" +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." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +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." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" @@ -7986,6 +8031,14 @@ msgstr "背面" msgid "Random" 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 "Seam gap" msgstr "" @@ -8041,6 +8094,12 @@ msgstr "スカートのループ数" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "スカートのループ数です、値が0の場合、スカートが無効になります。" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + 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" @@ -9095,244 +9154,218 @@ msgstr "" msgid "Connection to printers connected via the print host failed." 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シーンの操作\n" -"マウスとタッチパネルで、オブジェクト/パーツの操作方法を確認しましょう" +#~ 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シーンの操作\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?" -msgstr "" -"カットツール\n" -"カットツールでモデルを自由な角度で修正することができます。" +#~ msgid "" +#~ "Cut Tool\n" +#~ "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?" -msgstr "" -"モデル修復\n" -"破損したモデルでも修復してスライスできます。" +#~ msgid "" +#~ "Fix Model\n" +#~ "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 "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" -"タイムラプス\n" -"カメラの活用は、モニタリングだけでなく、自慢のタイムラプスビデオも生成できま" -"す。" +#~ msgid "" +#~ "Timelapse\n" +#~ "Did you know that you can generate a timelapse video during each print?" +#~ msgstr "" +#~ "タイムラプス\n" +#~ "カメラの活用は、モニタリングだけでなく、自慢のタイムラプスビデオも生成でき" +#~ "ます。" -#: 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 "" -"自動レイアウト\n" -"自動レイアウトでプレートを最大限利用できます。" +#~ msgid "" +#~ "Auto-Arrange\n" +#~ "Did you know that you can auto-arrange all objects in your project?" +#~ msgstr "" +#~ "自動レイアウト\n" +#~ "自動レイアウトでプレートを最大限利用できます。" -#: 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 "" -"自動向き調整\n" -"自動向き調整で最適な向きをワンクリックで実現できます。" +#~ msgid "" +#~ "Auto-Orient\n" +#~ "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." -msgstr "" -"底面を選択\n" -"プレートと接触する面を指定し、オブジェクトの向きを簡単に調整できます。" +#~ 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 "" +#~ "底面を選択\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 "" -"オブジェクト一覧\n" -"全てのオブジェクトを確認でき、造形パラメータもオブジェクト別で設定できます" +#~ 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 "" +#~ "オブジェクト一覧\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." -msgstr "" -"モデルを簡略化\n" -"オブジェクトのメッシュを簡略化して、スライスの速度を上げられます。モデルを右" -"クリックし、メニューで選択できます。" +#~ 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 "" +#~ "モデルを簡略化\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?" -msgstr "" -"スライシングパラメータ\n" -"オブジェクト/パーツごとのパラメータを設定できます。" +#~ 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 "" +#~ "スライシングパラメータ\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?" -msgstr "" -"オブジェクト/パーツに分割\n" -"一つのオブジェクトを複数のオブジェクト/パーツに分割して色を簡単につけましょ" -"う。" +#~ 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 "" +#~ "オブジェクト/パーツに分割\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." -msgstr "" -"パーツをサブストラクト\n" -"マイナスパーツでモデルからメッシュを引くことができます。" +#~ 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 "" +#~ "パーツをサブストラクト\n" +#~ "マイナスパーツでモデルからメッシュを引くことができます。" -#: 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 "" -"STEP\n" -"STEP形式で、STL形式よりもっと高品質なスライス結果を得られます、是非お試しくだ" -"さい。" +#~ 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 "" +#~ "STEP\n" +#~ "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!" -msgstr "" -"継ぎ目位置\n" -"継ぎ目の位置を描き、見えにくい場所に指定して仕上がりを向上させます。" +#~ 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 "" +#~ "継ぎ目位置\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." -msgstr "" -"流量を微調整\n" -"流量を材料、温度により微調整し、更に良い仕上がりが得られます。" +#~ 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 "" +#~ "流量を微調整\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." -msgstr "" -"複数のプレートに分割\n" -"一つのモデルを分割し、複数のプレートで造形することもできます。" +#~ 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 "" +#~ "複数のプレートに分割\n" +#~ "一つのモデルを分割し、複数のプレートで造形することもできます。" -#: 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 "「アダプティブ積層ピッチ」で造形速度アップ!" +#~ 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 "「アダプティブ積層ピッチ」で造形速度アップ!" -#: 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 "" -"サポートペイント\n" -"サポートは塗り絵のように生成することができます。" +#~ 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 "" +#~ "サポートペイント\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!" -msgstr "" -"さまざまなサポートタイプ\n" -"いろんなサポートタイプをつかえます、ツリータイプではフィラメントも節約できる" -"し、造形時間も短縮できます。" +#~ 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 "" +#~ "さまざまなサポートタイプ\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 "" -"シルク質感のフィラメント\n" -"光沢がある美しい造形物をできるフィラメントは、プロセスに特別なケアが必要で" -"す。" +#~ 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 "" +#~ "シルク質感のフィラメント\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?" -msgstr "" -"接着力を高めるには?\n" -"ブリムを活用してください。" +#~ 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 "" +#~ "接着力を高めるには?\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?" -msgstr "" -"オブジェクトのパラメータを設定\n" -"複数のオブジェクトを一回で設定できます" +#~ msgid "" +#~ "Set parameters for multiple objects\n" +#~ "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 "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -msgstr "" -"オブジェクトを積み重ね\n" -"複数のオブジェクトを積み重ねて造形できます。" +#~ msgid "" +#~ "Stack objects\n" +#~ "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?" -msgstr "" -"サポート/オブジェクト/インフィルにフラッシュ\n" -"サポート、オブジェクトやインフィルどちらにもフラッシュでき、廃料の節約や、造" -"形時間短縮も有効的です。" +#~ 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 "" +#~ "サポート/オブジェクト/インフィルにフラッシュ\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?" -msgstr "" -"強度の向上\n" -"壁面層数やインフィルの充填密度を増やして造形強度を向上できます。" +#~ 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 "" +#~ "強度の向上\n" +#~ "壁面層数やインフィルの充填密度を増やして造形強度を向上できます。" #~ msgid "Bridge direction" #~ msgstr "ブリッジ方向" diff --git a/bbl/i18n/nl/OrcaSlicer_nl.po b/bbl/i18n/nl/OrcaSlicer_nl.po index 05a7e8e895..68e276f534 100644 --- a/bbl/i18n/nl/OrcaSlicer_nl.po +++ b/bbl/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-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-07-07 00:37+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1899,7 +1899,10 @@ msgstr "" msgid "You need to select the material type and color first." msgstr "" -msgid "Other color" +msgid "Other Color" +msgstr "" + +msgid "Custom Color" msgstr "" msgid "Dynamic flow calibration" @@ -6335,6 +6338,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "Geen extrusion onder de huidige instellingen" +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6945,11 +6951,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops 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" +"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" @@ -7310,6 +7316,45 @@ msgstr "" msgid "Lightning" msgstr "" +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." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +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." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" @@ -8147,6 +8192,14 @@ msgstr "Achterzijde" msgid "Random" 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 "Seam gap" msgstr "" @@ -8204,6 +8257,12 @@ msgstr "" "Dit is het aantal lussen voor de skirt. 0 betekent dat de skirt is " "uitgeschakeld." +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + 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" @@ -9249,190 +9308,6 @@ msgstr "" msgid "Connection to printers connected via the print host failed." 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 "" - -#: 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 "" - -#: 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 "" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -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?" -msgstr "" - -#: 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 "" - #~ msgid "Keep upper part" #~ msgstr "Bewaar het bovenstee deel" diff --git a/bbl/i18n/ru/OrcaSlicer_ru.po b/bbl/i18n/ru/OrcaSlicer_ru.po new file mode 100644 index 0000000000..b349a22b10 --- /dev/null +++ b/bbl/i18n/ru/OrcaSlicer_ru.po @@ -0,0 +1,10067 @@ +# 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: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"PO-Revision-Date: 2023-07-08 15:56+0300\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: ru_RU\n" +"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" +"X-Generator: Poedit 3.3.2\n" + +msgid "Supports Painting" +msgstr "Рисование поддержек" + +msgid "Alt + Mouse wheel" +msgstr "ALT + колёсико мыши" + +msgid "Section view" +msgstr "Вид в разре" + +msgid "Reset direction" +msgstr "Направление сброса" + +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl +Колёсико мыши" + +msgid "Pen size" +msgstr "Размер пера" + +msgid "Left mouse button" +msgstr "Левая кнопка мыши" + +msgid "Enforce supports" +msgstr "Принудительная поддержка" + +msgid "Right mouse button" +msgstr "Правая кнопка мыши" + +msgid "Block supports" +msgstr "Блокировка поддержек" + +msgid "Shift + Left mouse button" +msgstr "SHIFT + Левая кнопка мыши" + +msgid "Erase" +msgstr "Ластик" + +msgid "Erase all painting" +msgstr "Стереть все рисунки" + +msgid "Highlight overhang areas" +msgstr "Выделить выступающие области" + +msgid "Gap fill" +msgstr "Заполнение пробелов" + +msgid "Perform" +msgstr "Выполнить" + +msgid "Gap area" +msgstr "Площадь зазора" + +msgid "Tool type" +msgstr "Тип инструмента" + +msgid "Smart fill angle" +msgstr "Умный угол заливки" + +msgid "On overhangs only" +msgstr "Только на свесах" + +msgid "Auto support threshold angle: " +msgstr "Угол порога автоматической поддержки: " + +msgid "Circle" +msgstr "Круг" + +msgid "Sphere" +msgstr "Сфера" + +msgid "Fill" +msgstr "Заполнить" + +msgid "Gap Fill" +msgstr "Заполнение пробелов" + +#, boost-format +msgid "Allows painting only on facets selected by: \"%1%\"" +msgstr "Рисование только на выбраных гранях: \"%1%\"" + +msgid "Highlight faces according to overhang angle." +msgstr "Выделить грани с соответствующим углом выступа." + +msgid "No auto support" +msgstr "Нет автоматической поддержки" + +msgid "Support Generated" +msgstr "Генерация поддержки" + +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 "Color Painting" +msgstr "Цветное рисование" + +msgid "Pen shape" +msgstr "Форма пера" + +msgid "Paint" +msgstr "Рисования" + +msgid "Key 1~9" +msgstr "Клпвиша 1~9" + +msgid "Choose filament" +msgstr "Выбор филамента" + +msgid "Edge detection" +msgstr "Обнаружение границ" + +msgid "Triangles" +msgstr "Треугольники" + +msgid "Filaments" +msgstr "Филамент" + +msgid "Brush" +msgstr "Кисть" + +msgid "Smart fill" +msgstr "Интеллектуальная заливка" + +msgid "Bucket fill" +msgstr "Заливка ведра" + +msgid "Height range" +msgstr "Диапазон высот" + +msgid "Ctrl + Shift + Enter" +msgstr "Ctrl + Shift + Enter" + +msgid "Toggle Wireframe" +msgstr "Переключение каркаса" + +msgid "Shortcut Key " +msgstr "Сочетание клавиш " + +msgid "Triangle" +msgstr "Треугольник" + +msgid "Height Range" +msgstr "Переключить каркас" + +msgid "Remove painted color" +msgstr "Удалить закрашенный цвет" + +#, boost-format +msgid "Painted using: Filament %1%" +msgstr "Окрашен с использованием: Филамент %1%" + +msgid "Move" +msgstr "Переместить" + +msgid "Rotate" +msgstr "Повернуть" + +msgid "Optimize orientation" +msgstr "Оптимизировать ориентацию" + +msgid "Apply" +msgstr "Готово" + +msgid "Scale" +msgstr "Масштаб" + +msgid "Error: Please close all toolbar menus first" +msgstr "Ошибка: пожалуйста, сначала закройте все меню панели инструментов" + +msgid "Tool-Lay on Face" +msgstr "Инструмент-укладка на лицо" + +msgid "in" +msgstr "in" + +msgid "mm" +msgstr "мм" + +msgid "Position" +msgstr "Позиция" + +msgid "Rotation" +msgstr "Вращение" + +msgid "Scale ratios" +msgstr "Коэффициенты масштабирования" + +msgid "Object Operations" +msgstr "Операции с объектами" + +msgid "Volume Operations" +msgstr "Операции с объемами" + +msgid "Translate" +msgstr "Перевести" + +msgid "Group Operations" +msgstr "Групповая ориентация" + +msgid "Set Position" +msgstr "Установить позицию" + +msgid "Set Orientation" +msgstr "Установить ориентацию" + +msgid "Set Scale" +msgstr "Установить масштаб" + +msgid "Reset Position" +msgstr "Сбросить позициюб" + +msgid "Reset Rotation" +msgstr "Сбросить ориентацию" + +msgid "World coordinates" +msgstr "Мировые координаты" + +msgid "°" +msgstr "°" + +msgid "Size" +msgstr "Размер" + +msgid "%" +msgstr "%" + +msgid "uniform scale" +msgstr "единая шкала" + +msgid "Left click" +msgstr "Щелкните левой кнопкой мыши" + +msgid "Add connector" +msgstr "Добавить соединитель" + +msgid "Right click" +msgstr "Щелкните правой кнопкой мыши" + +msgid "Remove connector" +msgstr "Извлеките разъем" + +msgid "Drag" +msgstr "Перетащите" + +msgid "Move connector" +msgstr "Переместить соединитель" + +msgid "Add connector to selection" +msgstr "Добавить соединитель к выделенному" + +msgid "Remove connector from selection" +msgstr "Удалить соединитель из списка выбора" + +msgid "Select all connectors" +msgstr "Выберите все соединители" + +msgid "Cut" +msgstr "Вырезать" + +msgid "Connector" +msgstr "Соединитель" + +msgid "Movement:" +msgstr "Движение:" + +msgid "Movement" +msgstr "Движение" + +msgid "Height" +msgstr "Рост" + +msgid "Edit connectors" +msgstr "Редактировать соединители" + +msgid "Add connectors" +msgstr "Добавить соединители" + +msgid "Upper part" +msgstr "Верхняя часть" + +msgid "Lower part" +msgstr "Нижняя часть" + +msgid "Keep" +msgstr "Держать" + +msgid "Place on cut" +msgstr "Поместить на срез" + +msgid "Flip" +msgstr "Переверните" + +msgid "After cut" +msgstr "После вырезания" + +msgid "Cut to parts" +msgstr "Разрезать на части" + +msgid "Auto Segment" +msgstr "Авто сегмент" + +msgid "Perform cut" +msgstr "Выполнить вырезание" + +msgid "Reset" +msgstr "Сброс" + +msgid "Connectors" +msgstr "Соединители" + +msgid "Type" +msgstr "Тип" + +msgid "Style" +msgstr "Стиль" + +msgid "Shape" +msgstr "Форма" + +msgid "Depth ratio" +msgstr "Коэффициент глубины" + +msgid "Remove connectors" +msgstr "Извлеките разъемы" + +msgid "Prizm" +msgstr "Призма" + +msgid "Frustum" +msgstr "Усечённый" + +msgid "Square" +msgstr "Квадрат" + +msgid "Hexagon" +msgstr "Шестиугольник" + +msgid "Confirm connectors" +msgstr "Подтвердить соединители" + +msgid "Cancel" +msgstr "Отмена" + +msgid "Warning" +msgstr "Предупреждение" + +msgid "Invalid connectors detected" +msgstr "Обнаружены недопустимые соединители" + +msgid "connector is out of cut contour" +msgstr "разъем выходит за контур выреза" + +msgid "connectors are out of cut contour" +msgstr "разъемы выходят за контур выреза" + +msgid "connector is out of object" +msgstr "разъем вне объекта" + +msgid "connectors is out of object" +msgstr "коннекторы отсутствуют в объекте" + +msgid "Some connectors are overlapped" +msgstr "Некоторые разъемы перекрываются" + +msgid "" +"Invalid state. \n" +"No one part is selected for keep after cut" +msgstr "" +"Недопустимое состояние. Ни одна деталь не выбрана для сохранения после " +"вырезания" + +msgid "Plug" +msgstr "Подключи" + +msgid "Dowel" +msgstr "Дюбель" + +msgid "Tolerance" +msgstr "Допуск" + +msgid "Mesh name" +msgstr "Название сетки" + +msgid "Detail level" +msgstr "Уровень детализации" + +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 "Simplify model" +msgstr "Упрощённая модель" + +msgid "Simplify" +msgstr "Упростить" + +msgid "Simplification is currently only allowed when a single part is selected" +msgstr "" +"Упрощение в настоящее время разрешено только при выборе отдельной детали" + +msgid "Error" +msgstr "Ошибка" + +msgid "Extra high" +msgstr "Сверхвысокий" + +msgid "High" +msgstr "Выоский" + +msgid "Medium" +msgstr "Средний" + +msgid "Low" +msgstr "Низкий" + +msgid "Extra low" +msgstr "Сверхнизкий" + +#, c-format, boost-format +msgid "%d triangles" +msgstr "%d треугольники" + +msgid "Show wireframe" +msgstr "Показать каркас" + +#, boost-format +msgid "%1%" +msgstr "%1%" + +msgid "Can't apply when proccess preview." +msgstr "Не может применяться при предварительном просмотре процесса." + +msgid "Operation already cancelling. Please wait few seconds." +msgstr "Операция уже отменяется. Пожалуйста, подождите несколько секунд." + +msgid "Face recognition" +msgstr "Распознавание лиц" + +msgid "Perform Recognition" +msgstr "Выполните распознавание" + +msgid "Brush size" +msgstr "Размер кисти" + +msgid "Brush shape" +msgstr "Форма кисти" + +msgid "Enforce seam" +msgstr "Принудительное расположение шва" + +msgid "Block seam" +msgstr "Блокировка шва" + +msgid "Seam painting" +msgstr "Рисование шва" + +msgid "Remove selection" +msgstr "Удалить выделение" + +msgid "Shift + Mouse move up or dowm" +msgstr "Shift + перемещение мыши вверх или вниз" + +msgid "Rotate text" +msgstr "Повернуть текст" + +msgid "Text shape" +msgstr "Форма текста" + +msgid "Font" +msgstr "Шрифт" + +msgid "Thickness" +msgstr "Толщина" + +msgid "Input text" +msgstr "Ввод текста" + +msgid "Embeded" +msgstr "Встроено" + +msgid "Text Gap" +msgstr "Пробел в тексте" + +msgid "Angle" +msgstr "Угол" + +msgid "" +"Embeded\n" +"depth" +msgstr "Встроенная глубина" + +msgid "Surface" +msgstr "Поверхность" + +msgid "Horizontal text" +msgstr "Горизонтальный текст" + +msgid "Ctrl+" +msgstr "Ctrl+" + +msgid "Notice" +msgstr "Уведомление" + +msgid "Undefined" +msgstr "Не определено" + +#, boost-format +msgid "%1% was replaced with %2%" +msgstr "%1% был заменен на %2%" + +msgid "The configuration may be generated by a newer version of OrcaSlicer." +msgstr "Конфигурация может быть создана более новой версией OrcaSlicer." + +msgid "Some values have been replaced. Please check them:" +msgstr "Некоторые значения были заменены. Пожалуйста, проверьте их:" + +msgid "Process" +msgstr "Процесс" + +msgid "Filament" +msgstr "Филамент" + +msgid "Machine" +msgstr "Машина" + +msgid "Configuration package was loaded, but some values were not recognized." +msgstr "" +"Пакет конфигурации был загружен, но некоторые значения не были распознаны." + +#, boost-format +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 "" +"BambuStudio завершит работу из-за нехватки памяти.Возможно, это ошибка. Мы " +"будем признательны, если вы сообщите о проблеме нашей команде." + +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 "Critical error" +msgstr "Критическая ошибка" + +#, boost-format +msgid "OrcaSlicer got an unhandled exception: %1%" +msgstr "OrcaSlicer получил необработанное исключение: %1%" + +msgid "Downloading Bambu Network Plug-in" +msgstr "Загрузка сетевого подключаемого модуля Bambu" + +msgid "Incorrect password" +msgstr "Неверный пароль" + +#, c-format, boost-format +msgid "Connect %s failed! [SN:%s, code=%s]" +msgstr "Подключение %s не удалось! [Серийный номер:%s, код=%s]" + +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 "" +"%s\n" +"Do you want to continue?" +msgstr "%s Вы хотите продолжать?" + +msgid "Remember my choice" +msgstr "Запомнить мой выбор" + +msgid "Loading configuration" +msgstr "Загрузка конфигурации" + +#, c-format, boost-format +msgid "Click to download new version in default browser: %s" +msgstr "Нажмите, чтобы загрузить новую версию в браузере по умолчанию: %s" + +msgid "The Orca Slicer needs an upgrade" +msgstr "Orca Slicer нуждается в обновлении" + +msgid "This is the newest version." +msgstr "Это самая новая версия." + +msgid "Info" +msgstr "Информация" + +msgid "Rebuild" +msgstr "Восстановить" + +msgid "Loading current presets" +msgstr "Загрузка текущих пресетов" + +msgid "Loading a mode view" +msgstr "Загрузка режима просмотра" + +msgid "Choose one file (3mf):" +msgstr "Выберите один файл (3mf):" + +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" +msgstr "Выберите один или несколько файлов (3mf/step/stl/svg/obj/amf):" + +msgid "Choose one file (gcode/3mf):" +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 "User logged out" +msgstr "Пользователь вышел из системы" + +msgid "new or open project file is not allowed during the slicing process!" +msgstr "новый или открытый файл проекта не допускается в процессе нарезки!" + +msgid "Open Project" +msgstr "Открыть проект" + +msgid "" +"The version of Bambu studio is too low and needs to be updated to the latest " +"version before it can be used normally" +msgstr "" +"Версия студии Bambu слишком низкая, ее необходимо обновить до последней " +"версии, прежде чем ее можно будет использовать в обычном режиме" + +msgid "Login information expired. Please login again." +msgstr "Срок действия данных для входа истек. Пожалуйста, войдите снова." + +msgid "Privacy Policy Update" +msgstr "Обновление политики конфиденциальности" + +msgid "Loading" +msgstr "Загрузка" + +msgid "Loading user preset" +msgstr "Загрузка пользовательского пресета" + +msgid "Switching application language" +msgstr "Переключение языка приложения" + +msgid "Select the language" +msgstr "Выберите язык" + +msgid "Language" +msgstr "Язык" + +msgid "*" +msgstr "*" + +msgid "The uploads are still ongoing" +msgstr "Загрузка все еще продолжается" + +msgid "Stop them and continue anyway?" +msgstr "Остановить их и продолжать в любом случае?" + +msgid "Ongoing uploads" +msgstr "Текущие загрузки" + +msgid "Select a G-code file:" +msgstr "Выберите файл G-кода:" + +msgid "Import File" +msgstr "Импортировать файл" + +msgid "Delete" +msgstr "Удалить" + +msgid "Choose files" +msgstr "Выбрать файлы" + +msgid "New Folder" +msgstr "Новая папка" + +msgid "Open" +msgstr "Открыть" + +msgid "Rename" +msgstr "Переименовать" + +msgid "Orca Slicer GUI initialization failed" +msgstr "Ошибка инициализации графического интерфейса Orca Slicer" + +#, boost-format +msgid "Fatal error, exception catched: %1%" +msgstr "Неустранимая ошибка, обнаружено исключение: %1%" + +msgid "Quality" +msgstr "Качество" + +msgid "Shell" +msgstr "Оболочка" + +msgid "Infill" +msgstr "Заполнение" + +msgid "Support" +msgstr "Поддержки" + +msgid "Flush options" +msgstr "Варианты сброса" + +msgid "Speed" +msgstr "Скорость" + +msgid "Strength" +msgstr "Прочность" + +msgid "Top Solid Layers" +msgstr "Сплошных слоёв сверху" + +msgid "Top Minimum Shell Thickness" +msgstr "Минимальная толщина верхней оболочки" + +msgid "Bottom Solid Layers" +msgstr "Нижний сплошной слой" + +msgid "Bottom Minimum Shell Thickness" +msgstr "Минимальная толщина нижней оболочки" + +msgid "Ironing" +msgstr "Разглаживание" + +msgid "Fuzzy Skin" +msgstr "Нечеткая оболочка" + +msgid "Extruders" +msgstr "Экструдеры" + +msgid "Extrusion Width" +msgstr "Ширина экструзии" + +msgid "Wipe options" +msgstr "Параметры очистки" + +msgid "Bed adhension" +msgstr "Прилегание к кровати" + +msgid "Advanced" +msgstr "Дополнительно" + +msgid "Add part" +msgstr "Добавить часть" + +msgid "Add negative part" +msgstr "Добавить отрицательную часть" + +msgid "Add modifier" +msgstr "Добавить модификатор" + +msgid "Add support blocker" +msgstr "Добавить блокировщик поддержек" + +msgid "Add support enforcer" +msgstr "Добавить средство принудительной поддержки" + +msgid "Select settings" +msgstr "Выберете настройки" + +msgid "Hide" +msgstr "Скрыть" + +msgid "Show" +msgstr "Показать" + +msgid "Del" +msgstr "Удалить" + +msgid "Delete the selected object" +msgstr "Удалить выбранный объект" + +msgid "Edit Text" +msgstr "Редактировать текст" + +msgid "Load..." +msgstr "Загрузить..." + +msgid "Orca Cube" +msgstr "Orca Куб" + +msgid "3DBenchy" +msgstr "3DBenchy" + +msgid "Autodesk FDM Test" +msgstr "Autodesk FDM Test" + +msgid "Voron Cube" +msgstr "Voron Куб" + +msgid "Cube" +msgstr "Куб" + +msgid "Cylinder" +msgstr "Цилиндр" + +msgid "Cone" +msgstr "Конус" + +msgid "Height range Modifier" +msgstr "Модификатор диапазона высот" + +msgid "Add settings" +msgstr "Добавить настройки" + +msgid "Change type" +msgstr "Изменить тип" + +msgid "Set as an individual object" +msgstr "Установить как отдельный объект" + +msgid "Set as individual objects" +msgstr "Установить как отдельные объекты" + +msgid "Printable" +msgstr "Доступно для печати" + +msgid "Fix model" +msgstr "Исправить модель" + +msgid "Export as STL" +msgstr "Экспортировать как STL" + +msgid "Reload from disk" +msgstr "Перезагрузить с диска" + +msgid "Reload the selected parts from disk" +msgstr "Перезагрузите выбранные части с диска" + +msgid "Replace with STL" +msgstr "Заменить на STL" + +msgid "Replace the selected part with new STL" +msgstr "Замените выбранную часть новым STL" + +msgid "Change filament" +msgstr "Смена филамента" + +msgid "Set filament for selected items" +msgstr "Установить филамент для выбранных элементов" + +msgid "Default" +msgstr "По умолчанию" + +#, c-format, boost-format +msgid "Filament %d" +msgstr "Филамент %d" + +msgid "active" +msgstr "активно" + +msgid "Scale to build volume" +msgstr "Масштабирование для увеличение объёма" + +msgid "Scale an object to fit the build volume" +msgstr "Отмасштабировать под область печати" + +msgid "Flush Options" +msgstr "Варианты сброса" + +msgid "Flush into objects' infill" +msgstr "Вровень с заполнением объектов" + +msgid "Flush into this object" +msgstr "Слить в этот объект" + +msgid "Flush into objects' support" +msgstr "Заподлицо с поддержкой объектов" + +msgid "Edit in Parameter Table" +msgstr "Изменить в таблице параметров" + +msgid "Convert from inch" +msgstr "Конвертировать из имерской" + +msgid "Restore to inch" +msgstr "Восстановить в имперскую" + +msgid "Convert from meter" +msgstr "Преобразовать из метрической" + +msgid "Restore to meter" +msgstr "Восстановить в метрическую" + +msgid "Assemble" +msgstr "Собрать" + +msgid "Assemble the selected objects to an object with multiple parts" +msgstr "Соберите выбранные объекты в объект с несколькими частями" + +msgid "Assemble the selected objects to an object with single part" +msgstr "Соберите выбранные объекты в объект с одной частью" + +msgid "Assemble the selected parts to a single part" +msgstr "Соберите выбранные детали в одну деталь" + +msgid "Along X axis" +msgstr "Вдоль оси X" + +msgid "Mirror along the X axis" +msgstr "Отразить по оси X" + +msgid "Along Y axis" +msgstr "По оси Y" + +msgid "Mirror along the Y axis" +msgstr "Отразить по оси Y" + +msgid "Along Z axis" +msgstr "По оси Z" + +msgid "Mirror along the Z axis" +msgstr "Отразить по оси Z" + +msgid "Mirror" +msgstr "Зеркально" + +msgid "Mirror object" +msgstr "Зеркальный объект" + +msgid "Invalidate cut info" +msgstr "Недействительная информация о вырезании" + +msgid "Add Primitive" +msgstr "Добавить примитив" + +msgid "Show Labels" +msgstr "Показать ярлыки" + +msgid "To objects" +msgstr "К объектам" + +msgid "Split the selected object into multiple objects" +msgstr "Разделить выбранный объект на несколько объектов" + +msgid "To parts" +msgstr "На части" + +msgid "Split the selected object into multiple parts" +msgstr "Разделить выбранный объект на несколько частей" + +msgid "Split" +msgstr "Разделить" + +msgid "Split the selected object" +msgstr "Разделить выбранный объект" + +msgid "Auto orientation" +msgstr "Автоматическая ориентация" + +msgid "Auto orient the object to improve print quality." +msgstr "Автоматически ориентируйте объект для улучшения качества печати." + +msgid "Split the selected object into mutiple objects" +msgstr "Разделить выбранный объект на несколько объектов" + +msgid "Split the selected object into mutiple parts" +msgstr "Разделить выбранный объект на несколько частей" + +msgid "Select All" +msgstr "Выбрать всё" + +msgid "select all objects on current plate" +msgstr "выбрать все объекты на текущей пластине" + +msgid "Delete All" +msgstr "Удалить всё" + +msgid "delete all objects on current plate" +msgstr "удалить все объекты на текущей пластине" + +msgid "Arrange" +msgstr "Организовать" + +msgid "arrange current plate" +msgstr "упорядочить текущую табличку" + +msgid "Auto Rotate" +msgstr "Авто-поворот" + +msgid "auto rotate current plate" +msgstr "автоповорот текущей пластины" + +msgid "Delete Plate" +msgstr "Удалить пластину" + +msgid "Remove the selected plate" +msgstr "Удалить выбранную пластину" + +msgid "Clone" +msgstr "Клонирование" + +msgid "Simplify Model" +msgstr "Упростить модель" + +msgid "Center" +msgstr "Центр" + +msgid "Edit Process Settings" +msgstr "Изменить параметры процесса" + +msgid "Edit print parameters for a single object" +msgstr "Редактировать параметры печати для одного объекта" + +msgid "Change Filament" +msgstr "Сменить филамент" + +msgid "Set Filament for selected items" +msgstr "Установить филамент для выбранных элементов" + +msgid "current" +msgstr "текущий" + +msgid "Set Unprintable" +msgstr "Установить непечатаемый" + +msgid "Set Printable" +msgstr "Установить для печати" + +msgid "Unlock" +msgstr "Разблокировать" + +msgid "Lock" +msgstr "Заблокировать" + +msgid "Name" +msgstr "Имя" + +msgid "Fila." +msgstr "Фила." + +#, c-format, boost-format +msgid "%1$d error repaired" +msgid_plural "%1$d errors repaired" +msgstr[0] "%1$d ошибка исправлена" +msgstr[1] "%1$d ошибки исправлены" +msgstr[2] "%1$d ошибки исправлены" + +#, c-format, boost-format +msgid "Error: %1$d non-manifold edge." +msgid_plural "Error: %1$d non-manifold edges." +msgstr[0] "Ошибка: %1$d кромка без коллектора." +msgstr[1] "Ошибка: %1$d кромки без коллектора." +msgstr[2] "Ошибка: %1$d кромки без коллектора." + +msgid "Remaining errors" +msgstr "Оставшиеся ошибки" + +#, c-format, boost-format +msgid "%1$d non-manifold edge" +msgid_plural "%1$d non-manifold edges" +msgstr[0] "%1$d кромка без коллектора" +msgstr[1] "%1$d кромки без коллектора" +msgstr[2] "%1$d кромки без коллектора" + +msgid "Right click the icon to fix model object" +msgstr "Щелкните правой кнопкой мыши значок, чтобы исправить объект модели" + +msgid "Right button click the icon to drop the object settings" +msgstr "Щелкните правой кнопкой мыши значок, чтобы удалить настройки объекта" + +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 "" +"Щелкните правой кнопкой мыши значок, чтобы удалить свойство объекта для " +"печати" + +msgid "Click the icon to toggle printable property of the object" +msgstr "Щелкните значок, чтобы переключить печатаемое свойство объекта" + +msgid "Click the icon to edit support painting of the object" +msgstr "Щелкните значок, чтобы изменить вспомогательную окраску объекта" + +msgid "Click the icon to edit color painting of the object" +msgstr "Щелкните значок, чтобы отредактировать цветовую окраску объекта" + +msgid "Click the icon to shift this object to the bed" +msgstr "Щелкните значок, чтобы переместить этот объект на кровать" + +msgid "Loading file" +msgstr "Загрузка файла" + +msgid "Error!" +msgstr "Ошибка!" + +msgid "Generic" +msgstr "Общий" + +msgid "Add Modifier" +msgstr "Добавить модификатор" + +msgid "Switch to per-object setting mode to edit modifier settings." +msgstr "" +"Переключитесь в режим настройки для каждого объекта, чтобы изменить " +"настройки модификатора." + +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 "Удалить твердотельную часть из объекта, который является частью выреза" + +msgid "Delete negative volume from object which is a part of cut" +msgstr "Удалить отрицательный объем с объекта, который является частью разреза" + +msgid "" +"To save cut correspondence you can delete all connectors from all related " +"objects." +msgstr "" +"Для сохранения вырезанной корреспонденции вы можете удалить все коннекторы " +"из всех связанных\n" +"объекты." + +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 "" +"Это действие разорвет обрезанную корреспонденцию.\n" +"После этого согласованность модели не может быть гарантирована.\n" +"\n" +"Чтобы манипулировать твердыми частями или отрицательными объемами, вы должны " +"аннулировать\n" +"сокращайте информацию сначала." + +msgid "Delete all connectors" +msgstr "Удалить все соединители" + +msgid "Deleting the last solid part is not allowed." +msgstr "Удаление последней сплошной части не допускается." + +msgid "The target object contains only one part and can not be splited." +msgstr "Целевой объект содержит только одну часть и не может быть разделен." + +msgid "Assembly" +msgstr "Сборка" + +msgid "Cut Connectors information" +msgstr "Информация об отрезанных соединителях" + +msgid "Object manipulation" +msgstr "Манипуляции с объектами" + +msgid "Group manipulation" +msgstr "Групповая манипуляция" + +msgid "Object Settings to modify" +msgstr "Параметры объекта для изменения" + +msgid "Part Settings to modify" +msgstr "Настройки детали для изменения" + +msgid "Layer range Settings to modify" +msgstr "Диапазон слоев Параметры для изменения" + +msgid "Part manipulation" +msgstr "Манипуляции с деталями" + +msgid "Instance manipulation" +msgstr "Управление экземпляром" + +msgid "Height ranges" +msgstr "Диапазоны высоты" + +msgid "Settings for height range" +msgstr "Настройки диапазона роста" + +msgid "Object" +msgstr "Объект" + +msgid "Part" +msgstr "Часть" + +msgid "Layer" +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 a part, the second one should be part in the same " +"object." +msgstr "" +"Если первый выбранный элемент является частью, второй должен быть частью " +"того же\n" +"объект." + +msgid "The type of the last solid object part is not to be changed." +msgstr "Тип последней твердотельной части объекта изменять нельзя." + +msgid "Negative Part" +msgstr "Отрицательная часть" + +msgid "Modifier" +msgstr "Модификатор" + +msgid "Support Blocker" +msgstr "Блокировщик поддержки" + +msgid "Support Enforcer" +msgstr "Инфорсер поддержки" + +msgid "Type:" +msgstr "Тип:" + +msgid "Choose part type" +msgstr "Выберите тип детали" + +msgid "Enter new name" +msgstr "Введите новое имя" + +msgid "Renaming" +msgstr "Переименование" + +msgid "Repairing model object" +msgstr "Восстановление объекта модели" + +msgid "Following model object has been repaired" +msgid_plural "Following model objects have been repaired" +msgstr[0] "Следующий объект модели был восстановлен" +msgstr[1] "Следующие объекты модели были восстановлены" +msgstr[2] "Следующие объекты модели были восстановлены" + +msgid "Failed to repair folowing model object" +msgid_plural "Failed to repair folowing model objects" +msgstr[0] "Не удалось восстановить следующий объект модели" +msgstr[1] "Не удалось восстановить следующие объекты модели" +msgstr[2] "Не удалось восстановить следующие объекты модели" + +msgid "Repairing was canceled" +msgstr "Ремонт был отменен" + +msgid "Additional process preset" +msgstr "Дополнительная предустановка процесса" + +msgid "Remove parameter" +msgstr "Удалить параметр" + +msgid "to" +msgstr "в" + +msgid "Remove height range" +msgstr "Удалить диапазон роста" + +msgid "Add height range" +msgstr "Добавить диапазон роста" + +msgid "Invalid numeric." +msgstr "Недопустимое числовое значение." + +msgid "one cell can only be copied to one or multiple cells in the same column" +msgstr "" +"одна ячейка может быть скопирована только в одну или несколько ячеек в том " +"же столбце" + +msgid "multiple cells copy is not supported" +msgstr "копирование нескольких ячеек не поддерживается" + +msgid "Outside" +msgstr "Внешний" + +msgid "Auto" +msgstr "Авто" + +msgid "Manual" +msgstr "Руководство" + +msgid "No-brim" +msgstr "Без юбки" + +msgid " " +msgstr "" + +msgid "Layer height" +msgstr "Высота слоя" + +msgid "Wall loops" +msgstr "Количество периметров" + +msgid "Infill density(%)" +msgstr "Плотность заполнения (%)" + +msgid "Auto Brim" +msgstr "Авто юбка" + +msgid "Outer wall speed" +msgstr "Скорость внешнего периметра" + +msgid "Plate" +msgstr "Стол" + +msgid "Brim" +msgstr "Юбка" + +msgid "Object/Part Setting" +msgstr "Настройка объекта/детали" + +msgid "Reset parameter" +msgstr "Сбросить параметр" + +msgid "Multicolor Print" +msgstr "Многоцветная печать" + +msgid "Line Type" +msgstr "Тип линии" + +msgid "More" +msgstr "Больше" + +msgid "Open Preferences." +msgstr "Откройте настройки." + +msgid "Open next tip." +msgstr "Откройте следующий совет." + +msgid "Open Documentation in web browser." +msgstr "Откройте документацию в веб-браузере." + +msgid "Pause:" +msgstr "Пауза:" + +msgid "Custom Template:" +msgstr "Пользовательский шаблон:" + +msgid "Custom G-code:" +msgstr "Пользовательский G-код:" + +msgid "Custom G-code" +msgstr "Пользовательский G-код" + +msgid "Enter Custom G-code used on current layer:" +msgstr "Введите пользовательский G-код, используемый в текущем слое:" + +msgid "OK" +msgstr "ОК" + +msgid "Jump to Layer" +msgstr "Перейти к слою" + +msgid "Jump to layer" +msgstr "Перейти к слою" + +msgid "Please enter the layer number" +msgstr "Пожалуйста, введите номер слоя" + +msgid "Add Pause" +msgstr "Добавить паузу" + +msgid "Insert a pause command at the beginning of this layer." +msgstr "Вставьте команду паузы в начале этого слоя." + +msgid "Add Custom G-code" +msgstr "Добавить пользовательский G-код" + +msgid "Insert custom G-code at the beginning of this layer." +msgstr "Вставьте пользовательский G-код в начале этого слоя." + +msgid "Add Custom Template" +msgstr "Добавить пользовательский шаблон" + +msgid "Insert template custom G-code at the beginning of this layer." +msgstr "Вставьте пользовательский G-код шаблона в начале этого слоя." + +msgid "Filament " +msgstr "Филамент " + +msgid "Change filament at the beginning of this layer." +msgstr "Замена филамента в начале этого слоя." + +msgid "Delete Pause" +msgstr "Удалить паузу" + +msgid "Delete Custom Template" +msgstr "Удалить пользовательский шаблон" + +msgid "Edit Custom G-code" +msgstr "Редактировать пользовательский G-код" + +msgid "Delete Custom G-code" +msgstr "Удалить пользовательский G-код" + +msgid "Delete Filament Change" +msgstr "Удалить замену нити" + +msgid "No printer" +msgstr "Нет принтера" + +msgid "..." +msgstr "..." + +msgid "?" +msgstr "?" + +msgid "Empty" +msgstr "Пустой" + +msgid "AMS" +msgstr "AMS" + +msgid "Ams filament backup" +msgstr "Резервный филамент AMS" + +msgid "AMS not connected" +msgstr "АМС не подключен" + +msgid "Cali" +msgstr "Кали" + +msgid "Calibration of extrusion" +msgstr "АМС не подключен" + +msgid "Load Filament" +msgstr "Загрузите филамент" + +msgid "Unload Filament" +msgstr "Выгрузите филамент" + +msgid "Ext Spool" +msgstr "Внешняя катушка" + +msgid "Tips" +msgstr "Советы" + +msgid "Guide" +msgstr "Гид" + +msgid "Retry" +msgstr "Повторить попытку" + +msgid "Calibrating AMS..." +msgstr "Калибровка АМС..." + +msgid "A problem occured during calibration. Click to view the solution." +msgstr "" +"Во время калибровки возникла проблема. Нажмите, чтобы просмотреть решение." + +msgid "Calibrate again" +msgstr "Повторить калибровку" + +msgid "Cancel calibration" +msgstr "Отменить калибровку" + +msgid "Heat the nozzle" +msgstr "Нагрейте сопло" + +msgid "Cut filament" +msgstr "Отрезать филамент" + +msgid "Pull back current filament" +msgstr "Оттяните текущий филамент" + +msgid "Push new filament into extruder" +msgstr "Вставьте новый филамент в экструдер" + +msgid "Purge old filament" +msgstr "Очистите старый филамент" + +msgid "Feed new filament from external spool" +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 "" +"Выберите слот AMS, затем нажмите кнопку \\Load\\ или \\Unload\\, чтобы " +"автоматически\n" +"загрузить или выгрузить филамент." + +msgid "Edit" +msgstr "Редактировать" + +msgid "" +"All the selected objects are on the locked plate,\n" +"We can not do auto-arrange on these objects." +msgstr "" +"Все выбранные объекты находятся на заблокированной пластине,\n" +"Мы не можем делать авто-расстановку на этих объектах." + +msgid "No arrangable objects are selected." +msgstr "" +"Все выбранные объекты находятся на заблокированной пластине,\\n\n" +"Мы не можем делать авто-расстановку на этих объектах." + +msgid "" +"This plate is locked,\n" +"We can not do auto-arrange on this plate." +msgstr "" +"Эта пластина заблокирована,\n" +"Мы не можем сделать автоаранжировку на этой пластине." + +msgid "Arranging..." +msgstr "Организация..." + +msgid "" +"Arrange failed. Found some exceptions when processing object geometries." +msgstr "" +"Устроить не удалось. Найдены некоторые исключения при обработке геометрии " +"объектов." + +msgid "Arranging" +msgstr "Организация" + +msgid "Arranging canceled." +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" +"%s" +msgstr "" +"Аранжировка игнорировала следующие объекты, которые не могут поместиться в " +"один\n" +"кровать:\n" +"%s" + +msgid "" +"All the selected objects are on the locked plate,\n" +"We can not do auto-orient on these objects." +msgstr "" +"Все выбранные объекты находятся на заблокированной пластине,\n" +"Мы не можем делать автоориентацию на этих объектах." + +msgid "" +"This plate is locked,\n" +"We can not do auto-orient on this plate." +msgstr "" +"Эта пластина заблокирована,\n" +"Мы не можем сделать автоориентацию на этой пластине." + +msgid "Orienting..." +msgstr "Ориентирование..." + +msgid "Orienting" +msgstr "Ориентация" + +msgid "Error! Unable to create thread!" +msgstr "Ошибка! Невозможно создать тему!" + +msgid "Exception" +msgstr "Исключение" + +msgid "Logging in" +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 "Unknown Failure" +msgstr "Неизвестный сбой" + +msgid "Please check the printer network connection." +msgstr "Пожалуйста, проверьте сетевое подключение принтера." + +msgid "Abnormal print file data. Please slice again" +msgstr "Неправильные данные файла печати. Пожалуйста, нарежьте снова" + +msgid "Task canceled" +msgstr "Задача отменена" + +msgid "Upload task timed out. Please check the network problem and try again" +msgstr "" +"Время ожидания задачи загрузки истекло. Проверьте проблему с сетью и " +"повторите попытку" + +msgid "Cloud service connection failed. Please try 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 ГБ). Пожалуйста, " +"упростите\n" +"смоделируйте и снова нарежьте" + +msgid "Failed uploading print file" +msgstr "Не удалось загрузить файл для печати" + +msgid "Wrong Access code" +msgstr "Неверный код доступа" + +msgid "Sending print job over LAN" +msgstr "Отправка задания на печать по локальной сети" + +msgid "Sending print job through cloud service" +msgstr "Отправка задания на печать через облачный сервис" + +msgid "Service Unavailable" +msgstr "Сервис недоступен" + +msgid "Unkown Error." +msgstr "Неизвестная ошибка." + +msgid "Sending print configuration" +msgstr "Отправка конфигурации печати" + +#, c-format, boost-format +msgid "Successfully sent. Will automatically jump to the device page in %ss" +msgstr "" +"Успешно отправлено. Автоматически перейдет на страницу устройства в %ss" + +msgid "An SD card needs to be inserted before printing via LAN." +msgstr "Перед печатью через локальную сеть необходимо вставить SD-карту." + +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-карте принтера не осталось места" + +msgid "Sending gcode file over LAN" +msgstr "Отправка файла gcode по локальной сети" + +msgid "Sending gcode file through cloud service" +msgstr "Отправка файла gcode через облачный сервис" + +msgid "Sending gcode file to sdcard" +msgstr "Отправка файла gcode на SD-карту" + +#, c-format, boost-format +msgid "Successfully sent. Close current page in %s s" +msgstr "Успешно отправлено. Закрыть текущую страницу в %s s" + +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:" + +msgid "Import file" +msgstr "Импортировать файл" + +msgid "Import model and profile" +msgstr "Импорт модели и профиля" + +msgid "Import profile only" +msgstr "Импортировать только профиль" + +msgid "Import model only" +msgstr "Только модель импорта" + +msgid "Accurate" +msgstr "Точный" + +msgid "Balanced" +msgstr "Сбалансированный" + +msgid "Quick" +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\n" +"предустановку принтера, прежде чем импортировать этот архив SLA." + +msgid "Importing canceled." +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-архив не содержал пресетов. Текущее соглашение об уровне " +"обслуживания\n" +"пресеты использовались как запасной вариант." + +msgid "You cannot load SLA project with a multi-part object on the bed" +msgstr "Вы не можете загрузить проект SLA с составным объектом на кровати" + +msgid "Please check your object list before preset changing." +msgstr "Пожалуйста, проверьте список объектов перед изменением предустановки." + +msgid "Attention!" +msgstr "Внимание!" + +msgid "Downloading" +msgstr "Загрузка" + +msgid "Download failed" +msgstr "Загрузка не далась" + +msgid "Cancelled" +msgstr "Отменено" + +msgid "Install successfully." +msgstr "Успешная установка." + +msgid "Installing" +msgstr "Установка" + +msgid "Install failed" +msgstr "Установка не удалась" + +msgid "Portions copyright" +msgstr "Авторские права на части" + +msgid "Copyright" +msgstr "Авторские права" + +msgid "License" +msgstr "Лицензия" + +msgid "Orca Slicer is licensed under " +msgstr "Orca Slicer находится под лицензией " + +msgid "GNU Affero General Public License, version 3" +msgstr "Стандартная общественная лицензия GNU Affero, версия 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 основан на BambuStudio от Bambulab, который принадлежит " +"PrusaSlicer.\n" +"Prusa Research. PrusaSlicer от Slic3r Алессандро Ранеллуччи и\n" +"сообщество RepRap" + +msgid "Libraries" +msgstr "Библиотеки" + +msgid "" +"This software uses open source components whose copyright and other " +"proprietary rights belong to their respective owners" +msgstr "" +"Это программное обеспечение использует компоненты с открытым исходным кодом, " +"авторские права и другие\n" +"права собственности принадлежат их соответствующим владельцам" + +#, c-format, boost-format +msgid "About %s" +msgstr "О %s" + +msgid "Orca Slicer " +msgstr "Orca Slicer " + +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." + +msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." +msgstr "PrusaSlicer изначально основан на Slic3r от Алессандро Ранеллуччи." + +msgid "" +"Slic3r was created by Alessandro Ranellucci with the help of many other " +"contributors." +msgstr "" +"Slic3r был создан Алессандро Ранеллуччи с помощью многих других\n" +"участники." + +msgid "Version" +msgstr "Версия" + +msgid "AMS Materials Setting" +msgstr "Настройка материалов AMS" + +msgid "Confirm" +msgstr "Принято" + +msgid "Close" +msgstr "" +"Закрыто\n" +"Цвет" + +msgid "Colour" +msgstr "Цвет" + +msgid "" +"Nozzle\n" +"Temperature" +msgstr "" +"Температура\n" +" сопла" + +msgid "max" +msgstr "max" + +msgid "min" +msgstr "min" + +#, boost-format +msgid "The input value should be greater than %1% and less than %2%" +msgstr "Входное значение должно быть больше %1% и меньше %2%" + +msgid "SN" +msgstr "SN" + +msgid "Setting AMS slot information while printing is not supported" +msgstr "Установка информации о слоте AMS во время печати не поддерживается" + +msgid "Factors of dynamic flow cali" +msgstr "Факторы динамического течения, калибровка" + +msgid "Factor K" +msgstr "Фактор К" + +msgid "Factor N" +msgstr "Фактор N" + +msgid "Setting Virtual slot information while printing is not supported" +msgstr "" +"Установка информации о виртуальном слоте во время печати не поддерживается" + +msgid "Are you sure you want to clear the filament information?" +msgstr "Вы уверены, что хотите удалить информацию о нити?" + +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)" + +msgid "You need to select the material type and color first." +msgstr "Сначала необходимо выбрать тип материала и цвет." + +msgid "Other color" +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 "" +"Температура сопла и максимальная объемная скорость влияют на калибровку.\n" +"Результаты. Пожалуйста, заполните те же значения, что и фактическая печать. " +"Они могут быть\n" +"заполняется автоматически, выбирая предустановку нити." + +msgid "Nozzle Diameter" +msgstr "Диаметр сопла" + +msgid "Bed Type" +msgstr "Тип кровати" + +msgid "Nozzle temperature" +msgstr "Температура сопла" + +msgid "Bed Temperature" +msgstr "Температура кровати" + +msgid "Max volumetric speed" +msgstr "Максимальная объемная скорость" + +msgid "℃" +msgstr "℃" + +msgid "Bed temperature" +msgstr "Температура кровати" + +msgid "mm³" +msgstr "mm³" + +msgid "Start calibration" +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 "" +"Калибровка завершена. Пожалуйста, найдите наиболее равномерную экструзионную " +"линию на вашем\n" +"горячая кровать, как на картинке ниже, и вставьте значение слева в поле\n" +"поле ввода коэффициента K." + +msgid "Save" +msgstr "Сохранить" + +msgid "Last Step" +msgstr "Последний шаг" + +msgid "Example" +msgstr "Пример" + +#, c-format, boost-format +msgid "Calibrating... %d%%" +msgstr "Калибровка... %d%%" + +msgid "Calibration completed" +msgstr "Калибровка завершена" + +#, c-format, boost-format +msgid "%s does not support %s" +msgstr "%s не поддерживает %s" + +msgid "Dynamic flow Calibration" +msgstr "Калибровка динамического потока" + +msgid "Step" +msgstr "Шаг" + +msgid "AMS Slots" +msgstr "Слоты AMS" + +msgid "" +"Note: Only the AMS slots loaded with the same material type can be selected." +msgstr "" +"Примечание. Можно выбрать только слоты AMS, загруженные одним и тем же типом " +"материала." + +msgid "Enable AMS" +msgstr "Включить AMS" + +msgid "Print with filaments in the AMS" +msgstr "Печать филаментами в AMS" + +msgid "Disable AMS" +msgstr "Отключить AMS" + +msgid "Print with the filament mounted on the back of chassis" +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 "" +"Зеленый означает, что влажность AMS нормальная, оранжевый означает, что " +"влажность высокая,\n" +"красный означает, что влажность слишком высока. (Гигрометр: чем ниже, тем " +"лучше.)" + +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 "" +"Состояние влагопоглотителя ниже двух делений указывает на то, что " +"влагопоглотитель может быть\n" +"неактивный. Пожалуйста, замените осушитель. (Полосы: чем выше, тем лучше.)" + +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 "" +"Примечание. Когда крышка открыта или пакет с влагопоглотителем заменен, это " +"может занять некоторое время.\n" +"часов или ночи, чтобы впитать влагу. Низкие температуры также замедляют\n" +"процесс. В это время индикатор может не отображать патронник.\n" +"точно." + +msgid "" +"Config which AMS slot should be used for a filament used in the print job" +msgstr "" +"Настройте, какой слот AMS следует использовать для нити, используемой в " +"задании на печать" + +msgid "Filament used in this print job" +msgstr "Филамент, используемый в этом задании на печать" + +msgid "AMS slot used for this filament" +msgstr "Слот AMS, используемый для этой нити" + +msgid "Click to select AMS slot manually" +msgstr "Нажмите, чтобы выбрать слот AMS вручную" + +msgid "Do not Enable AMS" +msgstr "Не включать АМS" + +msgid "Print using materials mounted on the back of the case" +msgstr "" +"Печать с использованием материалов, закрепленных на задней части корпуса" + +msgid "Print with filaments in ams" +msgstr "Печать филаментами в ams" + +msgid "Print with filaments mounted on the back of the chassis" +msgstr "Печать с нитями, установленными на задней части корпуса" + +msgid "Filaments replace" +msgstr "Нити заменить" + +msgid "Group" +msgstr "Группа" + +msgid "AMS Settings" +msgstr "Настройки AMS" + +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 "" +"AMS автоматически считывает информацию о филаментае при вставке нового " +"филамента Bambu Lab. Это занимает около 20 секунд." + +msgid "" +"Note: if new filament is inserted during printing, the AMS will not " +"automatically read any information until printing is completed." +msgstr "" +"Примечание: если во время печати будет вставлен новый филамент, AMS не будет " +"автоматически считывать любую информацию до завершения печати." + +msgid "" +"When inserting a new filament, the AMS will not automatically read its " +"information, leaving it blank for you to enter manually." +msgstr "" +"При вставке новой нити AMS не будет автоматически считывать ее\n" +"информацию, оставив поле пустым для ввода вручную." + +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 "" +"AMS автоматически считывает информацию о вставленном филаменте. Это займет " +"около 1 минуты. В процессе считывания будет крутиться катушка." + +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 не будет автоматически считывать информацию с вставленной нити.\n" +"во время запуска и будет продолжать использовать информацию, записанную до\n" +"последнее отключение." + +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 "" +"AMS оценит оставшуюся емкость филамента Bambu после того, как информация " +"обновляется. Во время печати оставшаяся емкость будет обновляться " +"автоматически." + +msgid "AMS filament backup" +msgstr "Резервное копирование нити AMS" + +msgid "" +"AMS will continue to another spool with the same properties of filament " +"automatically when current filament runs out" +msgstr "" +"AMS перейдет на другую катушку с теми же свойствами автоматически, когда " +"текущий филамент заканчивается" + +msgid "File" +msgstr "Файл" + +msgid "Calibration" +msgstr "Калибровка" + +msgid "" +"Failed to download the plug-in. Please check your firewall settings and vpn " +"software, check and retry." +msgstr "" +"Не удалось загрузить плагин. Пожалуйста, проверьте настройки брандмауэра и " +"vpn\n" +"программное обеспечение, проверьте и повторите попытку." + +msgid "" +"Failed to install the plug-in. Please check whether it is blocked or deleted " +"by anti-virus software." +msgstr "" +"Не удалось установить плагин. Пожалуйста, проверьте, не заблокирован ли он " +"или удален\n" +"с помощью антивирусного программного обеспечения." + +msgid "click here to see more info" +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 "" +"), чтобы определить положение инструментальной головки. Это предотвращает " +"перемещение устройства за пределы\n" +"печатаемая граница и вызывающая износ оборудования." + +msgid "Go Home" +msgstr "Иди домой" + +msgid "" +"A error occurred. Maybe memory of system is not enough or it's a bug of the " +"program" +msgstr "" +"Произошла ошибка. Возможно памяти системы не хватает или это баг самой " +"программы\n" +"программа" + +msgid "Please save project and restart the program. " +msgstr "Сохраните проект и перезапустите программу. " + +msgid "Processing G-Code from Previous file..." +msgstr "Обработка G-кода из предыдущего файла..." + +msgid "Slicing complete" +msgstr "Нарезка завершена" + +msgid "Access violation" +msgstr "Нарушение доступа" + +msgid "Illegal instruction" +msgstr "Незаконная инструкция" + +msgid "Divide by zero" +msgstr "Разделить на ноль" + +msgid "Overflow" +msgstr "Переэкструзия" + +msgid "Underflow" +msgstr "Недоэкструзия" + +msgid "Floating reserved operand" +msgstr "Плавающий зарезервированный операнд" + +msgid "Stack overflow" +msgstr "Переполнение стека" + +msgid "Unknown error when export G-code." +msgstr "Неизвестная ошибка при экспорте G-кода." + +#, boost-format +msgid "" +"Failed to save gcode file.\n" +"Error message: %1%.\n" +"Source file %2%." +msgstr "" +"Не удалось сохранить файл gcode.\n" +"Сообщение об ошибке: %1%.\n" +"Исходный файл %2%." + +#, boost-format +msgid "Succeed to export G-code to %1%" +msgstr "Успешно экспортировать G-код в %1%" + +msgid "Running post-processing scripts" +msgstr "Запуск скриптов постобработки" + +msgid "Copying of the temporary G-code to the output G-code failed" +msgstr "Не удалось скопировать временный G-код в выходной G-код" + +#, boost-format +msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" +msgstr "" +"Планирование загрузки в `%1%`. См. Окно -> Очередь загрузки узла печати" + +msgid "Origin" +msgstr "Источник" + +msgid "Diameter" +msgstr "Диаметр" + +msgid "Size in X and Y of the rectangular plate." +msgstr "Размер по осям X и Y прямоуголько кровати." + +msgid "" +"Distance of the 0,0 G-code coordinate from the front left corner of the " +"rectangle." +msgstr "Расстояние координаты G-кода 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 "Прямоугольный" + +msgid "Circular" +msgstr "Округлый" + +msgid "Custom" +msgstr "Стандартный" + +msgid "Load shape from STL..." +msgstr "Загрузить форму из STL..." + +msgid "Settings" +msgstr "Настройка" + +msgid "Texture" +msgstr "Текстура" + +msgid "Remove" +msgstr "Удалить" + +msgid "Not found:" +msgstr "Не найдено:" + +msgid "Model" +msgstr "Модель" + +msgid "Choose an STL file to import bed shape from:" +msgstr "Выберите файл STL для импорта формы кровати:" + +msgid "Invalid file format." +msgstr "Недопустимый формат файла." + +msgid "Error! Invalid model" +msgstr "Ошибка! Недопустимая модель" + +msgid "The selected file contains no geometry." +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)" + +msgid "Choose an STL file to import bed model from:" +msgstr "Выберите файл STL для импорта модели кровати:" + +msgid "Bed Shape" +msgstr "Форма кровати" + +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 "" +"Форсунка может быть заблокирована, когда температура выходит за пределы " +"рекомендуемого диапазона.\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" +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" +msgstr "" +"Слишком маленькая максимальная объемная скорость.\n" +"Сбросить до 0,5" + +msgid "" +"Too small layer height.\n" +"Reset to 0.2" +msgstr "" +"Слишком маленькая высота слоя.\n" +"Сбросить на 0,2" + +msgid "" +"Too small ironing spacing.\n" +"Reset to 0.1" +msgstr "" +"Слишком маленькое расстояние между глажками.\n" +"Сбросить на 0,1" + +msgid "" +"Zero initial layer height is invalid.\n" +"\n" +"The first layer height will be reset to 0.2." +msgstr "" +"Нулевая начальная высота слоя недействительна.\n" +"\n" +"Высота первого слоя будет сброшена до 0,2." + +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 "" +"Этот параметр используется только для настройки размера модели с небольшим " +"значением в некоторых случаях\n" +"Например, когда размер модели имеет небольшую погрешность и ее трудно " +"собрать.\n" +"Для настройки большого размера используйте функцию масштабирования модели.\n" +"\n" +"Значение будет сброшено на 0." + +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 "" +"Слишком большая компенсация слоновой стопы нецелесообразна.\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." +msgstr "" +"Спиральный режим работает только тогда, когда периметры равны 1, поддержка " +"отключена, верхняя оболочка равны 0, плотность заполнения равна 0, а тип " +"замедленной съемки — традиционный." + +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 "" +"Изменить эти настройки автоматически? \n" +"Да – изменить эти настройки и автоматически включить режим спирали\n" +"Нет — на этот раз отказаться от использования режима спирали" + +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 не работает, когда Adaptive Layer Height \n" +"или Independent Support высота слоя включена\n" +"Что вы хотите сохранить?\n" +"ДА - Сохранить Башню Очистки\n" +"НЕТ — Сохранить высоту адаптивного слоя и высоту независимого " +"поддерживающего слоя" + +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 "" +"Башня Prime не работает, если включена адаптивная высота слоя.\n" +"Что вы хотите сохранить?\n" +"ДА - Сохранить Башню Очистки\n" +"НЕТ — Сохранить высоту адаптивного слоя" + +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 "" +"Основная башня не работает, когда включена Независимая высота опорного " +"слоя.\n" +"Что вы хотите сохранить?\n" +"ДА - Сохранить Башню Очистки\n" +"НЕТ - Сохранить независимую высоту опорного слоя" + +#, boost-format +msgid "%1% infill pattern doesn't support 100%% density." +msgstr "Шаблон заполнения %1% не поддерживает плотность 100%%." + +msgid "" +"Switch to rectilinear pattern?\n" +"Yes - switch to rectilinear pattern automaticlly\n" +"No - reset density to default non 100% value automaticlly" +msgstr "" +"Переключиться на прямолинейный шаблон?\n" +"Да - автоматически переключаться на прямолинейный шаблон\n" +"Нет - автоматически сбросить плотность до значения по умолчанию, отличного " +"от 100%" + +msgid "" +"While printing by Object, the extruder may collide skirt.\n" +"Thus, reset the skirt layer to 1 to avoid that." +msgstr "" +"При печати объектом экструдер может столкнуться с юбкой.\n" +"Таким образом, сбросьте слой юбки до 1, чтобы избежать этого." + +msgid "Auto bed leveling" +msgstr "Автоматическое выравнивание кровати" + +msgid "Heatbed preheating" +msgstr "Предварительный нагрев" + +msgid "Sweeping XY mech mode" +msgstr "Режим Sweeping XY mech" + +msgid "Changing filament" +msgstr "Смена филамента" + +msgid "M400 pause" +msgstr "M400 пауза" + +msgid "Paused due to filament runout" +msgstr "Пуаза из-за датчика филамента" + +msgid "Heating hotend" +msgstr "Нагрев хотенда" + +msgid "Calibrating extrusion" +msgstr "Калибровка экструзии" + +msgid "Scanning bed surface" +msgstr "Сканирование поверхности кровати" + +msgid "Inspecting first layer" +msgstr "Проверка первого слоя" + +msgid "Identifying build plate type" +msgstr "Определение типа рабочей пластины" + +msgid "Calibrating Micro Lidar" +msgstr "Калибровка микролидара" + +msgid "Homing toolhead" +msgstr "Самонаводящаяся головка" + +msgid "Cleaning nozzle tip" +msgstr "Очистка сопла" + +msgid "Checking extruder temperature" +msgstr "Проверка температуры сопла" + +msgid "Printing was paused by the user" +msgstr "Печать приостановлена ​​пользователем" + +msgid "Pause of front cover falling" +msgstr "Пауза падения передней крышки" + +msgid "Calibrating the micro lida" +msgstr "Калибровка микролидар" + +msgid "Calibrating extrusion flow" +msgstr "Калибровка экструзионного потока" + +msgid "Paused due to nozzle temperature malfunction" +msgstr "Приостановлено из-за сбоя температуры сопла" + +msgid "Paused due to heat bed temperature malfunction" +msgstr "Приостановлено из-за неисправности температуры нагревательного слоя" + +msgid "MC" +msgstr "MC" + +msgid "MainBoard" +msgstr "Основная плата" + +msgid "TH" +msgstr "TH" + +msgid "XCam" +msgstr "XCam" + +msgid "Unknown" +msgstr "Неизвестный" + +msgid "Fatal" +msgstr "Фатальный" + +msgid "Serious" +msgstr "Серьезный" + +msgid "Common" +msgstr "Общий" + +msgid "Update successful." +msgstr "Обновление успешно." + +msgid "Downloading failed." +msgstr "Загрузка не удалась." + +msgid "Verification failed." +msgstr "Проверка не удалась." + +msgid "Update failed." +msgstr "Не удалось обновить." + +msgid "Failed to start printing job" +msgstr "Не удалось запустить задание на печать" + +msgid "default" +msgstr "по умолчанию" + +msgid "parameter name" +msgstr "имя параметра" + +msgid "N/A" +msgstr "Н/Д" + +#, c-format, boost-format +msgid "%s can't be percentage" +msgstr "%s не может быть процентом" + +#, c-format, boost-format +msgid "Value %s is out of range, continue?" +msgstr "Значение %s вне допустимого диапазона, продолжить?" + +msgid "Parameter validation" +msgstr "Проверка параметров" + +msgid "Value is out of range." +msgstr "Значение вне допустимого диапазона." + +#, c-format, boost-format +msgid "" +"Is it %s%% or %s %s?\n" +"YES for %s%%, \n" +"NO for %s %s." +msgstr "" +"Это %s%% или %s %s?\n" +"ДА для %s%%, \n" +"НЕТ для %s %s." + +#, boost-format +msgid "Invalid format. Expected vector format: \"%1%\"" +msgstr "Неверный формат. Ожидаемый векторный формат: \"%1%\"" + +msgid "Layer Height" +msgstr "Высота слоя" + +msgid "Line Width" +msgstr "Ширина линии" + +msgid "Fan Speed" +msgstr "Скорость вентилятора" + +msgid "Temperature" +msgstr "Температура" + +msgid "Flow" +msgstr "Поток" + +msgid "Tool" +msgstr "Инструмент" + +msgid "Layer Time" +msgstr "Время слоя" + +msgid "Layer Time (log)" +msgstr "Время слоя (журнал)" + +msgid "Height: " +msgstr "Высота: " + +msgid "Width: " +msgstr "Ширина: " + +msgid "Speed: " +msgstr "Скорость: " + +msgid "Flow: " +msgstr "Поток: " + +msgid "Layer Time: " +msgstr "Время слоя: " + +msgid "Fan Speed: " +msgstr "Скорость вентилятора: " + +msgid "Temperature: " +msgstr "Температура: " + +msgid "Loading G-codes" +msgstr "Загрузка G-кодов" + +msgid "Generating geometry vertex data" +msgstr "Генерация данных вершин геометрии" + +msgid "Generating geometry index data" +msgstr "Генерация данных индекса геометрии" + +msgid "Statistics of All Plates" +msgstr "Статистика" + +msgid "Display" +msgstr "Отображать" + +msgid "Flushed" +msgstr "Очистка" + +msgid "Total" +msgstr "Общий" + +msgid "Total Time Estimation" +msgstr "Оценка общего времени" + +msgid "Total time" +msgstr "Общее время" + +msgid "up to" +msgstr "вплоть до" + +msgid "above" +msgstr "выше" + +msgid "from" +msgstr "от" + +msgid "Color Scheme" +msgstr "Цветовая схема" + +msgid "Time" +msgstr "Время" + +msgid "Percent" +msgstr "Процент" + +msgid "Layer Height (mm)" +msgstr "Высота слоя (мм)" + +msgid "Line Width (mm)" +msgstr "Ширина линии (мм)" + +msgid "Speed (mm/s)" +msgstr "Скорость (мм/с)" + +msgid "Fan Speed (%)" +msgstr "Скорость вентилятора (%)" + +msgid "Temperature (°C)" +msgstr "Температура (°С)" + +msgid "Volumetric flow rate (mm³/s)" +msgstr "Объемный расход (мм³/с)" + +msgid "Used filament" +msgstr "Используемый филамент" + +msgid "Travel" +msgstr "Перемещение" + +msgid "Seams" +msgstr "Швы" + +msgid "Retract" +msgstr "Ретракт" + +msgid "Unretract" +msgstr "Втягивание" + +msgid "Filament Changes" +msgstr "Смена филамента" + +msgid "Wipe" +msgstr "Протирание" + +msgid "Options" +msgstr "Параметры" + +msgid "travel" +msgstr "перемещение" + +msgid "Extruder" +msgstr "Экструдер" + +msgid "Filament change times" +msgstr "Время смены филамента" + +msgid "Cost" +msgstr "Раход" + +msgid "Color change" +msgstr "Изменение цвета" + +msgid "Print" +msgstr "Печать" + +msgid "Pause" +msgstr "Пауза" + +msgid "Printer" +msgstr "Принтер" + +msgid "Print settings" +msgstr "Настройки печати" + +msgid "Total Estimation" +msgstr "Общая оценка" + +msgid "Time Estimation" +msgstr "Оценка времени" + +msgid "Normal mode" +msgstr "Нормальный режим" + +msgid "Prepare time" +msgstr "Время подготовки" + +msgid "Model printing time" +msgstr "Время печати модели" + +msgid "Switch to silent mode" +msgstr "Переключиться в тихий режим" + +msgid "Switch to normal mode" +msgstr "Переключиться в обычный режим" + +msgid "Variable layer height" +msgstr "Переменная высота слоя" + +msgid "Adaptive" +msgstr "Адаптивный" + +msgid "Quality / Speed" +msgstr "Качество/Скорость" + +msgid "Smooth" +msgstr "Гладкий" + +msgid "Radius" +msgstr "Радиус" + +msgid "Keep min" +msgstr "Мимальное удержание" + +msgid "Left mouse button:" +msgstr "Левая кнопка мыши:" + +msgid "Add detail" +msgstr "Добавить детали" + +msgid "Right mouse button:" +msgstr "Правая кнопка мыши:" + +msgid "Remove detail" +msgstr "Удалить детали" + +msgid "Shift + Left mouse button:" +msgstr "SHIFT + Левая кнопка мыши:" + +msgid "Reset to base" +msgstr "Сбросить на базу" + +msgid "Shift + Right mouse button:" +msgstr "Shift + правая кнопка мыши:" + +msgid "Smoothing" +msgstr "Сглаживание" + +msgid "Mouse wheel:" +msgstr "Колёсико мыши:" + +msgid "Increase/decrease edit area" +msgstr "Увеличение/уменьшение области редактирования" + +msgid "Sequence" +msgstr "Последовательность" + +msgid "Mirror Object" +msgstr "Зеркальный объект" + +msgid "Tool Move" +msgstr "Инструмент Перемещение" + +msgid "Tool Rotate" +msgstr "Инструмент Вращение" + +msgid "Move Object" +msgstr "Переместить объект" + +msgid "Auto Orientation options" +msgstr "Параметры Автоориентации" + +msgid "Enable rotation" +msgstr "Включить вращение" + +msgid "Optimize support interface area" +msgstr "Оптимизация области поддержки" + +msgid "Orient" +msgstr "Ориентация" + +msgid "Arrange options" +msgstr "Упорядочить варианты" + +msgid "Spacing" +msgstr "Расстояние" + +msgid "Auto rotate for arrangement" +msgstr "Автоповорот для расположени" + +msgid "Allow multiple materials on same plate" +msgstr "Разрешить использование нескольких материалов на одной пластине" + +msgid "Avoid extrusion calibration region" +msgstr "Избегайте области калибровки экструзии" + +msgid "Add" +msgstr "Добавить" + +msgid "Add plate" +msgstr "Добавить плату" + +msgid "Auto orient" +msgstr "Автоориентация" + +msgid "Arrange all objects" +msgstr "Упорядочить все объекты" + +msgid "Arrange objects on selected plates" +msgstr "Расставить объекты на столе" + +msgid "Split to objects" +msgstr "Разделить на объекты" + +msgid "Split to parts" +msgstr "Разделить на части" + +msgid "Assembly View" +msgstr "Вид сборки" + +msgid "Select Plate" +msgstr "Выбор кровати" + +msgid "Assembly Return" +msgstr "Возврат сборки" + +msgid "return" +msgstr "возврат" + +msgid "Paint Toolbar" +msgstr "Панель инструментов рисования" + +msgid "Explosion Ratio" +msgstr "Коэффициент взрыва" + +msgid "Section View" +msgstr "Разрез" + +msgid "Assemble Control" +msgstr "Сборка управления" + +msgid "Total Volume:" +msgstr "Общий объем:" + +msgid "Assembly Info" +msgstr "Информация о сборке" + +msgid "Volume:" +msgstr "Объем:" + +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 "" +"Обнаружены конфликты путей gcode на уровне %d, z = %.2lf мм. Пожалуйста \n" +"разделить конфликтующие объекты дальше (%s <-> %s)." + +msgid "An object is layed over the boundary of plate." +msgstr "Объект наложен на границу стола." + +msgid "A G-code path goes beyond the boundary of plate." +msgstr "Путь G-кода выходит за пределы зоны печати." + +msgid "Only the object being edit is visible." +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." +msgstr "" +"Объект находится за границей пластины или превышает ограничение по высоте.\n" +"Пожалуйста, решите проблему, переместив его полностью на тарелку или с нее, " +"и подтверждение того, что высота находится в пределах объема сборки." + +msgid "Jump to" +msgstr "Перейти к" + +msgid "ERROR:" +msgstr "ОШИБКА:" + +msgid "Calibration step selection" +msgstr "Выбор шага калибровки" + +msgid "Micro lidar calibration" +msgstr "Калибровка микролидара" + +msgid "Bed leveling" +msgstr "Выравнивание кровати" + +msgid "Resonance frequency identification" +msgstr "Идентификация резонансной частоты" + +msgid "Calibration program" +msgstr "Программа калибровки" + +msgid "" +"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" +msgstr "Калибровочный поток" + +msgid "Start Calibration" +msgstr "Начать калибровку" + +msgid "Completed" +msgstr "Завершенный" + +msgid "Calibrating" +msgstr "Калибровка" + +msgid "Auto-record Monitoring" +msgstr "Автозапись Мониторинга" + +msgid "Go Live" +msgstr "В прямом эфире" + +msgid "Resolution" +msgstr "Разрешение нарезки" + +msgid "Show \"Live Video\" guide page." +msgstr "Показать \\Прямое видео\\ страницу руководства." + +msgid "720p" +msgstr "720p" + +msgid "1080p" +msgstr "1080p" + +msgid "ConnectPrinter(LAN)" +msgstr "Подключить принтер (локальная сеть)" + +msgid "Please input the printer access code:" +msgstr "Введите код доступа к принтеру:" + +msgid "" +"You can find it in \"Settings > Network > Connection code\"\n" +"on the printer, as shown in the figure:" +msgstr "" +"Вы можете найти его в \\Настройки > Сеть > Код подключения\"\n" +"на принтере, как показано на рисунке:" + +msgid "Invalid input." +msgstr "Ошибка ввода." + +msgid "New Window" +msgstr "Новое окно" + +msgid "Open a new window" +msgstr "Открыть новое окно" + +msgid "Application is closing" +msgstr "Приложение закрывается" + +msgid "Closing Application while some presets are modified." +msgstr "Закрытие приложения при изменении некоторых пресетов." + +msgid "Logging" +msgstr "Ведение журнала" + +msgid "Prepare" +msgstr "Подготовить" + +msgid "Preview" +msgstr "Предварительный просмотр" + +msgid "Device" +msgstr "Устройство" + +msgid "Project" +msgstr "Проект" + +msgid "Yes" +msgstr "Да" + +msgid "No" +msgstr "Нет" + +msgid "will be closed before creating a new model. Do you want to continue?" +msgstr "будет закрыт перед созданием новой модели. Вы хотите продолжать?" + +msgid "Slice plate" +msgstr "Слайс пластина" + +msgid "Print plate" +msgstr "Печатная пластина" + +msgid "Slice all" +msgstr "Нарезать всё" + +msgid "Export G-code file" +msgstr "Экспорт файла G-кода" + +msgid "Send" +msgstr "Отправить" + +msgid "Export plate sliced file" +msgstr "Экспорт файла срезов планшета" + +msgid "Export all sliced file" +msgstr "Экспортировать весь нарезанный файл" + +msgid "Print all" +msgstr "Распечатать все" + +msgid "Send all" +msgstr "Отправить всё" + +msgid "Keyboard Shortcuts" +msgstr "Горячие клавиши" + +msgid "Show the list of the keyboard shortcuts" +msgstr "Показать список горячих клавиш" + +msgid "Setup Wizard" +msgstr "Мастер настройки" + +msgid "Show Configuration Folder" +msgstr "Показать папку конфигурации" + +msgid "Show Tip of the Day" +msgstr "Показать Совет дня" + +msgid "Check for Update" +msgstr "Проверить обновления" + +msgid "Open Network Test" +msgstr "Открытый сетевой тест" + +#, c-format, boost-format +msgid "&About %s" +msgstr "&О %s" + +msgid "Upload Models" +msgstr "Загрузить модели" + +msgid "Download Models" +msgstr "Скачать модели" + +msgid "Default View" +msgstr "Вид по умолчанию" + +#. TRN To be shown in the main menu View->Top +msgid "Top" +msgstr "Верх" + +msgid "Top View" +msgstr "Вид сверху" + +#. TRN To be shown in the main menu View->Bottom +msgid "Bottom" +msgstr "Низ" + +msgid "Bottom View" +msgstr "Вид снизу" + +msgid "Front" +msgstr "Перед" + +msgid "Front View" +msgstr "Вид спереди" + +msgid "Rear" +msgstr "Зад" + +msgid "Rear View" +msgstr "Вид сзади" + +msgid "Left" +msgstr "Лево" + +msgid "Left View" +msgstr "Вид слева" + +msgid "Right" +msgstr "Право" + +msgid "Right View" +msgstr "Вид справа" + +msgid "Start a new window" +msgstr "Начать новое окно" + +msgid "New Project" +msgstr "Новый проект" + +msgid "Start a new project" +msgstr "Начать новый проект" + +msgid "Open a project file" +msgstr "Откройте файл проекта" + +msgid "Recent projects" +msgstr "Недавние Проекты" + +msgid "Save Project" +msgstr "Сохранить проект" + +msgid "Save current project to file" +msgstr "Сохранить текущий проект в файл" + +msgid "Save Project as" +msgstr "Сохранить проект как" + +msgid "Shift+" +msgstr "Shift+" + +msgid "Save current project as" +msgstr "Сохранить текущий проект как" + +msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" +msgstr "Импорт 3MF/STL/STEP/SVG/OBJ/AMF" + +msgid "Load a model" +msgstr "Загрузите модель" + +msgid "Import Configs" +msgstr "Импорт конфигураций" + +msgid "Load configs" +msgstr "Загрузить конфигурацию" + +msgid "Import" +msgstr "Импорт" + +msgid "Export all objects as STL" +msgstr "Экспортировать все объекты в формате STL" + +msgid "Export Generic 3MF" +msgstr "Экспорт общего 3MF" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "Экспорт файла 3mf без использования каких-либо 3mf-расширений" + +msgid "Export current sliced file" +msgstr "Экспорт текущего нарезанного файла" + +msgid "Export all plate sliced file" +msgstr "Экспортировать весь файл нарезки" + +msgid "Export G-code" +msgstr "Экспорт G-кода" + +msgid "Export current plate as G-code" +msgstr "Экспортировать текущую пластину как G-код" + +msgid "Export &Configs" +msgstr "Экспорт &конфигураци" + +msgid "Export current configuration to files" +msgstr "Экспорт текущей конфигурации в файлы" + +msgid "Export" +msgstr "Экспорт" + +msgid "Quit" +msgstr "Выход" + +msgid "Undo" +msgstr "Отмена" + +msgid "Redo" +msgstr "Повторить" + +msgid "Cut selection to clipboard" +msgstr "Вырезать выделение в буфер обмена" + +msgid "Copy" +msgstr "Копировать" + +msgid "Copy selection to clipboard" +msgstr "Скопировать выделение в буфер обмена" + +msgid "Paste" +msgstr "Вставить" + +msgid "Paste clipboard" +msgstr "Вставить буфер обмена" + +msgid "Delete selected" +msgstr "Удалить выбранное" + +msgid "Deletes the current selection" +msgstr "Удаляет текущий выбор" + +msgid "Delete all" +msgstr "Удаляет всё" + +msgid "Deletes all objects" +msgstr "Удаляет все объекты" + +msgid "Clone selected" +msgstr "Клонировать выбранное" + +msgid "Clone copies of selections" +msgstr "Клонировать копии выбранных объектов" + +msgid "Select all" +msgstr "Выбрать всё" + +msgid "Selects all objects" +msgstr "Выбрать все объекты" + +msgid "Deselect all" +msgstr "Убрать выделение со всего" + +msgid "Deselects all objects" +msgstr "Отменяет выбор всех объектов" + +msgid "Use Perspective View" +msgstr "Используйте вид в перспективе" + +msgid "Use Orthogonal View" +msgstr "Использовать ортогональный вид" + +msgid "Show &Labels" +msgstr "Показать &Ярлыки" + +msgid "Show object labels in 3D scene" +msgstr "Показать метки объектов в 3D-сцене" + +msgid "Preferences" +msgstr "Настройки" + +msgid "View" +msgstr "Вид" + +msgid "Help" +msgstr "Помощь" + +msgid "Temperature Calibration" +msgstr "Калибровка температуры" + +msgid "Pass 1" +msgstr "Пройти 1" + +msgid "Flow rate test - Pass 1" +msgstr "Тест расхода - Пройдено 1" + +msgid "Pass 2" +msgstr "Проход 2" + +msgid "Flow rate test - Pass 2" +msgstr "Тест расхода - Пройдено 2" + +msgid "Flow rate" +msgstr "Скорость потока" + +msgid "Pressure advance" +msgstr "Повышение давления" + +msgid "Retraction test" +msgstr "Тест на втягивание" + +msgid "Orca Tolerance Test" +msgstr "Тест на переносимость ORCA" + +msgid "Max flowrate" +msgstr "Max расход" + +msgid "VFA" +msgstr "VFA" + +msgid "More..." +msgstr "Больше..." + +msgid "Tutorial" +msgstr "Руководство" + +msgid "Calibration help" +msgstr "Справка по калибровке" + +msgid "More calibrations" +msgstr "Больше калибровок" + +msgid "3D Models" +msgstr "3D модели" + +msgid "&Open G-code" +msgstr "&Открыть G-код" + +msgid "Open a G-code file" +msgstr "Откройте файл G-кода" + +msgid "Re&load from Disk" +msgstr "Перезагрузить с диска" + +msgid "Reload the plater from disk" +msgstr "Перезагрузить планшет с диска" + +msgid "Export &Toolpaths as OBJ" +msgstr "Экспорт &траекторий как OBJ" + +msgid "Export toolpaths as OBJ" +msgstr "Экспортировать траектории как OBJ" + +msgid "Open &Studio" +msgstr "Открыть &студию" + +msgid "Open Studio" +msgstr "Открытая студия" + +msgid "&Quit" +msgstr "&Выход" + +#, c-format, boost-format +msgid "Quit %s" +msgstr "Выйти %s" + +msgid "&File" +msgstr "&Файл" + +msgid "&View" +msgstr "&Вид" + +msgid "&Help" +msgstr "&Помощь" + +#, c-format, boost-format +msgid "A file exists with the same name: %s, do you want to override it." +msgstr "Существует файл с таким же именем: %s, вы хотите переопределить его." + +#, c-format, boost-format +msgid "A config exists with the same name: %s, do you want to override it." +msgstr "" +"Существует конфигурация с таким же именем: %s, вы хотите переопределить ее." + +msgid "Overwrite file" +msgstr "Перезаписать файл" + +msgid "Yes to All" +msgstr "Да для всех" + +msgid "No to All" +msgstr "Нет для всех" + +msgid "Choose a directory" +msgstr "Выберите каталог" + +#, 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. (Только несистемные " +"конфигурационные элементы)" +msgstr[1] "" +"Экспортировано конфигурационных элементов: %d. (Только несистемные " +"конфигурационные элементы)" +msgstr[2] "" +"Экспортировано конфигурационных элементов: %d. (Только несистемные " +"конфигурационные элементы)" + +msgid "Export result" +msgstr "Экспорт результата" + +msgid "Select profile to load:" +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)" +msgstr[0] "" +"Импортировано конфигурационных элементов: %d. (Только несистемные и " +"совместимые конфигурационные элементы)" +msgstr[1] "" +"Импортировано конфигурационных элементов: %d. (Только несистемные и " +"совместимые конфигурационные элементы)" +msgstr[2] "" +"Импортировано конфигурационных элементов: %d. (Только несистемные и " +"совместимые конфигурационные элементы)" + +msgid "Import result" +msgstr "Импортировать результат" + +msgid "File is missing" +msgstr "Файл отсутствует" + +msgid "The project is no longer available." +msgstr "Проект более недоступен." + +msgid "Filament Settings" +msgstr "Настройки филамента" + +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 "" +"Вы хотите синхронизировать свои личные данные с Bambu Cloud? \n" +"Он содержит следующую информацию:\n" +"1. Предустановки процесса\n" +"2. Предустановки филамента\n" +"3. Предустановки принтера" + +msgid "Synchronization" +msgstr "Синхронизация" + +msgid "Initialize failed (No Device)!" +msgstr "Ошибка инициализации (нет устройства)!" + +msgid "Initialize failed (No Camera Device)!" +msgstr "Ошибка инициализации (нет камеры)!" + +msgid "Initializing..." +msgstr "Инициализация..." + +msgid "Loading..." +msgstr "Загрузка..." + +msgid "Initialize failed (Not supported with LAN-only mode)!" +msgstr "" +"Ошибка инициализации (не поддерживается в режиме только для локальной сети)!" + +msgid "Initialize failed (Not accessible in LAN-only mode)!" +msgstr "Инициализация не удалась (недоступно только в режиме LAN)!" + +msgid "Printer is busy downloading, Please wait for the downloading to finish." +msgstr "Принтер занят загрузкой. Дождитесь завершения загрузки." + +msgid "Initialize failed (Missing LAN ip of printer)!" +msgstr "Ошибка инициализации (отсутствует IP-адрес принтера в локальной сети)!" + +msgid "Initialize failed (Not supported by printer)!" +msgstr "Ошибка инициализации (не поддерживается принтером)!" + +#, c-format, boost-format +msgid "Initialize failed (%s)!" +msgstr "Ошибка инициализации (%s)!" + +msgid "Network unreachable" +msgstr "Сеть недоступна" + +#, c-format, boost-format +msgid "Stopped [%d]!" +msgstr "Остановлен [%d]!" + +msgid "Stopped." +msgstr "Остановлено." + +msgid "LAN Connection Failed (Failed to start liveview)" +msgstr "" +"Ошибка подключения к локальной сети (не удалось запустить просмотр в " +"реальном времени)" + +msgid "" +"Virtual Camera Tools is required for this task!\n" +"Do you want to install them?" +msgstr "" +"Для этой задачи требуются инструменты виртуальной камеры!\\n\n" +"Вы хотите их установить?" + +msgid "Downloading Virtual Camera Tools" +msgstr "Загрузка инструментов виртуальной камеры" + +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 "" +"Запущена другая виртуальная камера.\n" +"Bambu Studio поддерживает только одну виртуальную камеру.\n" +"Вы хотите остановить эту виртуальную камеру?" + +#, c-format, boost-format +msgid "Virtual camera initialize failed (%s)!" +msgstr "Ошибка инициализации виртуальной камеры (%s)!" + +msgid "Information" +msgstr "Информация" + +msgid "Playing..." +msgstr "Игра..." + +#, c-format, boost-format +msgid "Load failed [%d]!" +msgstr "Загрузка не удалась [%d]!" + +msgid "Year" +msgstr "Год" + +msgid "Month" +msgstr "Месяц" + +msgid "All Files" +msgstr "Все файлы" + +msgid "Group files by year, recent first." +msgstr "Сгруппируйте файлы по годам, сначала недавние." + +msgid "Group files by month, recent first." +msgstr "Сгруппируйте файлы по месяцам, сначала недавние." + +msgid "Show all files, recent first." +msgstr "Показать все файлы, сначала последние." + +msgid "Timelapse" +msgstr "Таймлапс" + +msgid "Switch to timelapse files." +msgstr "Переключитесь на файлы замедленной съемки." + +msgid "Video" +msgstr "Видео" + +msgid "Switch to video files." +msgstr "Переключиться на видеофайлы." + +msgid "Delete selected files from printer." +msgstr "Удалить выбранные файлы из принтера." + +msgid "Download" +msgstr "Скачать" + +msgid "Download selected files from printer." +msgstr "Загрузите выбранные файлы с принтера." + +msgid "Select" +msgstr "Выбор" + +msgid "Batch manage files." +msgstr "Пакетное управление файлами." + +msgid "No printers." +msgstr "Никаких принтеров." + +msgid "Not supported by this model of printer!" +msgstr "Не поддерживается данной моделью принтера!" + +msgid "Connecting..." +msgstr "Подключение..." + +#, c-format, boost-format +msgid "Connect failed [%d]!" +msgstr "Ошибка подключения [%d]!" + +msgid "Loading file list..." +msgstr "Загрузка списка файлов..." + +msgid "No files" +msgstr "Файлов нет" + +msgid "Not accessible in LAN-only mode!" +msgstr "Недоступно в режиме только LAN!Отсутствует LAN ip принтера!" + +msgid "Missing LAN ip of printer!" +msgstr "Отсутствует LAN ip принтера!" + +#, c-format, boost-format +msgid "You are going to delete %u files. Are you sure to continue?" +msgstr "Вы собираетесь удалить %u файлов. Вы уверены, что хотите продолжить?" + +msgid "Delete files" +msgstr "Удалить файлы" + +#, c-format, boost-format +msgid "File '%s' was lost! Please download it again." +msgstr "Файл '%s' потерян! Пожалуйста, загрузите его снова." + +msgid "Download waiting..." +msgstr "Ожидание загрузки..." + +msgid "Play" +msgstr "Воспроизвести" + +msgid "Open Folder" +msgstr "Открыть папку" + +msgid "Download finished" +msgstr "Загрузка завершена" + +#, c-format, boost-format +msgid "Downloading %d%%..." +msgstr "Загрузка %d%%..." + +msgid "Speed:" +msgstr "Скорость:" + +msgid "Deadzone:" +msgstr "Мертвая зона:" + +msgid "Options:" +msgstr "Параметры:" + +msgid "Zoom" +msgstr "Увеличить" + +msgid "Translation/Zoom" +msgstr "Перевод/Увеличение" + +msgid "3Dconnexion settings" +msgstr "Настройки 3D-соединения" + +msgid "Swap Y/Z axes" +msgstr "Поменять местами оси Y/Z" + +msgid "Camera" +msgstr "Камера" + +msgid "SD Card" +msgstr "SD карта" + +msgid "Camera Setting" +msgstr "Настройка камеры" + +msgid "Printing Progress" +msgstr "Ход печати" + +msgid "Resume" +msgstr "Продолжить" + +msgid "Stop" +msgstr "Стоп" + +msgid "0" +msgstr "0" + +msgid "Layer: N/A" +msgstr "Слой: нет данных" + +msgid "Clear" +msgstr "Очистка" + +msgid "Control" +msgstr "Контроль" + +msgid "Print Options" +msgstr "Параметры печати" + +msgid "100%" +msgstr "100%" + +msgid "Lamp" +msgstr "Лампа" + +msgid "Aux" +msgstr "Aux" + +msgid "Cham" +msgstr "Камера" + +msgid "Bed" +msgstr "Кровать" + +msgid "Unload" +msgstr "Выгрузка" + +msgid "Debug Info" +msgstr "Отладочная информация" + +msgid "No SD Card" +msgstr "Нет SD-карты" + +msgid "SD Card Abnormal" +msgstr "SD-карта не в порядке" + +msgid "Printing List" +msgstr "Список печати" + +msgid "Cancel print" +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] из-за отключения режима локальной сети. " +"Пожалуйста, переподключите принтер, войдя в свою учетную запись пользователя." + +#, 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] из-за включения режима локальной сети. " +"Пожалуйста, переподключите\n" +"принтера, введя код доступа, который можно получить на экране принтера." + +msgid "Downloading..." +msgstr "Загрузка..." + +msgid "Cloud Slicing..." +msgstr "Разделение облака..." + +#, c-format, boost-format +msgid "In Cloud Slicing Queue, there are %s tasks ahead." +msgstr "В очереди Cloud Slicing Queue впереди %s задач." + +#, c-format, boost-format +msgid "Layer: %s" +msgstr "Слой: %s" + +#, 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 градусов перед загрузкой " +"нити." + +msgid "Still unload" +msgstr "Еще разгрузить" + +msgid "Still load" +msgstr "Еще загрузить" + +msgid "Please select an AMS slot before calibration" +msgstr "Пожалуйста, выберите слот AMS перед калибровкой" + +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 "Это действует только во время печати" + +msgid "Silent" +msgstr "Тихий" + +msgid "Standard" +msgstr "Стандартный" + +msgid "Sport" +msgstr "Спортивный" + +msgid "Ludicrous" +msgstr "Нелепый" + +msgid "Can't start this without SD card." +msgstr "Не могу запустить это без SD-карты." + +msgid "Failed to connect to the server" +msgstr "Не удалось подключиться к серверу" + +msgid "Status" +msgstr "Статус" + +msgid "Media" +msgstr "Медиа" + +msgid "Update" +msgstr "Обновление" + +msgid "HMS" +msgstr "HMS" + +msgid "Failed to connect to the printer" +msgstr "Не удалось подключиться к принтеру" + +msgid "Don't show again" +msgstr "Больше не показывать" + +#, c-format, boost-format +msgid "%s error" +msgstr "%s ошибка" + +#, c-format, boost-format +msgid "%s has encountered an error" +msgstr "%s обнаружил ошибку" + +#, c-format, boost-format +msgid "%s warning" +msgstr "%s предупреждение" + +#, c-format, boost-format +msgid "%s has a warning" +msgstr "%s имеет предупреждение" + +#, c-format, boost-format +msgid "%s info" +msgstr "%s инфо" + +#, c-format, boost-format +msgid "%s information" +msgstr "%s информация" + +msgid "Skip" +msgstr "Пропустить" + +msgid "3D Mouse disconnected." +msgstr "3D-мышь отключена." + +msgid "Configuration can update now." +msgstr "Конфигурацию можно обновить сейчас." + +msgid "Detail." +msgstr "Деталь." + +msgid "Integration was successful." +msgstr "Интеграция прошла успешно." + +msgid "Integration failed." +msgstr "Интеграция не удалась." + +msgid "Undo integration was successful." +msgstr "Отменить интеграцию удалось." + +msgid "New network plug-in available." +msgstr "Доступен новый сетевой плагин." + +msgid "Details" +msgstr "Подробности" + +msgid "Undo integration failed." +msgstr "Отменить интеграцию не удалось." + +msgid "Exporting." +msgstr "Экспорт." + +msgid "Software has New version." +msgstr "Программное обеспечение имеет новую версию." + +msgid "Goto download page." +msgstr "Перейти на страницу загрузки." + +msgid "Open Folder." +msgstr "Открыть папку." + +msgid "Safely remove hardware." +msgstr "Безопасное извлечение устройства." + +#, c-format, boost-format +msgid "%1$d Object has custom supports." +msgid_plural "%1$d Objects have custom supports." +msgstr[0] "%1$d Объект имеет пользовательские опоры." +msgstr[1] "%1$d Объекты имеют пользовательские опоры." +msgstr[2] "%1$d Объекты имеют пользовательские опоры." + +#, c-format, boost-format +msgid "%1$d Object has color painting." +msgid_plural "%1$d Objects have color painting." +msgstr[0] "%1$d Объект имеет цветную окраску." +msgstr[1] "%1$d Объекты имею цветную окраску." +msgstr[2] "%1$d Объекты имею цветную окраску." + +#, 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 загружен как часть вырезанного объекта." +msgstr[1] "%1$d загружены как части вырезанных объектов" +msgstr[2] "%1$d загружены как части вырезанных объектов" + +msgid "ERROR" +msgstr "ОШИБКА" + +msgid "CANCELED" +msgstr "ОТМЕНЕНО" + +msgid "COMPLETED" +msgstr "ВЫПОЛНЕНО" + +msgid "Cancel upload" +msgstr "Отменить загрузку" + +msgid "Slice ok." +msgstr "Нарезка ок." + +msgid "Error:" +msgstr "Ошибка:" + +msgid "Warning:" +msgstr "Предупреждение:" + +msgid "Export successfully." +msgstr "Экспорт успешно." + +msgid " (Repair)" +msgstr " (Ремонт)" + +msgid " Click here to install it." +msgstr " Нажмите здесь, чтобы установить его." + +msgid "WARNING:" +msgstr "ПРЕДУПРЕЖДЕНИЕ:" + +msgid "Your model needs support ! Please make support material enable." +msgstr "Вашей модели нужна поддержка! Включите вспомогательный материал." + +msgid "Gcode path overlap" +msgstr "Перекрытие пути Gcode" + +msgid "Support painting" +msgstr "Поддержка рисования" + +msgid "Color painting" +msgstr "Цветное рисование" + +msgid "Cut connectors" +msgstr "Вырезать соединители" + +msgid "Layers" +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 "Please upgrade your graphics card driver." +msgstr "Пожалуйста, обновите драйвер видеокарты." + +msgid "Unsupported OpenGL version" +msgstr "Неподдерживаемая версия OpenGL" + +#, c-format, boost-format +msgid "" +"Unable to load shaders:\n" +"%s" +msgstr "" +"Не удалось загрузить шейдеры:\n" +"%s" + +msgid "Error loading shaders" +msgstr "Ошибка загрузки шейдеров" + +msgctxt "Layers" +msgid "Top" +msgstr "Верх" + +msgctxt "Layers" +msgid "Bottom" +msgstr "Низ" + +msgid "Enable AI monitoring of printing" +msgstr "Включить ИИ-мониторинг печати" + +msgid "Sensitivity of pausing is" +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 "" +"Обнаружен тег локализации рабочей пластины, и печать приостанавливается, " +"если\n" +"тег не находится в заранее определенном диапазоне." + +msgid "First Layer Inspection" +msgstr "Проверка первого слоя" + +msgid "Auto-recovery from step loss" +msgstr "Автоматическое восстановление после потери шага" + +msgid "Global" +msgstr "Глобальный" + +msgid "Objects" +msgstr "Объекты" + +msgid "Advance" +msgstr "Профи" + +msgid "Compare presets" +msgstr "Сравнить пресеты" + +msgid "View all object's settings" +msgstr "Посмотреть все настройки объекта" + +msgid "Filament settings" +msgstr "Настнойки филамента" + +msgid "Printer settings" +msgstr "Настройки принтера" + +msgid "Untitled" +msgstr "Без имени" + +#, boost-format +msgid " plate %1%:" +msgstr " пластина %1%:" + +msgid "Invalid name, the following characters are not allowed:" +msgstr "Недопустимое имя, следующие символы не допускаются:" + +msgid "Sliced Info" +msgstr "Нарезанная информация" + +msgid "Used Filament (m)" +msgstr "Использовано филамента (м)" + +msgid "Used Filament (mm³)" +msgstr "Использовано филамента (мм³)" + +msgid "Used Filament (g)" +msgstr "Использовано филамента (g)" + +msgid "Used Materials" +msgstr "Используемые материалы" + +msgid "Estimated time" +msgstr "Расчетное время" + +msgid "Filament changes" +msgstr "Изменения нити" + +msgid "Click to edit preset" +msgstr "Нажмите, чтобы изменить предустановку" + +msgid "Connection" +msgstr "Связь" + +msgid "Bed type" +msgstr "Тип кровати" + +msgid "Flushing volumes" +msgstr "Промывочные объемы" + +msgid "Add one filament" +msgstr "Добавьте один филамент" + +msgid "Remove last filament" +msgstr "Удалить последний филамент" + +msgid "Synchronize filament list from AMS" +msgstr "Синхронизировать список нитей из AMS" + +msgid "Set filaments to use" +msgstr "Установите нити для использования" + +msgid "" +"No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgstr "" +"Нет нитей AMS. Выберите принтер на странице «Устройство», чтобы загрузить " +"информацию AMS." + +msgid "Sync filaments with AMS" +msgstr "Синхронизация нитей с AMS" + +msgid "" +"Sync filaments with AMS will drop all current selected filament presets and " +"colors. Do you want to continue?" +msgstr "" +"Синхронизация нитей с AMS удалит все текущие выбранные пресеты нитей и\n" +"цвета. Вы хотите продолжать?" + +msgid "" +"Already did a synchronization, do you want to sync only changes or resync " +"all?" +msgstr "" +"Синхронизацию уже делал, синхронизировать только изменения или " +"пересинхронизировать\n" +"все?" + +msgid "Sync" +msgstr "Синхронизировать" + +msgid "Resync" +msgstr "Повторная синхронизация" + +msgid "There are no compatible filaments, and sync is not performed." +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 или перезапустите 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) можно безопасно удалить из " +"компьютер." + +#, c-format, boost-format +msgid "Ejecting of device %s(%s) has failed." +msgstr "Ошибка извлечения устройства %s(%s)." + +msgid "Previous unsaved project detected, do you want to restore it?" +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 "" +"Температура слоя превышает температуру стеклования нити. Пожалуйста\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 "" +"Твердость сопла, необходимая для нити накала, выше, чем по умолчанию.\n" +"жесткость сопла принтера. Пожалуйста, замените закаленное сопло или\n" +"нити накаливания, в противном случае сопло будет изношено или повреждено." + +#, c-format, boost-format +msgid "Loading file: %s" +msgstr "Загрузка файла: %s" + +msgid "The 3mf is not from Bambu Lab, load geometry data only." +msgstr "3mf не от Bambu Lab, загружайте только данные геометрии." + +msgid "Load 3mf" +msgstr "Загрузить 3mf" + +msgid "The Config can not be loaded." +msgstr "Конфиг не загружается." + +msgid "The 3mf is generated by old Orca Slicer, load geometry data only." +msgstr "" +"3mf генерируется старым слайсером Orca, загружать только данные геометрии." + +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Found following keys " +"unrecognized:" +msgstr "" +"Версия 3mf %s новее, чем версия %s %s, найдены следующие ключи непризнанный:" + +msgid "You'd better upgrade your software.\n" +msgstr "Вам лучше обновить программное обеспечение.\n" + +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." +msgstr "" +"Версия 3mf %s новее, чем версия %s %s, предложите обновить программное " +"обеспечение." + +msgid "Invalid values found in the 3mf:" +msgstr "В 3mf найдены недопустимые значения:" + +msgid "Please correct them in the param tabs" +msgstr "Пожалуйста, исправьте их во вкладках параметров" + +msgid "The 3mf is not compatible, load geometry data only!" +msgstr "3mf не совместим, загружайте только данные геометрии!" + +msgid "Incompatible 3mf" +msgstr "Несовместимый 3mf" + +msgid "Name of components inside step file is not UTF8 format!" +msgstr "Имя компонентов внутри шагового файла не в формате UTF8!" + +msgid "The name may show garbage characters!" +msgstr "Имя может содержать мусорные символы!" + +#, boost-format +msgid "Failed loading file \"%1%\". An invalid configuration was found." +msgstr "" +"Не удалось загрузить файл \\%1%\\. Обнаружена недопустимая конфигурация." + +msgid "Objects with zero volume removed" +msgstr "Объекты с нулевым объемом удалены" + +msgid "The volume of the object is zero" +msgstr "Объем объекта равен нулю" + +#, 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 слишком мал, возможно, в метрах или дюймах.\n" +"Вы хотите масштабировать до миллиметров?" + +msgid "Object too small" +msgstr "Объект слишком мал" + +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 "" +"Этот файл содержит несколько объектов, расположенных на разных высотах.\n" +"Вместо того, чтобы рассматривать их как несколько объектов, следует \n" +"файл загружается как единый объект, состоящий из нескольких частей?" + +msgid "Multi-part object detected" +msgstr "Обнаружен объект, состоящий из нескольких частей" + +msgid "Load these files as a single object with multiple parts?\n" +msgstr "Загрузить эти файлы как единый объект с несколькими частями?\n" + +msgid "Object with multiple parts was detected" +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?" +msgstr "" +"Ваш объект кажется слишком большим. Вы хотите уменьшить его, чтобы он " +"соответствовал размеру?\n" +"подогрев кровати автоматически?" + +msgid "Object too large" +msgstr "Объект слишком большой" + +msgid "Export STL file:" +msgstr "Экспорт файла STL:" + +msgid "Save file as:" +msgstr "Сохранить файл как:" + +msgid "Delete object which is a part of cut object" +msgstr "Удалить объект, являющийся частью вырезанного объекта" + +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 "" +"Вы пытаетесь удалить объект, являющийся частью вырезанного объекта.\n" +"Это действие разорвет обрезанную корреспонденцию.\n" +"После этого согласованность модели не может быть гарантирована." + +msgid "The selected object couldn't be split." +msgstr "Выбранный объект не может быть разделен." + +msgid "Another export job is running." +msgstr "Выполняется другое задание экспорта." + +msgid "Select a new file" +msgstr "Выберите новый файл" + +msgid "File for the replace wasn't selected" +msgstr "Не выбран файл для замены" + +msgid "Error during replace" +msgstr "Ошибка при замене" + +msgid "Please select a file" +msgstr "Пожалуйста, выберите файл" + +msgid "Slicing" +msgstr "Нарезка" + +msgid "There are warnings after slicing models:" +msgstr "Есть предупреждения после нарезки моделей:" + +msgid "warnings" +msgstr "предупреждения" + +msgid "Invalid data" +msgstr "Неверные данные" + +msgid "Slicing Canceled" +msgstr "Нарезка отменена" + +#, c-format, boost-format +msgid "Slicing Plate %d" +msgstr "Пластина для нарезки %d" + +msgid "Please resolve the slicing errors and publish again." +msgstr "Исправьте ошибки нарезки и опубликуйте снова." + +msgid "" +"Network Plug-in is not detected. Network related features are unavailable." +msgstr "Сетевой плагин не обнаружен. Функции, связанные с сетью, недоступны." + +msgid "" +"Preview only mode:\n" +"The loaded file contains gcode only, Can not enter the Prepare page" +msgstr "" +"Режим только предварительного просмотра:\n" +"Загруженный файл содержит только gcode, не удается войти на страницу " +"подготовки" + +msgid "You can keep the modified presets to the new project or discard them" +msgstr "" +"Вы можете сохранить измененные пресеты в новом проекте или отказаться от них" + +msgid "Creating a new project" +msgstr "Создание нового проекта" + +msgid "Load project" +msgstr "Загрузить проект" + +msgid "" +"Failed to save the project.\n" +"Please check whether the folder exists online or if other programs open the " +"project file." +msgstr "" +"Не удалось сохранить проект.\n" +"Пожалуйста, проверьте, существует ли папка в сети или другие программы " +"открывают ее файл проекта." + +msgid "Save project" +msgstr "Сохранить проект" + +msgid "Importing Model" +msgstr "Импорт модели" + +msgid "prepare 3mf file..." +msgstr "подготовить файл 3mf..." + +msgid "downloading project ..." +msgstr "скачиваю проект..." + +#, c-format, boost-format +msgid "Project downloaded %d%%" +msgstr "Проект загружен %d%%" + +msgid "The selected file" +msgstr "Выбранный файл" + +msgid "does not contain valid gcode." +msgstr "не содержит действительный gcode." + +msgid "Error occurs while loading G-code file" +msgstr "Ошибка при загрузке файла G-кода" + +msgid "Drop project file" +msgstr "Удалить файл проекта" + +msgid "Please select an action" +msgstr "Выберите действие" + +msgid "Open as project" +msgstr "Открыть как проект" + +msgid "Import geometry only" +msgstr "Импортировать только геометрию" + +msgid "Only one G-code file can be opened at the same time." +msgstr "Одновременно можно открыть только один файл G-кода." + +msgid "G-code loading" +msgstr "Загрузка G-кода" + +msgid "G-code files can not be loaded with models together!" +msgstr "Файлы G-кода нельзя загружать вместе с моделями!" + +msgid "Can not add models when in preview mode!" +msgstr "Невозможно добавить модели в режиме предварительного просмотра!" + +msgid "Add Models" +msgstr "Добавить модели" + +msgid "All objects will be removed, continue?" +msgstr "Все объекты будут удалены, продолжить?" + +msgid "The current project has unsaved changes, save it before continue?" +msgstr "" +"В текущем проекте есть несохраненные изменения, сохранить их, прежде чем " +"продолжить?" + +msgid "Remember my choice." +msgstr "Запомни мой выбор." + +msgid "Number of copies:" +msgstr "Количество копий:" + +msgid "Copies of the selected object" +msgstr "Копии выбранного объекта" + +msgid "Save G-code file as:" +msgstr "Сохраните файл G-кода как:" + +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." +msgstr "" +"Файл %s отправлен в память принтера и доступен для просмотра на принтере." + +msgid "" +"Print By Object: \n" +"Suggest to use auto-arrange to avoid collisions when printing." +msgstr "" +"Печать по объекту: \n" +"Предложите использовать автоматическое расположение, чтобы избежать коллизий " +"при печати." + +msgid "Send G-code" +msgstr "Отправить G-код" + +msgid "Send to printer" +msgstr "Отправить на принтер" + +msgid "Custom supports and color painting were removed before repairing." +msgstr "Нестандартные опоры и цветная окраска были удалены перед ремонтом." + +msgid "Invalid number" +msgstr "Неправильный номер" + +msgid "Plate Settings" +msgstr "Параметры планшета" + +#, boost-format +msgid "Part name: %1%\n" +msgstr "Название части: %1%\n" + +#, boost-format +msgid "Object name: %1%\n" +msgstr "Имя объекта: %1%\n" + +#, boost-format +msgid "Size: %1% x %2% x %3% in\n" +msgstr "Размер: %1% x %2% x %3% in\n" + +#, boost-format +msgid "Size: %1% x %2% x %3% mm\n" +msgstr "Размер: %1% x %2% x %3% мм\n" + +#, boost-format +msgid "Volume: %1% in³\n" +msgstr "Объем: %1% in³\n" + +#, boost-format +msgid "Volume: %1% mm³\n" +msgstr "Объем: %1% мм³\n" + +#, boost-format +msgid "Triangles: %1%\n" +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 "" +"Функция \\Fix Model\\ в настоящее время доступна только в Windows. " +"Пожалуйста, отремонтируйте модель \n" +"на Orca Slicer (Windows) или в программах САПР." + +#, 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 "Switching the language requires application restart.\n" +msgstr "Для переключения языка требуется перезапуск приложения.\n" + +msgid "Do you want to continue?" +msgstr "Вы хотите продолжать?" + +msgid "Language selection" +msgstr "Выбор языка" + +msgid "Switching application language while some presets are modified." +msgstr "Переключение языка приложения при изменении некоторых пресетов." + +msgid "Changing application language" +msgstr "Изменение языка приложения" + +msgid "Changing the region will log out your account.\n" +msgstr "Изменение региона приведет к выходу из вашей учетной записи.\n" + +msgid "Region selection" +msgstr "Выбор региона" + +msgid "Second" +msgstr "Секунд" + +msgid "Browse" +msgstr "Просматривать" + +msgid "Choose Download Directory" +msgstr "Выберите каталог загрузки" + +msgid "General Settings" +msgstr "Общие настройки" + +msgid "Asia-Pacific" +msgstr "Азиатско-Тихоокеанский регион" + +msgid "China" +msgstr "Китай" + +msgid "Europe" +msgstr "Европа" + +msgid "North America" +msgstr "Северная Америка" + +msgid "Others" +msgstr "Другие" + +msgid "Login Region" +msgstr "Регион входа" + +msgid "Metric" +msgstr "Метрика" + +msgid "Imperial" +msgstr "Имперский" + +msgid "Units" +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 "Show \"Tip of the day\" notification after start" +msgstr "Показывать уведомление \"Совет дня\" после запуска" + +msgid "If enabled, useful hints are displayed at startup." +msgstr "Если включено, при запуске отображаются полезные подсказки." + +msgid "Show g-code window" +msgstr "Показать окно g-кода" + +msgid "If enabled, g-code window will be displayed." +msgstr "Если включено, будет отображаться окно g-кода." + +msgid "Presets" +msgstr "Пресеты" + +msgid "Auto sync user presets(Printer/Filament/Process)" +msgstr "" +"Автоматическая синхронизация пользовательских пресетов (принтер/филамент/" +"процесс)" + +msgid "User Sync" +msgstr "Синхронизация пользователей" + +msgid "Update built-in Presets automatically." +msgstr "Обновляйте встроенные пресеты автоматически." + +msgid "System Sync" +msgstr "Синхронизация системы" + +msgid "Clear my choice on the unsaved presets." +msgstr "Очистите мой выбор от несохраненных пресетов." + +msgid "Associate files to OrcaSlicer" +msgstr "Асоциировать файлы с OrcaSlicer" + +msgid "Associate .3mf files to OrcaSlicer" +msgstr "Асоциировать файлы .3mf с OrcaSlicer" + +msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" +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" + +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" + +msgid "Maximum recent projects" +msgstr "Максимум последних проектов" + +msgid "Maximum count of recent projects" +msgstr "Максимальное количество последних проектов" + +msgid "Clear my choice on the unsaved projects." +msgstr "Очистить мой выбор для несохраненных проектов." + +msgid "Auto-Backup" +msgstr "Автобэкап" + +msgid "" +"Backup your project periodically for restoring from the occasional crash." +msgstr "" +"Периодически делайте резервную копию вашего проекта для восстановления после " +"случайного сбоя." + +msgid "every" +msgstr "каждые" + +msgid "The peroid of backup in seconds." +msgstr "Период резервного копирования в секундах." + +msgid "Downloads" +msgstr "Загрузки" + +msgid "Dark Mode" +msgstr "Тёмный режим" + +msgid "Enable Dark mode" +msgstr "Включить тёмный режим" + +msgid "Home page and daily tips" +msgstr "Главная страница и ежедневные советы" + +msgid "Show home page on startup" +msgstr "Показывать домашнюю страницу при запуске" + +msgid "Sync settings" +msgstr "Настройки синхронизации" + +msgid "User sync" +msgstr "Пользовательская синхронизация" + +msgid "Preset sync" +msgstr "Синхронизация пресетов" + +msgid "Preferences sync" +msgstr "Синхронизация настроек" + +msgid "View control settings" +msgstr "Просмотр настроек управления" + +msgid "Rotate of view" +msgstr "Повернуть вид" + +msgid "Move of view" +msgstr "Перемещение вида" + +msgid "Zoom of view" +msgstr "Масштаб вида" + +msgid "Other" +msgstr "Другой" + +msgid "Mouse wheel reverses when zooming" +msgstr "Колесико мыши реверсирует при масштабировании" + +msgid "Develop mode" +msgstr "Режим разработки" + +msgid "Dump video" +msgstr "Дамп видео" + +msgid "Log Level" +msgstr "Журнал уровня" + +msgid "fatal" +msgstr "фатальный" + +msgid "error" +msgstr "ошибка" + +msgid "warning" +msgstr "предупреждение" + +msgid "info" +msgstr "инфо" + +msgid "debug" +msgstr "отладка" + +msgid "trace" +msgstr "след" + +msgid "Host Setting" +msgstr "Настройка хоста" + +msgid "DEV host: api-dev.bambu-lab.com/v1" +msgstr "Хост разработчика: api-dev.bambu-lab.com/v1" + +msgid "QA host: api-qa.bambu-lab.com/v1" +msgstr "Хост QA: api-qa.bambu-lab.com/v1" + +msgid "PRE host: api-pre.bambu-lab.com/v1" +msgstr "Хост PRE: api-pre.bambu-lab.com/v1" + +msgid "Product host" +msgstr "Хост продукта" + +msgid "debug save button" +msgstr "кнопка сохранения отладки" + +msgid "save debug settings" +msgstr "сохранить настройки отладки" + +msgid "DEBUG settings have saved successfully!" +msgstr "Настройки Отладки успешно сохранены!" + +msgid "Switch cloud environment, Please login again!" +msgstr "Переключите облачную среду, пожалуйста, войдите снова!" + +msgid "System presets" +msgstr "Системные пресеты" + +msgid "User presets" +msgstr "Пользовательские пресеты" + +msgid "Incompatible presets" +msgstr "Несовместимые пресеты" + +msgid "AMS filaments" +msgstr "AMS филамент" + +msgid "Click to pick filament color" +msgstr "Нажмите, чтобы выбрать цвет филамента" + +msgid "Please choose the filament colour" +msgstr "Пожалуйста, выберите цвет филамента" + +msgid "Add/Remove presets" +msgstr "Добавить/удалить пресеты" + +msgid "Edit preset" +msgstr "Изменить предустановку" + +msgid "Project-inside presets" +msgstr "Внутренние пресеты проекта" + +msgid "Add/Remove filaments" +msgstr "Добавить/удалить филаменты" + +msgid "Add/Remove materials" +msgstr "Добавить/удалить материалы" + +msgid "Add/Remove printers" +msgstr "Добавить/удалить принтеры" + +msgid "Same as Global Print Sequence" +msgstr "То же, что и глобальная последовательность печати" + +msgid "Print sequence" +msgstr "Последовательность печати" + +msgid "Plate name" +msgstr "Название пластины" + +msgid "Same as Global Bed Type" +msgstr "То же, что и глобальный тип кровати" + +msgid "Cool Plate" +msgstr "Холодная пластина" + +msgid "Engineering Plate" +msgstr "Инженерная пластина" + +msgid "High Temp Plate" +msgstr "Высокотемпературная пластина" + +msgid "Textured PEI Plate" +msgstr "Текстурированная пластина PEI" + +msgid "By Layer" +msgstr "По слою" + +msgid "By Object" +msgstr "По объекту" + +msgid "Accept" +msgstr "Принимать" + +msgid "Log Out" +msgstr "Выйти" + +msgid "Slice all plate to obtain time and filament estimation" +msgstr "Разрежьте всю пластину, чтобы получить оценку времени и филамента" + +msgid "Packing project data into 3mf file" +msgstr "Упаковка данных проекта в файл 3mf" + +msgid "Uploading 3mf" +msgstr "Загрузка 3mf" + +msgid "Jump to model publish web page" +msgstr "Перейти на веб-страницу публикации модели" + +msgid "Note: The preparation may takes several minutes. Please be patiant." +msgstr "" +"Примечание. Подготовка может занять несколько минут. Пожалуйста, будьте " +"терпеливы." + +msgid "Publish" +msgstr "Публиковать" + +msgid "Publish was cancelled" +msgstr "Публикация отменена" + +msgid "Slicing Plate 1" +msgstr "Пластина для нарезки 1" + +msgid "Packing data to 3mf" +msgstr "Упаковка данных в 3mf" + +msgid "Jump to webpage" +msgstr "Перейти на веб-страницу" + +#, c-format, boost-format +msgid "Save %s as" +msgstr "Сохранить %s как" + +msgid "User Preset" +msgstr "Пользовательская предустановка" + +msgid "Project Inside Preset" +msgstr "Предустановка проекта внутри" + +msgid "Name is invalid;" +msgstr "Имя недействительно;" + +msgid "illegal characters:" +msgstr "недопустимые символы:" + +msgid "illegal suffix:" +msgstr "недопустимый суффикс:" + +msgid "Name is unavailable." +msgstr "Имя недоступно." + +msgid "Overwrite a system profile is not allowed" +msgstr "Перезапись системного профиля запрещена" + +#, boost-format +msgid "Preset \"%1%\" already exists." +msgstr "Предустановка \\%1%\\ уже существует." + +#, boost-format +msgid "Preset \"%1%\" already exists and is incompatible with current printer." +msgstr "" +"Предустановка \\%1%\\ уже существует и несовместима с текущим принтером." + +msgid "Please note that saving action will replace this preset" +msgstr "Обратите внимание, что действие сохранения заменит этот пресет" + +msgid "The name is not allowed to be empty." +msgstr "Имя не может быть пустым." + +msgid "The name is not allowed to start with space character." +msgstr "Имя не может начинаться с пробела." + +msgid "The name is not allowed to end with space character." +msgstr "Имя не может заканчиваться пробелом." + +msgid "The name cannot be the same as a preset alias name." +msgstr "Имя не может совпадать с предустановленным псевдонимом." + +msgid "Save preset" +msgstr "Сохранить пресет" + +msgctxt "PresetName" +msgid "Copy" +msgstr "Копировать" + +#, boost-format +msgid "Printer \"%1%\" is selected with preset \"%2%\"" +msgstr "Принтер \"%1%\" выбран с предустановкой \"%2%\"" + +#, boost-format +msgid "Please choose an action with \"%1%\" preset after saving." +msgstr "После сохранения выберите действие с предустановкой \"%1%\"." + +#, boost-format +msgid "For \"%1%\", change \"%2%\" to \"%3%\" " +msgstr "Для \"%1%\" измените \"%2%\" на \"%3%\" " + +#, boost-format +msgid "For \"%1%\", add \"%2%\" as a new preset" +msgstr "Для \"%1%\" добавьте \"%2%\" в качестве нового пресета" + +#, boost-format +msgid "Simply switch to \"%1%\"" +msgstr "Просто переключитесь на \"%1%\"" + +msgid "Online" +msgstr "В сети" + +msgid "Offline" +msgstr "Не в сети" + +msgid "(LAN)" +msgstr "(LAN)" + +msgid "My Device" +msgstr "Моё устройство" + +msgid "Other Device" +msgstr "Другие устройства" + +msgid "Input access code" +msgstr "Введите код доступа" + +msgid "Can't find my devices?" +msgstr "Не могу найти свои устройства?" + +msgid "Log out successful." +msgstr "Выйти, успешно." + +msgid "Busy" +msgstr "Занятый" + +msgid "Bambu Cool Plate" +msgstr "Холодный стол" + +msgid "Bamabu Engineering Plate" +msgstr "Инженерный стол" + +msgid "Bamabu High Temperature Plate" +msgstr "Высокотемпературная пластина" + +msgid "Send print job to" +msgstr "Отправить задание на печать на" + +msgid "Refresh" +msgstr "Обновить" + +msgid "Bed Leveling" +msgstr "Выравнивание кровати" + +msgid "Flow Calibration" +msgstr "Калибровка потока" + +msgid "send completed" +msgstr "отправка завершена" + +msgid "No login account, only printers in LAN mode are displayed" +msgstr "" +"Нет учетной записи для входа, отображаются только принтеры в режиме LAN" + +msgid "Connecting to server" +msgstr "Подключение к серверу" + +msgid "Synchronizing device information" +msgstr "Синхронизация информации об устройстве" + +msgid "Synchronizing device information time out" +msgstr "Тайм-аут синхронизации информации об устройстве" + +msgid "Cannot send the print job when the printer is updating firmware" +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 превышает количество слотов AMS. Пожалуйста, обновите прошивку " +"принтера для поддержки назначения слотов AMS." + +msgid "" +"Filament exceeds the number of AMS slots. Please update the printer firmware " +"to support AMS slot assignment." +msgstr "" +"Филамент превышает количество слотов AMS. Пожалуйста, обновите прошивку " +"принтера\n" +"для поддержки назначения слотов AMS." + +msgid "" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" +msgstr "" +"Были установлены сопоставления нитей с слотами AMS. Вы можете щелкнуть\n" +"филамент выше, чтобы изменить ее слот сопоставления AMS" + +msgid "" +"Please click each filament above to specify its mapping AMS slot before " +"sending the print job" +msgstr "" +"Щелкните каждый филамент выше, чтобы указать его слот сопоставления AMS, " +"прежде чем отправить задания на печать" + +#, 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 не соответствует филаменту в слоте AMS %s. Пожалуйста, обновите " +"прошивку принтера для поддержки назначения слотов AMS." + +msgid "" +"Filament does not match the filament in AMS slot. Please update the printer " +"firmware to support AMS slot assignment." +msgstr "" +"Филамент не соответствует филаменту в слоте AMS. Пожалуйста, обновите " +"прошивку принтера для поддержки назначения слотов AMS." + +msgid "" +"The printer firmware only supports sequential mapping of filament => AMS " +"slot." +msgstr "" +"Прошивка принтера поддерживает только последовательное сопоставление " +"филамента => AMS слот." + +msgid "An SD card needs to be inserted before printing." +msgstr "Перед печатью необходимо вставить SD-карту." + +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 for empty plate" +msgstr "Не удается отправить задание на печать для пустой формы" + +msgid "This printer does not support printing all plates" +msgstr "Этот принтер не поддерживает печать всех форм" + +msgid "Errors" +msgstr "Ошибки" + +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 "" +"Тип принтера, выбранный при создании G-кода, не соответствует текущему " +"выбранному принтеру. Рекомендуется использовать тот же тип принтера для " +"нарезки." + +#, c-format, boost-format +msgid "%s is not supported by AMS." +msgstr "%s не поддерживается AMS." + +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 есть несколько неизвестных филаментов. Пожалуйста, " +"проверьте, они являются необходимыми нитями. Если они в порядке, нажмите " +"\"Подтвердить\", чтобы начать печать." + +msgid "" +"Please click the confirm button if you still want to proceed with printing." +msgstr "" +"Нажмите кнопку подтверждения, если вы все еще хотите продолжить печать." + +msgid "Preparing print job" +msgstr "Подготовка задания на печать" + +msgid "Modifying the device name" +msgstr "Изменение имени устройства" + +msgid "Send to Printer SD card" +msgstr "Отправить на SD-карту принтера" + +msgid "Cannot send the print task when the upgrade is in progress" +msgstr "Не удается отправить задание на печать во время обновления" + +msgid "An SD card needs to be inserted before send to printer SD card." +msgstr "Перед отправкой на SD-карту принтера необходимо вставить SD-карту." + +msgid "The printer is required to be in the same LAN as Orca Slicer." +msgstr "Принтер должен находиться в той же локальной сети, что и Orca Slicer." + +msgid "The printer does not support sending to printer SD card." +msgstr "Принтер не поддерживает отправку на SD-карту принтера." + +msgid "Log in printer" +msgstr "Вход в принтер" + +msgid "Would you like to log in this printer with current account?" +msgstr "Вы хотите войти в этот принтер с текущей учетной записью?" + +msgid "Log in successful." +msgstr "Авторизация успешна." + +msgid "Log out printer" +msgstr "Выйти из принтера" + +msgid "Would you like to log out the printer?" +msgstr "Хотите выйти из принтера?" + +msgid "Please log in first." +msgstr "Пожалуйста, войдите сначала." + +msgid "There was a problem connecting to the printer. Please try again." +msgstr "" +"Возникла проблема с подключением к принтеру. Пожалуйста, попробуйте еще раз." + +msgid "Failed to log out." +msgstr "Не удалось выйти." + +#. TRN "Save current Settings" +#, c-format, boost-format +msgid "Save current %s" +msgstr "Сохранить текущий %s" + +msgid "Delete this preset" +msgstr "Удалить этот пресет" + +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 "" +"Prime Tower требуется для плавного таймлапса. Могут быть недостатки в модели " +"без главной башни. Вы уверены, что хотите отключить основную башню?" + +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 "" +"Для плавного таймлапса требуется Prime Tower. Могут быть недостатки в модели " +"без главной башни. Вы хотите включить главную башню?" + +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 "" +"Мы добавили экспериментальный стиль \"Tree Slim\", который отличается " +"меньшим размером, но слабым.\n" +"Мы рекомендуем использовать его с: 0 интерфейсных слоев, 0 верхнего " +"расстояния, 2 периметра." + +msgid "" +"Change these settings automatically? \n" +"Yes - Change these settings automatically\n" +"No - Do not change these settings for me" +msgstr "" +"Изменить эти настройки автоматически? \n" +"Да - Изменить эти настройки автоматически\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." +msgstr "" +"Для стилей \"Tree Strong\" и \"Tree Hybrid\" мы рекомендуем следующее " +"параметры: не менее 2 интерфейсных слоев, не менее 0,1 мм расстояние между " +"вершинами z или использование вспомогательных материалов по интерфейсу." + +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 "" +"При использовании вспомогательного материала для печати поддержки " +"рекомендуется \n" +"следующие настройки:\n" +"0 расстояние между вершинами z, 0 расстояние между поддержкой, " +"концентрический рисунок и отключение высота независимого опорного слоя" + +msgid "" +"When recording timelapse without toolhead, it is recommended to add a " +"\"Timelapse Wipe Tower\" \n" +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." +msgstr "" +"При записи таймлапса без инструментальной головки рекомендуется добавить " +"\"Timelapse Wipe Tower\"\n" +"щелкните правой кнопкой мыши на пустой позиции монтажной плиты и выберите " +"\"Добавить Примитив\"->\"Timelapse Wipe Tower\"." + +msgid "Line width" +msgstr "Ширина линии" + +msgid "Seam" +msgstr "Шов" + +msgid "Precision" +msgstr "Точность" + +msgid "Wall generator" +msgstr "Генерация периметров" + +msgid "Walls" +msgstr "Периметр" + +msgid "Top/bottom shells" +msgstr "Верхняя/нижняя оболочки" + +msgid "Initial layer speed" +msgstr "Скорость первого слоя" + +msgid "Other layers speed" +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 "Travel speed" +msgstr "Скорость перемещения" + +msgid "Acceleration" +msgstr "Ускорение" + +msgid "Jerk(XY)" +msgstr "Рывок (XY)" + +msgid "Raft" +msgstr "Подложка" + +msgid "Support filament" +msgstr "Филамент для поддержек" + +msgid "Prime tower" +msgstr "Башня Очистки" + +msgid "Special mode" +msgstr "Специальный режим" + +msgid "G-code output" +msgstr "Выходной G-code" + +msgid "Post-processing Scripts" +msgstr "Сценарии постобработки" + +msgid "Frequent" +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." +msgid_plural "" +"Following lines %s contain reserved keywords.\n" +"Please remove them, or will beat G-code visualization and printing time " +"estimation." +msgstr[0] "" +"Следующая строка %s содержит зарезервированные ключевые слова.\n" +"Удалите его или выполните визуализацию G-кода и оценку времени печати." +msgstr[1] "" +"Следующие строки %s содержат зарезервированные ключевые слова.\n" +"Удалите их или выполните визуализацию G-кода и оценку времени печати." +msgstr[2] "" +"Следующие строки %s содержат зарезервированные ключевые слова.\n" +"Удалите их или выполните визуализацию G-кода и оценку времени печати." + +msgid "Reserved keywords found" +msgstr "Найдены зарезервированные ключевые слова" + +msgid "Setting Overrides" +msgstr "Настройка переопределений" + +msgid "Retraction" +msgstr "Втягивание" + +msgid "Basic information" +msgstr "Базовая информация" + +msgid "Recommended nozzle temperature" +msgstr "Рекомендуемая температура сопла" + +msgid "Recommended nozzle temperature range of this filament. 0 means no set" +msgstr "" +"Рекомендуемый диапазон температур сопла для данного филамента. 0 означает " +"отсутствие установки" + +msgid "Recommended temperature range" +msgstr "Рекомендуемый диапазон температур" + +msgid "Print temperature" +msgstr "Температура печати" + +msgid "Chamber temperature" +msgstr "Температура в камере" + +msgid "Nozzle" +msgstr "Сопло" + +msgid "Nozzle temperature when printing" +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 " +"означает, что филамент\n" +"не поддерживает печать на Холодном столе" + +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 означает \n" +"филамент не поддерживает печать на инженерной пластине" + +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 Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" +"Температура слоя при установке плиты Textured PEI Plate. Значение 0 означает " +"филамент не поддерживает печать на текстурированной пластине PEI" + +msgid "Volumetric speed limitation" +msgstr "Объемное ограничение скорости" + +msgid "Cooling" +msgstr "Охлаждение" + +msgid "Cooling for specific layer" +msgstr "Охлаждение для конкретного слоя" + +msgid "Part cooling fan" +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 "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 "Auxiliary part cooling fan" +msgstr "Вентилятор охлаждения вспомогательных деталей" + +msgid "Filament start G-code" +msgstr "G-код начала Филамента" + +msgid "Filament end G-code" +msgstr "G-код конца Филамента" + +msgid "Printable space" +msgstr "Место для печати" + +msgid "Cooling Fan" +msgstr "Охлаждающий вентилятор" + +msgid "Fan speed-up time" +msgstr "Время разгона вентилятора" + +msgid "Extruder Clearance" +msgstr "Очистка экструдера" + +msgid "Accessory" +msgstr "Аксессуары" + +msgid "Machine gcode" +msgstr "G-code машины" + +msgid "Machine start G-code" +msgstr "Стартовый G-code" + +msgid "Machine end G-code" +msgstr "Конечный G-code" + +msgid "Before layer change G-code" +msgstr "G-code перед сменой слоя" + +msgid "Layer change G-code" +msgstr "G-code Смены слоя" + +msgid "Change filament G-code" +msgstr "G-code Смены филамента" + +msgid "Pause G-code" +msgstr "G-code Паузы" + +msgid "Template Custom G-code" +msgstr "Шаблон Пользовательский G-code" + +msgid "Motion ability" +msgstr "Способность движения" + +msgid "Normal" +msgstr "Нормальный" + +msgid "Speed limitation" +msgstr "Ограничение скорости" + +msgid "Acceleration limitation" +msgstr "Ограничение ускорения" + +msgid "Jerk limitation" +msgstr "Ограничение рывка" + +msgid "Layer height limits" +msgstr "Ограничения высоты слоя" + +msgid "Retraction when switching material" +msgstr "Втягивание при переключении материала" + +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 "" +"Опция Wipe недоступна при использовании режима Firmware Retraction.\n" +"\n" +"Должен ли я отключить его, чтобы включить Firmware Retraction?" + +msgid "Firmware Retraction" +msgstr "Firmware Retraction" + +msgid "Detached" +msgstr "Отдельный" + +msgid "Following preset will be deleted too." +msgid_plural "Following presets will be deleted too." +msgstr[0] "Следующая предустановка также будет удалена." +msgstr[1] "Следующие стили также будут удалены." +msgstr[2] "Следующие стили также будут удалены." + +#, boost-format +msgid "Are you sure to %1% the selected preset?" +msgstr "Вы уверены, что %1% выбранной предустановки?" + +#. TRN Remove/Delete +#, boost-format +msgid "%1% Preset" +msgstr "%1% Предустановка" + +msgid "All" +msgstr "Всё" + +msgid "Set" +msgstr "Выбор" + +msgid "Click to reset current value and attach to the global value." +msgstr "" +"Нажмите, чтобы сбросить текущее значение и присоединить его к глобальному " +"значению." + +msgid "Click to drop current modify and reset to saved value." +msgstr "" +"Нажмите, чтобы отменить текущее изменение и вернуться к сохраненному " +"значению." + +msgid "Process Settings" +msgstr "Настройки процесса" + +msgid "Undef" +msgstr "Undef" + +msgid "Unsaved Changes" +msgstr "Несохраненные изменения" + +msgid "Discard or Keep changes" +msgstr "Отбросить или сохранить изменения" + +msgid "Old Value" +msgstr "Старое значение" + +msgid "New Value" +msgstr "Новое значение" + +msgid "Transfer" +msgstr "Передача" + +msgid "Don't save" +msgstr "Не сохранять" + +msgid "Discard" +msgstr "Не сохранять" + +msgid "Click the right mouse button to display the full text." +msgstr "Нажмите правую кнопку мыши, чтобы отобразить полный текст." + +msgid "All changes will not be saved" +msgstr "Все изменения не будут сохранены" + +msgid "All changes will be discarded." +msgstr "Все изменения будут отброшены." + +msgid "Save the selected options." +msgstr "Сохранить выбранные параметры." + +msgid "Keep the selected options." +msgstr "Сохраните выбранные параметры." + +msgid "Transfer the selected options to the newly selected preset." +msgstr "Перенесите выбранные параметры в новый выбранный пресет." + +#, boost-format +msgid "" +"Save the selected options to preset \n" +"\"%1%\"." +msgstr "" +"Сохраните выбранные параметры в предустановке \n" +"\"%1%\"." + +#, boost-format +msgid "" +"Transfer the selected options to the newly selected preset \n" +"\"%1%\"." +msgstr "" +"Перенесите выбранные опции в новую предустановку\n" +"\"%1%\"." + +#, boost-format +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%\" не совместима с новым профилем принтера, и она " +"содержит следующие несохраненные изменения:" + +#, boost-format +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?" +msgstr "" +"Вы изменили некоторые настройки предустановки \"%1%\". \n" +"Сохранить эти измененные настройки (новое значение) после переключения " +"набора параметров?" + +msgid "" +"You have changed some preset settings. \n" +"Would you like to keep these changed settings (new value) after switching " +"preset?" +msgstr "" +"Вы изменили некоторые настройки предустановки. \n" +"Сохранить эти измененные настройки (новое значение) после переключения " +"набора параметров?" + +msgid "Extruders count" +msgstr "Количество экструдеров" + +msgid "General" +msgstr "Общие" + +msgid "Capabilities" +msgstr "Возможности" + +msgid "Select presets to compare" +msgstr "Выберите предустановки для сравнения" + +msgid "Show all presets (including incompatible)" +msgstr "Показать все предустановки (включая несовместимые)" + +msgid "Add File" +msgstr "Добавить файл" + +msgid "Set as cover" +msgstr "Установить в качестве обложки" + +msgid "Cover" +msgstr "Обложка" + +#, boost-format +msgid "The name \"%1%\" already exists." +msgstr "Имя \"%1%\" уже существует." + +msgid "Basic Info" +msgstr "Основная информация" + +msgid "Pictures" +msgstr "Картинки" + +msgid "Bill of Materials" +msgstr "Ведомость материалов" + +msgid "Assembly Guide" +msgstr "Руководство по сборке" + +msgid "Author" +msgstr "Автор" + +msgid "Model Name" +msgstr "Название модели" + +#, c-format, boost-format +msgid "%s Update" +msgstr "%s Обновление" + +msgid "A new version is available" +msgstr "Доступна новая версия" + +msgid "Configuration update" +msgstr "Обновление конфигурации" + +msgid "A new configuration package available, Do you want to install it?" +msgstr "Доступен новый пакет конфигурации, хотите ли вы установить его?" + +msgid "Description:" +msgstr "Описание:" + +msgid "Configuration incompatible" +msgstr "Несовместимость конфигурации" + +msgid "the configuration package is incompatible with current application." +msgstr "пакет конфигурации несовместим с текущим приложением." + +#, 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 "" +"Пакет конфигурации несовместим с текущим приложением.\n" +"%s обновит пакет конфигурации, иначе он не сможет запуститься" + +#, c-format, boost-format +msgid "Exit %s" +msgstr "Выход %s" + +msgid "the Configuration package is incompatible with current APP." +msgstr "пакет конфигурации несовместим с текущим APP." + +msgid "Configuration updates" +msgstr "Обновления конфигурации" + +msgid "No updates available." +msgstr "Обновления отсутствуют." + +msgid "The configuration is up to date." +msgstr "Конфигурация актуальна." + +msgid "Auto-Calc" +msgstr "Автокалькулятор" + +msgid "Flushing volumes for filament change" +msgstr "Объемы промывки для смены Филамента" + +msgid "Multiplier" +msgstr "Множитель" + +msgid "Flushing volume (mm³) for each filament pair." +msgstr "Объем промывки (мм³) для каждой пары Филамента." + +#, c-format, boost-format +msgid "Suggestion: Flushing Volume in range [%d, %d]" +msgstr "Предложение: Объем промывки в диапазоне [%d, %d]" + +#, c-format, boost-format +msgid "The multiplier should be in range [%.2f, %.2f]." +msgstr "Множитель должен находиться в диапазоне [%.2f, %.2f]" + +msgid "unloaded" +msgstr "выгружено" + +msgid "loaded" +msgstr "загружено" + +msgid "Filament #" +msgstr "Филамент #" + +msgid "From" +msgstr "От" + +msgid "To" +msgstr "В" + +msgid "Login" +msgstr "Логин" + +msgid "The configuration package is changed in previous Config Guide" +msgstr "Пакет конфигурации изменен в предыдущем руководстве по конфигурации" + +msgid "Configuration package changed" +msgstr "Изменен пакет конфигурации" + +msgid "Toolbar" +msgstr "Панель инструментов" + +msgid "Objects list" +msgstr "Список объектов" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Импорт геометрических данных из файлов STL/STEP/3MF/OBJ/AMF" + +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" + +msgid "Copy to clipboard" +msgstr "Копировать в буфер обмена" + +msgid "Paste from clipboard" +msgstr "Вставить из буфера обмена" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Показать/скрыть диалог настроек устройств 3Dconnexion" + +msgid "Show keyboard shortcuts list" +msgstr "Показать список сочетаний клавиш" + +msgid "Global shortcuts" +msgstr "Глобальные ярлыки" + +msgid "Rotate View" +msgstr "Повернуть вид" + +msgid "Pan View" +msgstr "Панорамный вид" + +msgid "Mouse wheel" +msgstr "Колесико мыши" + +msgid "Zoom View" +msgstr "Просмотр масштаба" + +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 "" +"Автоматически ориентирует выбранные объекты или все объекты. Если выбраны " +"объекты, он просто ориентирует выбранные. В противном случае он будет " +"ориентировать все объекты на текущем диске." + +msgid "Shift+Tab" +msgstr "Shift+Tab" + +msgid "Collapse/Expand the sidebar" +msgstr "Свернуть/развернуть боковую панель" + +msgid "⌘+Any arrow" +msgstr "⌘+любая стрелка" + +msgid "Movement in camera space" +msgstr "Движение в пространстве камеры" + +msgid "⌥+Left mouse button" +msgstr "⌥+Левая кнопка мыши" + +msgid "Select a part" +msgstr "Выберите часть" + +msgid "⌘+Left mouse button" +msgstr "⌘+Левая кнопка мыши" + +msgid "Select multiple objects" +msgstr "Выбрать несколько объектов" + +msgid "Ctrl+Any arrow" +msgstr "Ctrl+любая стрелка" + +msgid "Alt+Left mouse button" +msgstr "Alt+Левая кнопка мыши" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Левая кнопка мыши" + +msgid "Shift+Left mouse button" +msgstr "Shift+Левая кнопка мыши" + +msgid "Select objects by rectangle" +msgstr "Выделить объекты по прямоугольнику" + +msgid "Arrow Up" +msgstr "Стрелка вверх" + +msgid "Move selection 10 mm in positive Y direction" +msgstr "Переместить выделение на 10 мм в положительном направлении Y" + +msgid "Arrow Down" +msgstr "Стрелка вниз" + +msgid "Move selection 10 mm in negative Y direction" +msgstr "Переместить выделение на 10 мм в отрицательном направлении Y" + +msgid "Arrow Left" +msgstr "Стрелка влево" + +msgid "Move selection 10 mm in negative X direction" +msgstr "Переместить выделение на 10 мм в отрицательном направлении по оси X" + +msgid "Arrow Right" +msgstr "Стрелка вправо" + +msgid "Move selection 10 mm in positive X direction" +msgstr "Переместить выделение на 10 мм в положительном направлении X" + +msgid "Shift+Any arrow" +msgstr "Shift+любая стрелка" + +msgid "Movement step set to 1 mm" +msgstr "Шаг перемещения установлен на 1 мм" + +msgid "Esc" +msgstr "Esc" + +msgid "keyboard 1-9: set filament for object/part" +msgstr "клавиатура 1-9: установить филамент для объекта/детали" + +msgid "Camera view - Default" +msgstr "Вид камеры — по умолчанию" + +msgid "Camera view - Top" +msgstr "Вид камеры — сверху" + +msgid "Camera view - Bottom" +msgstr "Вид камеры — снизу" + +msgid "Camera view - Front" +msgstr "Вид камеры — спереди" + +msgid "Camera view - Behind" +msgstr "Вид камеры - сзади" + +msgid "Camera Angle - Left side" +msgstr "Угол камеры — левая сторона" + +msgid "Camera Angle - Right side" +msgstr "Угол камеры - правая сторона" + +msgid "Select all objects" +msgstr "Выделить все объекты" + +msgid "Gizmo move" +msgstr "Движение Gizmo" + +msgid "Gizmo scale" +msgstr "Шкала Gizmo" + +msgid "Gizmo rotate" +msgstr "Поворот Gizmo" + +msgid "Gizmo cut" +msgstr "Вырез Gizmo" + +msgid "Gizmo Place face on bed" +msgstr "Gizmo Положите лицо на кровать" + +msgid "Gizmo SLA support points" +msgstr "Точки поддержки Gizmo SL" + +msgid "Gizmo FDM paint-on seam" +msgstr "Окрашиваемый шов Gizmo FDM" + +msgid "Swtich between Prepare/Prewview" +msgstr "Переключение между Подготовка/Предварительный просмотр" + +msgid "Plater" +msgstr "Тарелка" + +msgid "Move: press to snap by 1mm" +msgstr "Перемещение: нажмите для перемещения на 1 мм" + +msgid "⌘+Mouse wheel" +msgstr "⌘+Колесо мыши" + +msgid "Support/Color Painting: adjust pen radius" +msgstr "Поддержка/Цветовое рисование: регулировка радиуса пера" + +msgid "⌥+Mouse wheel" +msgstr "⌥+Колесо мыши" + +msgid "Support/Color Painting: adjust section position" +msgstr "Поддержка/цветная покраска: регулировка положения секций" + +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Колесо мыши" + +msgid "Alt+Mouse wheel" +msgstr "Alt+колесо мыши" + +msgid "Gizmo" +msgstr "Gizmo" + +msgid "Set extruder number for the objects and parts" +msgstr "Установите номер экструдера для объектов и деталей" + +msgid "Delete objects, parts, modifiers " +msgstr "Удаление объектов, частей, модификаторов " + +msgid "Space" +msgstr "Пробел" + +msgid "Select the object/part and press space to change the name" +msgstr "Выберите объект/деталь и нажмите пробел, чтобы изменить название" + +msgid "Mouse click" +msgstr "Щелчок мыши" + +msgid "Select the object/part and mouse click to change the name" +msgstr "Выберите объект/деталь и щелкните мышью, чтобы изменить имя" + +msgid "Objects List" +msgstr "Список объектов" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Вертикальный ползунок - перемещение активного большого пальца вверх" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Вертикальный ползунок - Переместить активный палец вниз" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Горизонтальный ползунок - Переместить активный палец влево" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Горизонтальный ползунок - Переместить активный палец вправо" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Включение/выключение однослойного режима вертикального ползунка" + +msgid "On/Off g-code window" +msgstr "Включение/выключение окна g-кода" + +msgid "Move slider 5x faster" +msgstr "Перемещение ползунка в 5 раз быстрее" + +msgid "Shift+Mouse wheel" +msgstr "Shift+колесо мыши" + +msgid "Release Note" +msgstr "Примечание к выпуску" + +#, c-format, boost-format +msgid "version %s update information :" +msgstr "версия %s информация об обновлении :" + +msgid "Network plug-in update" +msgstr "Обновление сетевого плагина" + +msgid "" +"Click OK to update the Network plug-in when Orca Slicer launches next time." +msgstr "" +"Нажмите OK, чтобы обновить плагин Network при следующем запуске Orca Slicer." + +#, c-format, boost-format +msgid "A new Network plug-in(%s) available, Do you want to install it?" +msgstr "Доступен новый сетевой плагин (%s), хотите ли вы установить его?" + +msgid "New version of Orca Slicer" +msgstr "Новая версия программы Orca Slicer" + +msgid "Don't remind me of this version again" +msgstr "Не напоминайте мне больше об этой версии" + +msgid "Done" +msgstr "Выполнено" + +msgid "LAN Connection Failed (Sending print file)" +msgstr "LAN Connection Failed (Отправка файла печати)" + +msgid "" +"Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgstr "" +"Шаг 1. Убедитесь, что Orca Slicer и ваш принтер находятся в одной локальной " +"сети." + +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 и код доступа отличаются от фактических " +"значений \n" +"на вашем принтере, пожалуйста, исправьте их." + +msgid "IP" +msgstr "IP" + +msgid "Access Code" +msgstr "Код доступа" + +msgid "Where to find your printer's IP and Access Code?" +msgstr "Где найти IP-адрес и код доступа вашего принтера?" + +msgid "Error: IP or Access Code are not correct" +msgstr "Ошибка: IP или код доступа не верны" + +msgid "Model:" +msgstr "Модель:" + +msgid "Serial:" +msgstr "Серийный номер:" + +msgid "Version:" +msgstr "Версия:" + +msgid "Update firmware" +msgstr "Обновление микропрограммы" + +msgid "Printing" +msgstr "Печать" + +msgid "Idle" +msgstr "Холостой ход" + +msgid "Latest version" +msgstr "Последняя версия" + +msgid "Updating" +msgstr "Обновление" + +msgid "Updating failed" +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 "" +"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 "Extension Board" +msgstr "Плата расширения" + +msgid "Saving objects into the 3mf failed." +msgstr "Сохранение объектов в 3mf не удалось." + +msgid "Only Windows 10 is supported." +msgstr "Поддерживается только Windows 10." + +msgid "Failed to initialize the WinRT library." +msgstr "Не удалось инициализировать библиотеку WinRT." + +msgid "Exporting objects" +msgstr "Экспорт объектов" + +msgid "Failed loading objects." +msgstr "Не удалось загрузить объекты." + +msgid "Repairing object by Windows service" +msgstr "Восстановление объекта службой Windows" + +msgid "Repair failed." +msgstr "Ремонт не удался." + +msgid "Loading repaired objects" +msgstr "Загрузка отремонтированных объектов" + +msgid "Exporting 3mf file failed" +msgstr "Экспорт файла 3mf не удался" + +msgid "Import 3mf file failed" +msgstr "Импорт файла 3mf не удался" + +msgid "Repaired 3mf file does not contain any object" +msgstr "Отремонтированный файл 3mf не содержит ни одного объекта" + +msgid "Repaired 3mf file contains more than one object" +msgstr "Отремонтированный файл 3mf содержит более одного объекта" + +msgid "Repaired 3mf file does not contain any volume" +msgstr "Отремонтированный файл 3mf не содержит ни одного тома" + +msgid "Repaired 3mf file contains more than one volume" +msgstr "Отремонтированный файл 3mf содержит более одного тома" + +msgid "Repair finished" +msgstr "Ремонт завершен" + +msgid "Repair canceled" +msgstr "Ремонт отменен" + +#, boost-format +msgid "Copying of file %1% to %2% failed: %3%" +msgstr "Копирование файла %1% в %2% не удалось: %3%" + +msgid "Need to check the unsaved changes before configuration updates." +msgstr "" +"Необходимость проверки несохраненных изменений перед обновлением " +"конфигурации." + +msgid "Configuration package updated to " +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 "" +"Один объект имеет пустой начальный слой и не может быть напечатан. " +"Пожалуйста, обрежьте нижние или включающие опоры." + +#, boost-format +msgid "Object can't be printed for empty layer between %1% and %2%." +msgstr "Объект не может быть напечатан для пустого слоя между %1% и %2%." + +#, boost-format +msgid "Object: %1%" +msgstr "Объект: %1%" + +msgid "" +"Maybe parts of the object at these height are too thin, or the object has " +"faulty mesh" +msgstr "" +"Возможно, части объекта на этой высоте слишком тонкие, или объект имеет \n" +"неисправная сетка" + +msgid "No object can be printed. Maybe too small" +msgstr "Ни один объект не может быть напечатан. Возможно, слишком маленький" + +msgid "" +"Failed to generate gcode for invalid custom G-code.\n" +"\n" +msgstr "" +"Не удалось сгенерировать g-код для недопустимого пользовательского G-кода. \n" +"\n" + +msgid "Please check the custom G-code or use the default custom G-code." +msgstr "" +"Пожалуйста, проверьте пользовательский G-код или используйте " +"пользовательский G-код по умолчанию." + +#, boost-format +msgid "Generating G-code: layer %1%" +msgstr "Генерация G-кода: слой %1%" + +msgid "Inner wall" +msgstr "Периметры" + +msgid "Outer wall" +msgstr "Внешние периметры" + +msgid "Overhang wall" +msgstr "Наклонные периметры" + +msgid "Sparse infill" +msgstr "Заполнение" + +msgid "Internal solid infill" +msgstr "Внутреннее сплошное заполнение" + +msgid "Top surface" +msgstr "Верхний слой" + +msgid "Bottom surface" +msgstr "Нижняя поверхность" + +msgid "Bridge" +msgstr "Мост" + +msgid "Gap infill" +msgstr "Заполнение пробелов" + +msgid "Support interface" +msgstr "Интерфейс поддержки" + +msgid "Support transition" +msgstr "Gоддержка перехода" + +msgid "Multiple" +msgstr "Несколько" + +#, boost-format +msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " +msgstr "" +"Не удалось вычислить ширину линии %1%. Не удается получить значение \"%2%\" " + +msgid "undefined error" +msgstr "неопределенная ошибка" + +msgid "too many files" +msgstr "слишком много файлов" + +msgid "file too large" +msgstr "слишком большой файл" + +msgid "unsupported method" +msgstr "неподдерживаемый метод" + +msgid "unsupported encryption" +msgstr "неподдерживаемое шифрование" + +msgid "unsupported feature" +msgstr "неподдерживаемая функция" + +msgid "failed finding central directory" +msgstr "не удалось найти центральный каталог" + +msgid "not a ZIP archive" +msgstr "не ZIP-архив" + +msgid "invalid header or corrupted" +msgstr "недействительный или поврежденный заголовок" + +msgid "unsupported multidisk" +msgstr "неподдерживаемый мультидиск" + +msgid "decompression failed" +msgstr "декомпрессия не удалась" + +msgid "compression failed" +msgstr "сбой сжатия" + +msgid "unexpected decompressed size" +msgstr "неожиданный размер распакованного файла" + +msgid "CRC check failed" +msgstr "Проверка CRC не удалась" + +msgid "unsupported central directory size" +msgstr "неподдерживаемый размер центрального каталога" + +msgid "allocation failed" +msgstr "не удалось выделить" + +msgid "file open failed" +msgstr "не удалось открыть файл" + +msgid "file create failed" +msgstr "не удалось создать файл" + +msgid "file write failed" +msgstr "ошибка записи файла" + +msgid "file read failed" +msgstr "чтение файла не удалось" + +msgid "file close failed" +msgstr "закрытие файла не удалось" + +msgid "file seek failed" +msgstr "поиск файла не удался" + +msgid "file stat failed" +msgstr "сбой состояния файла" + +msgid "invalid parameter" +msgstr "недопустимый параметр" + +msgid "invalid filename" +msgstr "недопустимое имя файла" + +msgid "buffer too small" +msgstr "слишком маленький буфер" + +msgid "internal error" +msgstr "внутренняя ошибка" + +msgid "file not found" +msgstr "файл не найден" + +msgid "archive too large" +msgstr "слишком большой архив" + +msgid "validation failed" +msgstr "валидация не прошла" + +msgid "write callback failed" +msgstr "сбой обратного вызова записи" + +#, boost-format +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% находится слишком близко к другим, что может привести к столкновениям." + +#, 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 " находится слишком близко к другим, при печати возможны столкновения." + +msgid " is too close to exclusion area, there may be collisions when printing." +msgstr "" +" находится слишком близко к зоне отчуждения, при печати могут возникать " +"коллизии." + +msgid "Prime Tower" +msgstr "Prime Tower" + +msgid " is too close to others, and collisions may be caused.\n" +msgstr "" +" находится слишком близко к другим, что может привести к столкновению.\n" + +msgid " is too close to exclusion area, and collisions will be caused.\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 "No extrusions under current settings." +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 "" +"The spiral vase mode does not work when an object contains more than one " +"materials." +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 requires \"support gap\" to be multiple of layer height" +msgstr "Основная башня требует, чтобы «опорный зазор» был кратен высоте слоя" + +msgid "The prime tower requires that all objects have the same layer heights" +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 is only supported if all objects have the same variable " +"layer height" +msgstr "" +"Основная башня поддерживается только в том случае, если все объекты имеют " +"одинаковую переменную высоту слоя" + +msgid "Too small line width" +msgstr "Слишком маленькая ширина линии" + +msgid "Too large line width" +msgstr "Слишком большая ширина линии" + +msgid "" +"The prime tower requires that support has the same layer height with object." +msgstr "" +"Прайм-тауэр требует, чтобы поддержка имела одинаковую высоту слоя с объектом." + +msgid "" +"Support enforcers are used but support is not enabled. Please enable support." +msgstr "" +"Средства обеспечения поддержки используются, но поддержка не включена. " +"Включите поддержку." + +msgid "Layer height cannot exceed nozzle diameter" +msgstr "Высота слоя не может превышать диаметр сопла" + +#, c-format, boost-format +msgid "Plate %d: %s does not support filament %s" +msgstr "Плита %d: %s не поддерживает филамент %s" + +msgid "Generating skirt & brim" +msgstr "Создание юбки и каймы" + +msgid "Exporting G-code" +msgstr "Экспорт G-code" + +msgid "Generating G-code" +msgstr "Генерация G-code" + +msgid "Failed processing of the filename_format template." +msgstr "Не удалось обработать шаблон filename_format." + +msgid "Printable area" +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 "Bed custom texture" +msgstr "Пользовательская текстура стола" + +msgid "Bed custom model" +msgstr "Стол индивидуальной модели" + +msgid "Elephant foot compensation" +msgstr "Компенсация слоновьей ноги" + +msgid "" +"Shrink the initial layer on build plate to compensate for elephant foot " +"effect" +msgstr "Усадка начального слоя на столе для компенсации эфекта слоновьей ноги" + +msgid "" +"Slicing height for each layer. Smaller layer height means more accurate and " +"more printing time" +msgstr "" +"Высота нарезки для каждого слоя. Меньшая высота слоя означает более точную " +"печать, но больше времени на печать" + +msgid "Printable height" +msgstr "Высота печати" + +msgid "Maximum printable height which is limited by mechanism of printer" +msgstr "Максимальная высота печати, которая ограничена механизмом принтера" + +msgid "Printer preset names" +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:\n" +"password@your-octopi-address/" + +msgid "Device UI" +msgstr "Пользовательский интерфейс устройства" + +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-кода на хост принтера. Это поле должно " +"содержать \n" +"API-ключ или пароль, необходимый для аутентификации." + +msgid "Name of the printer" +msgstr "Название принтера" + +msgid "HTTPS CA File" +msgstr "Файл 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." +msgstr "" +"Для HTTPS-соединений OctoPrint можно указать файл сертификата " +"пользовательского ЦС, в формате crt/pem. Если оставить пустым, по умолчанию " +"будет использоваться хранилище сертификатов ЦС ОС." + +msgid "User" +msgstr "Пользователь" + +msgid "Password" +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 "Names of presets related to the physical printer" +msgstr "Названия предустановок, связанных с физическим принтером" + +msgid "Authorization Type" +msgstr "Тип авторизации" + +msgid "API key" +msgstr "Ключ API" + +msgid "HTTP digest" +msgstr "HTTP-дайджест" + +msgid "Avoid crossing wall" +msgstr "Избегайте пересечения периметров" + +msgid "Detour and avoid to travel across wall which may cause blob on surface" +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%) от прямого путь движения. Ноль для отключения" + +msgid "mm or %" +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 "°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 означает \n" +"филамент не поддерживает печать на инженерной пластине" + +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 означает \n" +"филамент не поддерживает печать на высокотемпературной пластине" + +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 означает \n" +"филамент не поддерживает печать на текстурированной пластине PEI" + +msgid "Initial layer" +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 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 Textured PEI Plate" +msgstr "" +"Температура первого слоя. Значение 0 означает, что филамент не поддерживает " +"печать на текстурированной пластине PEI" + +msgid "Bed types supported by the printer" +msgstr "Типы кроватей, поддерживаемые принтером" + +msgid "This G-code is inserted at every layer change before lifting z" +msgstr "Типы кроватей, поддерживаемые принтером" + +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 "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" +msgstr "" +"Количество нижних сплошных слоев увеличивается при разрезании, если толщина, " +"вычисленная слоями нижней оболочки, тоньше, чем это значение. Это позволяет " +"избежать слишком тонкой оболочки при небольшой высоте слоя. 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 "Fan speed for overhang" +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% " +"означает принудительное охлаждение всего внешнего периметра независимо от " +"степени свеса" + +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 "" +"Переопределение угла моста. Если оставить значение равным нулю, угол моста " +"будет вычисляться автоматически. В противном случае предоставленный угол " +"будет использоваться для внешних мостов. Используйте 180 ° для нулевого угла." + +msgid "Bridge density" +msgstr "Плотность моста" + +msgid "Density of external bridges. 100% means solid bridge. Default is 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 "" +"Немного уменьшите это значение (например, 0.9), чтобы уменьшить количество " +"материала для моста, чтобы улучшить провисание" + +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 "Bottom surface flow ratio" +msgstr "Коэффициент расхода нижней поверхности" + +msgid "This factor affects the amount of material for bottom solid infill" +msgstr "" +"Этот фактор влияет на количество материала для заполнения нижнего твердого " +"тела" + +msgid "Precise wall(experimental)" +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 "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 "Classic mode" +msgstr "Классический режим" + +msgid "Enable this option to use classic mode" +msgstr "Включить этот параметр для использования классического режима" + +msgid "Slow down for overhang" +msgstr "Замедление для свеса" + +msgid "Enable this option to slow printing down for different overhang degree" +msgstr "" +"Включить этот параметр для замедления печати при различных степенях свеса" + +msgid "mm/s" +msgstr "mm/с" + +msgid "Speed of bridge and completely overhang wall" +msgstr "Скорость моста и полностью свисающий периметр" + +msgid "Brim width" +msgstr "Ширина каймы" + +msgid "Distance from model to the outermost brim line" +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 "" +"Это управляет формированием поля на внешней и/или внутренней стороне " +"моделей. Auto означает, что ширина поля анализируется и вычисляется " +"автоматически." + +msgid "outer_only" +msgstr "кайма снаружи" + +msgid "Inner brim only" +msgstr "Кайма внутри" + +msgid "Outer and inner brim" +msgstr "Снаружи и внутри" + +msgid "Brim-object gap" +msgstr "Зазор между каймой и объектом" + +msgid "" +"A gap between innermost brim line and object can make brim be removed more " +"easily" +msgstr "" +"Зазор между внутренней линией каймы и предметом может способствовать более " +"легкому снятию каймы" + +msgid "Compatible machine" +msgstr "Совместимая машина" + +msgid "upward compatible machine" +msgstr "восходящая совместимая машина" + +msgid "Compatible machine condition" +msgstr "Совместимое состояние машины" + +msgid "Compatible process profiles" +msgstr "Совместимые профили процессов" + +msgid "Compatible process profiles condition" +msgstr "Состояние совместимых профилей процессов" + +msgid "Print sequence, layer by layer or object by object" +msgstr "Последовательность печати, слой за слоем или объект за объектом" + +msgid "By layer" +msgstr "По слою" + +msgid "By object" +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 "" +"Включите эту опцию, чтобы замедлить скорость печати и сделать конечное время " +"слоя не короче порога времени слоя в «Max fan speed threshold», чтобы слой " +"мог охлаждаться дольше. Это может улучшить качество охлаждения игл и мелких " +"деталей" + +msgid "Normal printing" +msgstr "Обычная печать" + +msgid "" +"The default acceleration of both normal printing and travel except initial " +"layer" +msgstr "" +"Ускорение по умолчанию как для обычной печати, так и для перемещения, за " +"исключением начального слоя" + +msgid "mm/s²" +msgstr "мм/с²" + +msgid "Default filament profile" +msgstr "Профиль филамента по умолчанию" + +msgid "Default filament profile when switch to this machine profile" +msgstr "Профиль филамента по умолчанию при переключении на этот профиль машины" + +msgid "Default process profile" +msgstr "Профиль процесса по умолчанию" + +msgid "Default process profile when switch to this machine profile" +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 "layers" +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 "" +"Не поддерживайте всю площадь моста, так как поддержка будет очень большой. " +"Мост\n" +"обычно можно печатать напрямую без поддержки, если не очень долго" + +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 "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 "End G-code" +msgstr "Завершающий G-code" + +msgid "End G-code when finish the whole printing" +msgstr "Завершающий G-code, когда закончить всю печать" + +msgid "End G-code when finish the printing of this filament" +msgstr "Завершающий G-code, когда закончите печать этой нити" + +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 "Top surface pattern" +msgstr "Рисунок верхней поверхности" + +msgid "Line pattern of top surface infill" +msgstr "Рисунок заполнения верхней поверхности" + +msgid "Concentric" +msgstr "Концентрический" + +msgid "Rectilinear" +msgstr "Прямолинейный" + +msgid "Monotonic" +msgstr "Монотонный" + +msgid "Monotonic line" +msgstr "Монотонный прямолинейный" + +msgid "Aligned Rectilinear" +msgstr "Выровненный прямолинейный" + +msgid "Hilbert Curve" +msgstr "Кривая Гильберта" + +msgid "Archimedean Chords" +msgstr "Хорды архимеда" + +msgid "Octagram Spiral" +msgstr "Спиральная октограмма" + +msgid "Bottom surface pattern" +msgstr "Рисунок нижней поверхности" + +msgid "Line pattern of bottom surface infill, not bridge infill" +msgstr "Рисунок заполнения нижней поверхности, а не заполнения моста" + +msgid "Line width of outer wall" +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 "" +"Эта отдельная настройка влияет на скорость периметров, имеющих радиус < = " +"small_perimeter_threshold (обычно отверстий). Если он выражен в процентах " +"(например, 80%), то он будет рассчитываться на указанной выше скорости " +"внешнего периметра. Установите нулевое значение для автоматической настройки." + +msgid "mm/s or %" +msgstr "мм/с или %" + +msgid "Small perimeters threshold" +msgstr "Порог малых периметров" + +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 "" +"Распечатайте последовательность внутреннего периметра, внешнего периметра и " +"заполнения " + +msgid "inner/outer/infill" +msgstr "внутренний/внешний/заполнение" + +msgid "outer/inner/infill" +msgstr "внешний/внутренний/заполнение" + +msgid "infill/inner/outer" +msgstr "заполнение/внутренний/внешний" + +msgid "infill/outer/inner" +msgstr "заполнение/внешний/внутренний" + +msgid "inner-outer-inner/infill" +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 "Height to lid" +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 "Extruder Color" +msgstr "Цвет экструдера" + +msgid "Only used as a visual help on UI" +msgstr "" +"Используется только как визуальная помощь в пользовательском интерфейсе" + +msgid "Extruder offset" +msgstr "Смещение экструдера" + +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" +msgstr "" +"Материал может иметь объемное изменение после переключения между " +"расплавленным состоянием и кристаллическим состоянием. Эта настройка " +"пропорционально изменяет весь экструзионный поток этой нити накала в gcode. " +"Рекомендуемый диапазон значений - от 0,95 до 1,05. Возможно, вы можете " +"настроить это значение, чтобы получить хорошую плоскую поверхность, когда " +"есть небольшое переполнение или недолив" + +msgid "Enable pressure advance" +msgstr "Включить опережение давления" + +msgid "" +"Enable pressure advance, auto calibration result will be overwriten once " +"enabled." +msgstr "" +"Включить опережение давления, результат автоматической калибровки будет " +"перезаписан после включения." + +msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" +msgstr "" +"Повышение давления (Klipper) AKA Коэффициент линейного продвижения (Marlin)" + +msgid "Default line width if some line width is set to be zero" +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 "" +"Если включить этот параметр, вентилятор охлаждения детали никогда не будет " +"останавливаться и будет работать\n" +"хотя бы на минимальной скорости для уменьшения частоты пусков и остановок" + +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 "c" + +msgid "Default color" +msgstr "Цвет по умолчанию" + +msgid "Default filament color" +msgstr "Цвет филамента по умолчанию" + +msgid "Color" +msgstr "Цвет" + +msgid "Required nozzle HRC" +msgstr "Требуемое сопло HRC" + +msgid "" +"Minimum HRC of nozzle required to print the filament. Zero means no checking " +"of nozzle's HRC." +msgstr "" +"Минимальный HRC сопла, необходимый для печати филамента. Ноль означает " +"отсутствие проверкиHRC сопла." + +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 "mm³/с" + +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 "" +"Время загрузки нового филамента при переключении филамента. Только для " +"статистики" + +msgid "Filament unload time" +msgstr "Время выгрузки филамента" + +msgid "Time to unload old filament when switch filament. For statistics only" +msgstr "" +"Время выгрузки нового филамента при переключении филамента. Только для " +"статистики" + +msgid "" +"Filament diameter is used to calculate extrusion in gcode, so it's important " +"and should be accurate" +msgstr "" +"Диаметр нити используется для расчета экструзии в gcode, поэтому он важен и " +"должен быть точным" + +msgid "Shrinkage" +msgstr "Усадка" + +#, 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 "" +"Введите процент усадки нити накала после охлаждения (94%, если измерить 94 " +"мм вместо 100 мм). Деталь будет масштабирована в xy для компенсации. " +"Учитывается только филамент, используемый для периметра.\n" +"Убедитесь, что между объектами достаточно места, так как эта компенсация " +"выполняется после проверок." + +msgid "Density" +msgstr "Плотность" + +msgid "Filament density. For statistics only" +msgstr "Плотность нити. Только для статистики" + +msgid "g/cm³" +msgstr "г/см³" + +msgid "The material type of filament" +msgstr "Тип материала филамента" + +msgid "Soluble material" +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 "Temperature of vitrificaiton" +msgstr "Температура витрификайтона" + +msgid "" +"Material becomes soft at this temperature. Thus the heatbed cannot be hotter " +"than this tempature" +msgstr "" +"При этой температуре материал становится мягким. Таким образом, нагреваемый " +"слой не может быть более горячим, чем эта температура" + +msgid "Price" +msgstr "Цена" + +msgid "Filament price. For statistics only" +msgstr "Цена филамента. Только для статистики" + +msgid "money/kg" +msgstr "р/кг" + +msgid "(Undefined)" +msgstr "(Неопределенный)" + +msgid "Infill direction" +msgstr "Направление заполнения" + +msgid "" +"Angle for sparse infill pattern, which controls the start or main direction " +"of line" +msgstr "" +"Angle for sparse infill pattern, which controls the start or main direction " +"of line" + +msgid "Sparse infill density" +msgstr "Плотность заполнения" + +#, c-format +msgid "Density of internal sparse infill, 100% means solid throughout" +msgstr "" +"Плотность внутреннего разреженного заполнения, 100% означает сплошное " +"заполнение по всей площади" + +msgid "Sparse infill pattern" +msgstr "Рисунок заполнения" + +msgid "Line pattern for internal sparse infill" +msgstr "Шаблон линии для внутреннего заполнения" + +msgid "Grid" +msgstr "Сетка" + +msgid "Line" +msgstr "Линия" + +msgid "Cubic" +msgstr "Кибический" + +msgid "Tri-hexagon" +msgstr "Звезды" + +msgid "Gyroid" +msgstr "Гироид" + +msgid "Honeycomb" +msgstr "Медовые соты" + +msgid "Adaptive Cubic" +msgstr "Адаптивный кубический" + +msgid "3D Honeycomb" +msgstr "3D медовые соты" + +msgid "Support Cubic" +msgstr "Поддерживающий кубический" + +msgid "Lightning" +msgstr "Молния" + +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." +msgstr "" +"Соедините линию заполнения с внутренним периметром с коротким сегментом " +"дополнительного периметра. Если оно выражено в процентах (например, 15%), " +"оно рассчитывается по ширине экструзии заполнения. Slic3r пытается соединить " +"две близкие линии заполнения с коротким сегментом периметра. Если такой " +"сегмент периметра короче infill_anchor_max не найден, линия заполнения " +"соединяется с сегментом периметра только с одной стороны, и длина взятого " +"сегмента периметра ограничена этим параметром, но не более " +"anchor_length_max.\n" +"Установите этот параметр равным нулю, чтобы отключить периметры привязки, " +"связанные с одной линией заполнения." + +msgid "0 (no open anchors)" +msgstr "0 (нет открытых привязок)" + +msgid "1000 (unlimited)" +msgstr "1000 (неограниченно)" + +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." +msgstr "" +"Соедините линию заполнения с внутренним периметром с коротким сегментом " +"дополнительного периметра. Если оно выражено в процентах (например, 15%), " +"оно рассчитывается по ширине экструзии заполнения. Slic3r пытается соединить " +"две близкие линии заполнения с коротким сегментом периметра. Если такой " +"сегмент периметра короче этого параметра не найден, линия заполнения " +"соединяется с сегментом периметра только на одной стороне, и длина взятого " +"сегмента периметра ограничена infill_anchor, но не длиннее этого параметра.\n" +"Если установлено значение 0, будет использован старый алгоритм для " +"подключения заполнения, он должен создать тот же результат, что и для 1000 & " +"0." + +msgid "0 (Simple connect)" +msgstr "0 (простое подключение)" + +msgid "Acceleration of outer walls" +msgstr "Ускорение наружных периметров" + +msgid "Acceleration of inner walls" +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 outer wall. Using a lower value can improve quality" +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 "" +"Ускорение мостов. Если значение выражено в процентах (например, 50%), оно " +"будет рассчитано на основе ускорения внешнего периметра." + +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 "" +"Ускорение заполнения. Если значение выражено в процентах (например, 100%), " +"оно будет рассчитано на основе ускорения по умолчанию." + +msgid "" +"Acceleration of internal solid infill. If the value is expressed as a " +"percentage (e.g. 100%), it will be calculated based on the default " +"acceleration." +msgstr "" +"Ускорение заполнения внутреннего твердого тела. Если значение выражено в " +"процентах (например, 100%), оно будет рассчитано на основе ускорения по " +"умолчанию." + +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 "" +"Max \"ускорение до замедления\" для Klipper будет скорректирован " +"автоматически" + +msgid "accel_to_decel" +msgstr "ускорение до замедления" + +#, c-format, boost-format +msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgstr "" +"Max \"ускорение до замедления\" для Klipper будет скорректирован на % o " +"автоматически" + +msgid "Jerk of outer walls" +msgstr "Рывок наружных периметров" + +msgid "Jerk of inner walls" +msgstr "Рывок внутренних периметров" + +msgid "Jerk for top surface" +msgstr "Рывок для верхней поверхности" + +msgid "Jerk for infill" +msgstr "Рывок для заполнения" + +msgid "Jerk for initial layer" +msgstr "Рывок для начального слоя" + +msgid "Jerk for travel" +msgstr "Рывок для перемещения" + +msgid "Line width of initial layer" +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 "Speed of initial layer except the solid infill part" +msgstr "Скорость первого слоя, за исключением сплошной заполняющей части" + +msgid "Initial layer infill" +msgstr "Начальное заполнение слоя" + +msgid "Speed of solid infill part of initial layer" +msgstr "Скорость сплошной заполняющей части исходного слоя" + +msgid "Initial layer travel speed" +msgstr "Начальная скорость перемещения слоя" + +msgid "Travel speed of initial layer" +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 "Initial layer nozzle temperature" +msgstr "Температура сопла первого слоя" + +msgid "Nozzle temperature to print initial layer when using this filament" +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 "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" +"Set to -1 to disable this override.\n" +"Can only be overriden by disable_fan_first_layers." +msgstr "" +"Эта скорость вентилятора обеспечивается во время всех интерфейсов поддержки, " +"чтобы иметь возможность ослабить их соединение с высокой скоростью " +"вентилятора.\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 "None" +msgstr "Нет" + +msgid "Contour" +msgstr "Контур" + +msgid "Contour and hole" +msgstr "Контур и отверстие" + +msgid "All walls" +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 "Fuzzy skin point distance" +msgstr "Нечеткое расстояние от точки кожи" + +msgid "" +"The average diatance between the random points introducded on each line " +"segment" +msgstr "" +"Среднее расстояние между случайными точками, введенными на каждом отрезке " +"линии" + +msgid "Filter out tiny gaps" +msgstr "Заплнение площади, меньше указанной" + +msgid "Layers and Perimeters" +msgstr "Слои и периметры" + +msgid "" +"Filter out gaps smaller than the threshold specified. This setting won't " +"affact top/bottom layers" +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. " +"А допуск подгонки одинаковым разрешением" + +msgid "Add line number" +msgstr "Добавить номер строки" + +msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" +msgstr "" +"Эта опция используется для добавления номера строки (Nx) в начале каждой " +"строки G-Code" + +msgid "Scan first layer" +msgstr "Сканировать первый слой" + +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 "" +"Металлический материал сопла. Это определяет абразивную стойкость\n" +"сопло и какой нитью можно печатать" + +msgid "Undefine" +msgstr "Отменить определение" + +msgid "Hardened steel" +msgstr "Закаленная сталь" + +msgid "Stainless steel" +msgstr "Нержавеющая сталь" + +msgid "Brass" +msgstr "Латунь" + +msgid "Nozzle HRC" +msgstr "Сопло HRC" + +msgid "" +"The nozzle's hardness. Zero means no checking for nozzle's hardness during " +"slicing." +msgstr "" +"Твердость сопла. Ноль означает отсутствие проверки жесткости сопла во время " +"нарезка." + +msgid "HRC" +msgstr "HRC" + +msgid "Enable this option if machine has auxiliary part cooling fan" +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" +"Use 0 to deactivate." +msgstr "" +"Запустите вентилятор на такое количество секунд раньше целевого времени " +"начала (можно использовать дробные секунды). Он предполагает бесконечное " +"ускорение для этой оценки времени и будет учитывать только перемещения G1 и " +"G0 (дуговой фитинг не поддерживается).\n" +"Он не будет перемещать команды вентиляторов из пользовательских кодов (они " +"действуют как своего рода «барьер»).\n" +"Он не перемещает команды вентиляторов в начальный gcode, если активирован " +"«единственный пользовательский начальный gcode».\n" +"Используйте 0 для деактивации." + +msgid "Only overhangs" +msgstr "Только свесы" + +msgid "Will only take into account the delay for the cooling of overhangs." +msgstr "Учтет только задержку охлаждения свесов." + +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" +"Set to 0 to deactivate." +msgstr "" +"Выдайте команду max fan speed (максимальная скорость вентилятора) за это " +"количество секунд до снижения до целевой скорости, чтобы запустить " +"вентилятор охлаждения.\n" +"Это полезно для вентиляторов, в которых низкий уровень PWM/мощности может " +"быть недостаточным для того, чтобы вентилятор начал вращаться с упора, или " +"для ускорения работы вентилятора.\n" +"Для деактивации установите значение 0." + +msgid "G-code flavor" +msgstr "Ароматизатор G-кода" + +msgid "What kind of gcode the printer is compatible with" +msgstr "С каким gcode совместим принтер" + +msgid "Klipper" +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-Code с указанием объекта, которому они принадлежат, что полезно для " +"подключаемого модуля Octoprint CancelObject. Эти настройки НЕ совместимы с " +"настройками «Один экструдер» (Single Extruder Multi Material) и «Протирать в " +"объект/протирать в заполнение» (Wipe into Object/Wipe into Infill)." + +msgid "Exclude objects" +msgstr "Исключить объект" + +msgid "Enable this option to add EXCLUDE OBJECT command in g-code" +msgstr "" +"Включить этот параметр для добавления команды ИСКЛЮЧИТЬ ОБЪЕКТ в g-code" + +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 "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." +msgstr "" +"Автоматическое объединение заполнения нескольких слоев для печати для " +"сокращения времени. Периметр по-прежнему печатается с исходной высотой слоя." + +msgid "Filament to print internal sparse infill." +msgstr "Филамент для печати внутреннего заполнения." + +msgid "Line width of internal sparse infill" +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 "Speed of internal sparse infill" +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 "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 "No ironing" +msgstr "Нет глажки" + +msgid "Top surfaces" +msgstr "Верхние поверхности" + +msgid "Topmost surface" +msgstr "Самая верхняя поверхность" + +msgid "All solid layer" +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 "Ironing line spacing" +msgstr "Шаг линии глажки" + +msgid "The distance between the lines of ironing" +msgstr "Расстояние между линиями глажки" + +msgid "Ironing speed" +msgstr "Скорость глажки" + +msgid "Print speed of ironing lines" +msgstr "Скорость печати гладильных линий" + +msgid "This gcode part is inserted at every layer change after lift z" +msgstr "Эта часть gcode вставляется при каждом изменении слоя после подъема z" + +msgid "Supports silent mode" +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-кода в gcode viewer" + +msgid "This G-code will be used as a custom code" +msgstr "Этот G-код будет использоваться в качестве пользовательского кода" + +msgid "Maximum speed X" +msgstr "Максимальная скорость X" + +msgid "Maximum speed Y" +msgstr "Максимальная скорость Y" + +msgid "Maximum speed Z" +msgstr "Максимальная скорость Z" + +msgid "Maximum speed E" +msgstr "Максимальная скорость E" + +msgid "Machine limits" +msgstr "Ограничения машины" + +msgid "Maximum X speed" +msgstr "Максимальная скорость X" + +msgid "Maximum Y speed" +msgstr "Максимальная скорость Y" + +msgid "Maximum Z speed" +msgstr "Максимальная скорость Z" + +msgid "Maximum E speed" +msgstr "Максимальная скорость E" + +msgid "Maximum acceleration X" +msgstr "Максимальное ускорение X" + +msgid "Maximum acceleration Y" +msgstr "Максимальное ускорение Y" + +msgid "Maximum acceleration Z" +msgstr "Максимальное ускорение Z" + +msgid "Maximum acceleration E" +msgstr "Максимальное ускорение E" + +msgid "Maximum acceleration of the X axis" +msgstr "Максимальное ускорение оси X" + +msgid "Maximum acceleration of the Y axis" +msgstr "Максимальное ускорение оси Y" + +msgid "Maximum acceleration of the Z axis" +msgstr "Максимальное ускорение оси Z" + +msgid "Maximum acceleration of the E axis" +msgstr "Максимальное ускорение оси E" + +msgid "Maximum jerk X" +msgstr "Максимальный рывок X" + +msgid "Maximum jerk Y" +msgstr "Максимальный рывок Y" + +msgid "Maximum jerk Z" +msgstr "Максимальный рывок Z" + +msgid "Maximum jerk E" +msgstr "Максимальный рывок E" + +msgid "Maximum jerk of the X axis" +msgstr "Максимальный рывок оси X" + +msgid "Maximum jerk of the Y axis" +msgstr "Максимальный рывок оси Y" + +msgid "Maximum jerk of the Z axis" +msgstr "Максимальный рывок оси Z" + +msgid "Maximum jerk of the E axis" +msgstr "Максимальный рывок оси E" + +msgid "Minimum speed for extruding" +msgstr "Минимальная скорость экструзии" + +msgid "Minimum speed for extruding (M205 S)" +msgstr "Минимальная скорость для выдавливания (M205 S)" + +msgid "Minimum travel speed" +msgstr "Минимальная скорость движения" + +msgid "Minimum travel speed (M205 T)" +msgstr "Минимальная скорость движения (M205 T)" + +msgid "Maximum acceleration for extruding" +msgstr "Максимальное ускорение для экструдировани" + +msgid "Maximum acceleration for extruding (M204 P)" +msgstr "Максимальное ускорение для выдавливания (M204 P)" + +msgid "Maximum acceleration for retracting" +msgstr "Максимальное ускорение для отката" + +msgid "Maximum acceleration for retracting (M204 R)" +msgstr "Максимальное ускорение для отката (M204 R)" + +msgid "Maximum acceleration for travel" +msgstr "Максимальное ускорение для движения" + +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 "Max" +msgstr "Max" + +msgid "" +"The largest printable layer height for extruder. Used tp limits the maximum " +"layer hight when enable adaptive layer height" +msgstr "" +"Наибольшая высота печатаемого слоя для экструдера. Используемый tp " +"ограничивает максимальную высоту слоя при включении адаптивной высоты слоя" + +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 "Min" +msgstr "Min" + +msgid "" +"The lowest printable layer height for extruder. Used tp limits the minimum " +"layer hight when enable adaptive layer height" +msgstr "" +"Самая низкая высота печатаемого слоя для экструдера. Используемый tp " +"ограничивает минимальную высоту слоя при включении адаптивной высоты слоя" + +msgid "Min print speed" +msgstr "Мин. скорость печати" + +msgid "The minimum printing speed when slow down for cooling" +msgstr "Минимальная скорость печати при замедлении для охлаждения" + +msgid "Nozzle diameter" +msgstr "Диаметр сопла" + +msgid "Diameter of nozzle" +msgstr "Диаметр сопла" + +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 "Nozzle volume" +msgstr "Объем сопла" + +msgid "Volume of nozzle between the cutter and the end of nozzle" +msgstr "Объем сопла между резцом и концом сопла" + +msgid "Start end points" +msgstr "Начальные конечные точки" + +msgid "The start and end points which is from cutter area to garbage can." +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 "Enable" +msgstr "Включение" + +msgid "Filename format" +msgstr "Формат имени файла" + +msgid "User can self-define the project file name when export" +msgstr "" +"Пользователь может самостоятельно определить имя файла проекта при экспорте" + +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 "Line width of inner wall" +msgstr "Ширина линии внутреннего периметра" + +msgid "Speed of inner wall" +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 "Raft contact Z distance" +msgstr "Расстояние контакта плота Z" + +msgid "Z gap between object and raft. Ignored for soluble interface" +msgstr "" +"Z зазор между объектом и подложкой. Игнорируется для растворимого материала" + +msgid "Raft expansion" +msgstr "Расширение плота" + +msgid "Expand all raft layers in XY plane" +msgstr "Развернуть все слои плота в плоскости XY" + +msgid "Initial layer density" +msgstr "Начальная плотность слоя" + +msgid "Density of the first raft or support layer" +msgstr "Плотность первого слоя или опорного слоя" + +msgid "Initial layer expansion" +msgstr "Расширение начального слоя" + +msgid "Expand the first raft or support layer to improve bed plate adhesion" +msgstr "" +"Расширьте первый рафт или опорный слой, чтобы улучшить адгезию опорной плиты" + +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 "" +"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-кода генерируется после упрощения контура модели, чтобы избежать " +"слишком большого количества точек и линий gcode в файле gcode. Меньшее " +"значение означает более высокое разрешение и больше времени для среза" + +msgid "Travel distance 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 "Retract when change layer" +msgstr "Ретракт при смене слоя" + +msgid "Force a retraction when changes layer" +msgstr "Принудительный откат при смене слоя" + +msgid "Length" +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 "" +"Некоторое количество материала в экструдере вытягивается обратно, чтобы " +"избежать зудения во время длительного перемещения. Установите нуль, чтобы " +"отключить ретракт" + +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 " +"может предотвратить стяжку" + +msgid "Z hop type" +msgstr "Тип Z-прыжка" + +msgid "Slope" +msgstr "Склон" + +msgid "Spiral" +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 "" +"Когда втягивание компенсируется после перемещения, экструдер проталкивает " +"это дополнительное количество нити. Эта настройка редко требуется." + +msgid "" +"When the retraction is compensated after changing tool, the extruder will " +"push this additional amount of filament." +msgstr "" +"Когда втягивание компенсируется после замены инструмента, экструдер " +"проталкивает это дополнительное количество нити." + +msgid "Retraction Speed" +msgstr "Скорость ретракта" + +msgid "Speed of retractions" +msgstr "Скорость ретракта" + +msgid "Deretraction Speed" +msgstr "Скорость компенсирующего ретракта" + +msgid "" +"Speed for reloading filament into extruder. Zero means same speed with " +"retraction" +msgstr "" +"Скорость перезарядки филпмента в экструдер. Ноль означает ту же скорость при " +"ретракте" + +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 для того, чтобы " +"микропрограммное обеспечение обрабатывало ретракт. Это поддерживается только " +"в недавнем Марлине." + +msgid "Show auto-calibration marks" +msgstr "Показать метки автоматической калибровки" + +msgid "Seam position" +msgstr "Положение шва" + +msgid "The start position to print each part of outer wall" +msgstr "Начальное положение для печати каждой части наружнго периметра" + +msgid "Nearest" +msgstr "Ближайший" + +msgid "Aligned" +msgstr "Выровненный" + +msgid "Back" +msgstr "Сзади" + +msgid "Random" +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 15%." +msgstr "" +"Чтобы уменьшить видимость шва при экструзии с замкнутым контуром, контур " +"прерывается и укорачивается на заданную величину.\n" +"Это количество может быть указано в миллиметрах или в процентах от текущего " +"диаметра экструдера. Значение по умолчанию для этого параметра - 15%." + +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 "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 "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%), то оно " +"будет рассчитано на основе приведенной выше установки скорости движения. " +"Значение по умолчанию для этого параметра - 80%" + +msgid "Skirt distance" +msgstr "Растояние между юбкой/каймой" + +msgid "Distance from skirt to brim or object" +msgstr "Растояние между юбкой/каймой или моделью" + +msgid "Skirt height" +msgstr "Слоёв юбки" + +msgid "How many layers of skirt. Usually only one layer" +msgstr "Сколько слоев юбки. Обычно только один слой" + +msgid "Skirt loops" +msgstr "Юбок вокруг модели" + +msgid "Number of loops for the skirt. Zero means disabling skirt" +msgstr "Количество петель для юбки. Ноль означает отключение юбки" + +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 "" +"Скорость печати в экспортируемом gcode будет замедлена, когда расчетное " +"время слоя меньше этого значения, чтобы получить лучшее охлаждение для этих " +"слоев" + +msgid "Minimum sparse infill threshold" +msgstr "Минимальный порог заполнения" + +msgid "" +"Sparse infill area which is smaller than threshold value is replaced by " +"internal solid infill" +msgstr "" +"Площадь заполнения, которая меньше порогового значения, заменяется " +"внутренним сплошным заполнением" + +msgid "mm²" +msgstr "mm²" + +msgid "Line width of internal solid infill" +msgstr "Ширина линии внутреннего сплошного заполнения" + +msgid "Speed of internal solid infill, not the top and bottom surface" +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 "" +"Переход по спирали сглаживает движение z внешнего контура. И превращает " +"твердотельную модель в одностенную печать со сплошными нижними слоями. " +"Конечная сгенерированная модель не имеет шва" + +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 "" +"Если выбран плавный или традиционный режим, для каждой печати будет " +"сгенерировано видео с временным интервалом. После печати каждого слоя " +"производится снимок камеры. Все эти снимки создаются в виде видео с " +"временным интервалом по завершении печати. Если выбран режим сглаживания, то " +"после печати каждого слоя головка инструментов перемещается к избыточному " +"лотку, а затем снимается снимок. Поскольку филамент может просачиваться из " +"сопла во время процесса получения снимка, для гладкого режима очистки сопла " +"требуется башня очистки." + +msgid "Traditional" +msgstr "Традиционный" + +msgid "Temperature variation" +msgstr "Изменение температуры" + +msgid "Start G-code" +msgstr "Стартовый G-code" + +msgid "Start G-code when start the whole printing" +msgstr "Стартовый G-code при запуске всей печати" + +msgid "Start G-code when start the printing of this filament" +msgstr "Стартовый G-code при запуске печати этим филаментом" + +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 "Slicing Mode" +msgstr "Режим нарезки" + +msgid "" +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " +"close all holes in the model." +msgstr "" +"Используйте «Четный-нечетный» для 3DLabPrint моделей самолетов. Для закрытия " +"всех отверстий в модели используется команда «Закрыть отверстия»." + +msgid "Regular" +msgstr "Обычный" + +msgid "Even-odd" +msgstr "Чётный-нечетный" + +msgid "Close holes" +msgstr "Закрыть отверстия" + +msgid "Enable support" +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 "" +"обычная (auto) и древовидная (auto) используется для автоматического " +"создания поддержки. Если выбрана обычная (ручная) или древовидная (ручная), " +"создаются только средства обеспечения поддержки" + +msgid "normal(auto)" +msgstr "обычная (авто)" + +msgid "tree(auto)" +msgstr "древовидная (авто)" + +msgid "normal(manual)" +msgstr "обычная (ручная)" + +msgid "tree(manual)" +msgstr "древовидная (ручная)" + +msgid "Support/object xy distance" +msgstr "Поддержка/объект XY расстояние" + +msgid "XY separation between an object and its support" +msgstr "Разделение XY между объектом и поддержкой" + +msgid "Pattern angle" +msgstr "Угол шаблона" + +msgid "Use this setting to rotate the support pattern on the horizontal plane." +msgstr "" +"Используйте эту настройку, чтобы повернуть шаблон поддержки в горизонтальной " +"плоскости." + +msgid "On build plate only" +msgstr "Только от стола" + +msgid "Don't create support on model surface, only on build plate" +msgstr "Не создавайте опору на поверхности модели, только от стола" + +msgid "Support critical regions only" +msgstr "Поддерживать только критические области" + +msgid "" +"Only create support for critical regions including sharp tail, cantilever, " +"etc." +msgstr "" +"Создавать поддержку только для критических областей, включая острый хвост, " +"консоль и т.д." + +msgid "Top Z distance" +msgstr "Верхнее расстояние Z" + +msgid "The z gap between the top support interface and object" +msgstr "Зазор по оси z между верхом поддержки и объектом" + +msgid "Bottom Z distance" +msgstr "Нижнее расстояние Z" + +msgid "The z gap between the bottom support interface and object" +msgstr "Зазор по оси z между низом поддержки и объектом" + +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 "Line width of support" +msgstr "Ширина линии поддержки" + +msgid "Interface use loop pattern" +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 "Top interface layers" +msgstr "Верхний слой поддержки" + +msgid "Number of top interface layers" +msgstr "Количество верхних слоев поддержки" + +msgid "Bottom interface layers" +msgstr "Нижние слои поддержки" + +msgid "Top interface spacing" +msgstr "Расстояние между верхними интерфейсами" + +msgid "Spacing of interface lines. Zero means solid interface" +msgstr "Расстояние между линиями поддержки. Ноль означает сплошноую поддержку" + +msgid "Bottom interface spacing" +msgstr "Интервал нижнего слоя поддержки" + +msgid "Spacing of bottom interface lines. Zero means solid interface" +msgstr "" +"Расстояние между нижними интерфейсными линиями. Ноль означает сплошной " +"интерфейс" + +msgid "Speed of support interface" +msgstr "Скорость печати поддержки" + +msgid "Base pattern" +msgstr "Базовый шаблон" + +msgid "Line pattern of support" +msgstr "Линия поддержки" + +msgid "Rectilinear grid" +msgstr "Прямолинейная сетка" + +msgid "Hollow" +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 "Rectilinear Interlaced" +msgstr "Прямолинейный Чересстрочный" + +msgid "Base pattern spacing" +msgstr "Базовый интервал шаблона" + +msgid "Spacing between support lines" +msgstr "Расстояние между линиями поддержки" + +msgid "Normal Support expansion" +msgstr "Нормальное расширение поддержки" + +msgid "Expand (+) or shrink (-) the horizontal span of normal support" +msgstr "Расширить (+) или уменьшить (-) горизонтальный пролет поддержки" + +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." +msgstr "" +"Стиль и форма опоры. Для обычной поддержки проецирование опор в обычную " +"сетку создаст более устойчивые опоры (по умолчанию), в то время как упорные " +"опоры сэкономят материал и уменьшат образование рубцов на объектах.\n" +"Для поддержки дерева тонкий стиль будет объединять ветви более агрессивно и " +"экономить много материала (по умолчанию), в то время как гибридный стиль " +"создаст структуру, аналогичную обычной поддержке при больших плоских свесах." + +msgid "Snug" +msgstr "Аккуратный" + +msgid "Tree Slim" +msgstr "Древовидная тонкая" + +msgid "Tree Strong" +msgstr "Древовидная сильная" + +msgid "Tree Hybrid" +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 "" +"Опорный слой использует высоту слоя, не зависящую от слоя объекта. Это " +"необходимо для поддержки настройки z-gap и экономии времени печати. Этот " +"параметр будет недопустимым, если включена основная башня." + +msgid "Threshold angle" +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 "Tree support branch distance" +msgstr "Адаптивная высота слоя" + +msgid "" +"This setting determines the distance between neighboring tree support nodes." +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 "Auto brim width" +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 "Ширина границы каймы дерева" + +msgid "Distance from tree branch to the outermost brim line" +msgstr "Расстояние от ветви дерева до самой внешней линии границы каймы" + +msgid "Tree support branch diameter" +msgstr "Диаметр ветви древовидной поддержки" + +msgid "This setting determines the initial diameter of support nodes." +msgstr "Этот параметр определяет начальный диаметр опорных узлов." + +msgid "Tree support wall loops" +msgstr "Контуры опорной стенки дерева" + +msgid "This setting specify the count of walls around tree support" +msgstr "Этот параметр задает количество периметров вокруг опоры дерева" + +msgid "Tree support with infill" +msgstr "Поддержка дерева с заполнением" + +msgid "" +"This setting specifies whether to add infill inside large hollows of tree " +"support" +msgstr "" +"Этот параметр определяет, следует ли добавлять заполнение внутри больших " +"полостей поддержки дерева" + +msgid "Target chamber temperature" +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 "" +"This gcode is inserted when change filament, including T command to trigger " +"tool change" +msgstr "" +"Этот gcode вставляется при изменении филамента, включая команду T для " +"запуска смены инструмента" + +msgid "Line width for top surfaces" +msgstr "Ширина линии для верхнего слоя" + +msgid "Speed of top surface infill which is solid" +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 "Top solid layers" +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" +msgstr "" +"Количество верхних сплошных слоев увеличивается при разрезании, если " +"толщина, вычисленная слоями верхней оболочки, тоньше этого значения. Это " +"позволяет избежать слишком тонкой оболочки при небольшой высоте слоя. 0 " +"означает, что эта настройка отключена и толщина верхней оболочки полностью " +"ограничена верхними слоями оболочки" + +msgid "Speed of travel which is faster and without extrusion" +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 "Wipe Distance" +msgstr "Расстояние очистки" + +msgid "" +"Discribe how long the nozzle will move along the last path when retracting" +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 "Объём очистки" + +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 "Prime volume" +msgstr "Основной объём" + +msgid "The volume of material to prime extruder on tower." +msgstr "Объем материала для первичного экструдера на башне." + +msgid "Width" +msgstr "Ширина" + +msgid "Width of prime tower" +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 "" +"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 "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 "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 "G-code thumbnails" +msgstr "Миниатюры G-code" + +msgid "" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " +"following format: \"XxY, XxY, ...\"" +msgstr "" +"Размеры рисунков должны храниться в файлах .gcode и .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" +msgstr "" +"При использовании опции «label_objects» рекомендуется относительное " +"выдавливание. Некоторые экструдеры работают лучше с этой опцией без проверки " +"(абсолютный режим экструзии). Обтирочная башня совместима только с " +"относительным режимом. Она всегда включена на принтерах BambuLab. По " +"умолчанию установлен флажок" + +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 "Класический" + +msgid "Arachne" +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 "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" +msgstr "" +"Предотвращение перехода назад и вперед между одной дополнительной стенкой и " +"одной меньше. Это поле расширяет диапазон ширины выдавливания до " +"[Минимальная ширина стенки - поле, 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" +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 "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 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 "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 "invalid value " +msgstr "неверное значение " + +#, c-format, boost-format +msgid " doesn't work at 100%% density " +msgstr " не работает на 100%% плотности " + +msgid "Invalid value when spiral vase mode is enabled: " +msgstr "Недопустимое значение при включенном режиме спиральной вазы: " + +msgid "too large line width " +msgstr "слишком большая ширина линии " + +msgid " not in range " +msgstr " не в зоне " + +msgid "Export 3MF" +msgstr "Экспорт 3MF" + +msgid "Export project as 3MF." +msgstr "Экспортируйте проект как 3MF." + +msgid "Export slicing data" +msgstr "Экспорт данных нарезки" + +msgid "Export slicing data to a folder." +msgstr "Экспорт данных нарезки в папку." + +msgid "Load slicing data" +msgstr "Загрузить данные о нарезке" + +msgid "Load cached slicing data from directory" +msgstr "Загрузить кэшированные данные нарезки из каталога" + +msgid "Slice" +msgstr "Нарезка" + +msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" +msgstr "Нарезать пластины: 0-все пластины, i-пластина i, другие-недопустимые" + +msgid "Show command help." +msgstr "Показать справку по команде." + +msgid "UpToDate" +msgstr "До настоящего времени" + +msgid "Update the configs values of 3mf to latest." +msgstr "Обновите значения конфигурации 3mf до последних." + +msgid "mtcpp" +msgstr "mtcpp" + +msgid "max triangle count per plate for slicing." +msgstr "максимальное количество треугольников на стол для нарезки." + +msgid "mstpp" +msgstr "mstpp" + +msgid "max slicing time per plate in seconds." +msgstr "максимальное время нарезки на стол в секундах." + +msgid "No check" +msgstr "Без проверки" + +msgid "Do not run any validity checks, such as gcode path conflicts check." +msgstr "" +"Не выполняйте проверки действительности, например проверку конфликтов пути " +"gcode." + +msgid "Normative check" +msgstr "Нормативная проверка" + +msgid "Check the normative items." +msgstr "Проверьте нормативные позиции." + +msgid "Output Model Info" +msgstr "Выходная информация о модели" + +msgid "Output the model's information." +msgstr "Выведите информацию о модели." + +msgid "Export Settings" +msgstr "Экспорт настроек" + +msgid "Export settings to a file." +msgstr "Экспорт настроек в файл." + +msgid "Send progress to pipe" +msgstr "Отправить прогресс в канал" + +msgid "Send progress to pipe." +msgstr "Отправить прогресс в канал." + +msgid "Arrange Options" +msgstr "Упорядочить параметры" + +msgid "Arrange options: 0-disable, 1-enable, others-auto" +msgstr "Параметры упорядочивания: 0-disable, 1-enable, другие-auto" + +msgid "Convert Unit" +msgstr "Преобразовать единицу измерения" + +msgid "Convert the units of model" +msgstr "Преобразование единиц модели" + +msgid "Orient the model" +msgstr "Ориентировать модель" + +msgid "Scale the model by a float factor" +msgstr "Масштабируйте модель с помощью плавающего коэффициента" + +msgid "Load General Settings" +msgstr "Загрузить общие настройки" + +msgid "Load process/machine settings from the specified file" +msgstr "Загрузить настройки процесса/машины из указанного файла" + +msgid "Load Filament Settings" +msgstr "Загрузить настройки филамента" + +msgid "Load filament settings from the specified file list" +msgstr "Загрузить настройки филамента из указанного списка файлов" + +msgid "Skip Objects" +msgstr "Пропустить объекты" + +msgid "Skip some objects in this print" +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 "Output directory" +msgstr "Выходной каталог" + +msgid "Output directory for the exported files." +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 "Error in zip archive" +msgstr "Ошибка в zip архиве" + +msgid "Generating walls" +msgstr "Создание периметров" + +msgid "Generating infill regions" +msgstr "Создание областей заполнения" + +msgid "Generating infill toolpath" +msgstr "Создание траектории заполнения" + +msgid "Detect overhangs for auto-lift" +msgstr "Обнаружение выступов для автоматического подъема" + +msgid "Generating support" +msgstr "Генерация поддержки" + +msgid "Checking support necessity" +msgstr "Проверка необходимости поддержки" + +msgid "floating regions" +msgstr "плавающие области" + +msgid "floating cantilever" +msgstr "плавающая консоль" + +msgid "large overhangs" +msgstr "большие свесы" + +#, c-format, boost-format +msgid "" +"It seems object %s has %s. Please re-orient the object or enable support " +"generation." +msgstr "" +"Похоже, объект %s имеет %s. Измените ориентацию объекта или включите " +"создание поддержки." + +msgid "Optimizing toolpath" +msgstr "Оптимизация траектории инструмента" + +msgid "Empty layers around bottom are replaced by nearest normal layers." +msgstr "Пустые слои вокруг дна заменяются ближайшими нормальными слоями." + +msgid "The model has too many empty layers." +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 "" +"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 "" +"Компенсация размера XY объекта не будет использоваться, поскольку он также " +"окрашен цветом.\n" +"Компенсация размера XY не может сочетаться с цветовой окраской." + +#, c-format, boost-format +msgid "Support: generate toolpath at layer %d" +msgstr "Поддержка: создание траектории инструмента на слое %d" + +msgid "Support: detect overhangs" +msgstr "Поддержка: обнаружение свесов" + +msgid "Support: generate contact points" +msgstr "Поддержка: создание точек контакта" + +msgid "Support: propagate branches" +msgstr "Поддержка: распространение ветвей" + +msgid "Support: draw polygons" +msgstr "Поддержка: рисование полигонов" + +msgid "Support: generate toolpath" +msgstr "Поддержка: создание траектории инструмента" + +#, c-format, boost-format +msgid "Support: generate polygons at layer %d" +msgstr "Поддержка: создание полигонов на слое %d" + +#, c-format, boost-format +msgid "Support: fix holes at layer %d" +msgstr "Поддержка: фиксация отверстий на слое %d" + +#, c-format, boost-format +msgid "Support: propagate branches at layer %d" +msgstr "Поддержка: распространение ветвей на слое %d" + +msgid "PA Calibration" +msgstr "РА Калибровка" + +msgid "DDE" +msgstr "Директ" + +msgid "Bowden" +msgstr "Боуден" + +msgid "Extruder type" +msgstr "Тип экструдера" + +msgid "PA Tower" +msgstr "РА башня" + +msgid "PA Line" +msgstr "РА линия" + +msgid "Method" +msgstr "Метод" + +msgid "Start PA: " +msgstr "Стартовый PA: " + +msgid "End PA: " +msgstr "Конечный РА: " + +msgid "PA step: " +msgstr "Шаг РА: " + +msgid "Print numbers" +msgstr "Печать значений" + +msgid "" +"Please input valid values:\n" +"Start PA: >= 0.0\n" +"End PA: > Start PA\n" +"PA step: >= 0.001)" +msgstr "" +"Введите допустимые значения:\n" +"Начальный PA: > = 0,0\n" +"Конец PA: > Начало PA\n" +"Шаг PA: > = 0,001)" + +msgid "Temperature calibration" +msgstr "Калибровка температуры" + +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 "Тип филамента" + +msgid "Start temp: " +msgstr "Стартовая температура: " + +msgid "End end: " +msgstr "Конечная температура: " + +msgid "Temp step: " +msgstr "Шаг температуры: " + +msgid "" +"Please input valid values:\n" +"Start temp: <= 350\n" +"End temp: >= 180\n" +"Start temp > End temp + 5)" +msgstr "" +"Введите допустимые значения:\n" +"Начальная температура: < = 350\n" +"Конечная температура: > = 180\n" +"Начальная температура > Конечная температура + 5)" + +msgid "Max volumetric speed test" +msgstr "Тест максимальной объемной скорости" + +msgid "Start volumetric speed: " +msgstr "Начальная объемная скорость: " + +msgid "End volumetric speed: " +msgstr "Конечная объемная скорость: " + +msgid "step: " +msgstr "шаг: " + +msgid "" +"Please input valid values:\n" +"start > 0 step >= 0\n" +"end > start + step)" +msgstr "" +"Введите допустимые значения:\n" +"начало > 0 шаг > = 0\n" +"конец > начало + шаг)" + +msgid "VFA test" +msgstr "VFA тест" + +msgid "Start speed: " +msgstr "Стартовая скорость: " + +msgid "End speed: " +msgstr "Конечная скорость: " + +msgid "" +"Please input valid values:\n" +"start > 10 step >= 0\n" +"end > start + step)" +msgstr "" +"Введите допустимые значения:\n" +"старт > 10 шагов >= 0\n" +"конец > начало + шаг)" + +msgid "Start retraction length: " +msgstr "Начальная длина ретракта: " + +msgid "End retraction length: " +msgstr "Конечная длина ретракта: " + +msgid "mm/mm" +msgstr "mm/mm" + +msgid "Physical Printer" +msgstr "Физический принтер" + +msgid "Print Host upload" +msgstr "Загрузка хоста печати" + +msgid "Test" +msgstr "Тест" + +msgid "Could not get a valid Printer Host reference" +msgstr "Не удалось получить действительную ссылку на хост принтера" + +msgid "Success!" +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 CA является необязательным. Он необходим только при использовании " +"HTTPS с самозаверяющим сертификатом." + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "Файлы сертификатов (*.crt, *.pem)|*.crt;*.pem|Все файлы|*.*" + +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 "" +"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 "Не удалось подключиться к принтерам, подключенным через узел печати." + +#: 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 сценами\n" +"Знаете ли вы, как управлять видом и выбором объекта/детали с помощью мыши и " +"сенсорной панели в 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?" +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?" +msgstr "" +"Исправить модель\n" +"Знаете ли вы, что вы можете исправить поврежденную 3D-модель, чтобы избежать " +"большого количества проблем с нарезкой?" + +#: resources/data/hints.ini: [hint:Timelapse] +msgid "" +"Timelapse\n" +"Did you know that you can generate a timelapse video during each print?" +msgstr "" +"Таймлапс\n" +"Знаете ли вы, что вы можете генерировать видео во время каждой печати?" + +#: 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 "" +"Авторасстановка\n" +"Знаете ли вы, что можно автоматически упорядочить все объекты в проекте?" + +#: 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 "" +"Автоориентация\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." +msgstr "" +"Положить на лицо\n" +"Знаете ли вы, что вы можете быстро сориентировать модель так, чтобы одна из " +"ее граней лежала на столе? Выберите функцию «Разместить на грани» или " +"нажмите клавишу < b > 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?" +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." +msgstr "" +"Упрощение модели\n" +"Знаете ли вы, что можно уменьшить количество треугольников в сети с помощью " +"элемента Упростить сеть (Simplify mesh)? Щелкните модель правой кнопкой мыши " +"и выберите «Упростить модель». Дополнительная информация приведена в " +"документации." + +#: 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 "" +"Таблица параметров среза\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?" +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." +msgstr "" +"Вычесть деталь\n" +"Знаете ли вы, что можно вычитать одну сеть из другой с помощью модификатора " +"отрицательной детали? Таким образом можно, например, создать легко " +"изменяемые отверстия непосредственно в 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!" +msgstr "" +"STEP\n" +"Знаете ли вы, что вы можете улучшить качество печати, нарезав файл 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!" +msgstr "" +"Расположение шва Z\n" +"Знаете ли вы, что вы можете настроить расположение Z-шва и даже нарисовать " +"его на отпечатке, чтобы он был в менее видимом месте? Это улучшает общий вид " +"модели. Посмотри!" + +#: 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 "" +"Тонкая настройка расхода\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." +msgstr "" +"Разбейте отпечатки на пластины\n" +"Знаете ли вы, что можно разделить модель с большим количеством деталей на " +"отдельные столы, готовые к печати? Это упростит процесс отслеживания всех " +"деталей." + +#: 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 "" +"Ускорение печати с помощью функции «Адаптивная высота слоя»\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." +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!" +msgstr "" +"Различные типы опор\n" +"Знаете ли вы, что можно выбрать один из нескольких типов опор? Поддержка " +"Tree отлично работает для органических моделей, сохраняя при этом нити " +"накала и повышая скорость печати. Проверьте их!" + +#: 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 "" +"Печать шелковым филаментом\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?" +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?" +msgstr "" +"Установка параметров для нескольких объектов\n" +"Знаете ли вы, что можно установить параметры нарезки для всех выбранных " +"объектов одновременно?" + +#: resources/data/hints.ini: [hint:Stack objects] +msgid "" +"Stack objects\n" +"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?" +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?" +msgstr "" +"Повышение прочности\n" +"Знаете ли вы, что для повышения прочности модели можно использовать больше " +"периметров и более высокую плотность заполнения?" diff --git a/bbl/i18n/sv/OrcaSlicer_sv.po b/bbl/i18n/sv/OrcaSlicer_sv.po index e95324908a..462cc78d31 100644 --- a/bbl/i18n/sv/OrcaSlicer_sv.po +++ b/bbl/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-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-07-07 00:37+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1878,7 +1878,10 @@ msgstr "" msgid "You need to select the material type and color first." msgstr "" -msgid "Other color" +msgid "Other Color" +msgstr "" + +msgid "Custom Color" msgstr "" msgid "Dynamic flow calibration" @@ -6250,6 +6253,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "Nuvarande inställning har ingen extrudering." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6841,11 +6847,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops 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" +"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" @@ -7198,6 +7204,45 @@ msgstr "" msgid "Lightning" msgstr "" +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." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +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." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" @@ -8020,6 +8065,14 @@ msgstr "Tillbaka" msgid "Random" 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 "Seam gap" msgstr "" @@ -8075,6 +8128,12 @@ msgstr "Skirt varv" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "Antal skirt varv. 0 betyder att skirt är inaktiverad" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + 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" @@ -9106,190 +9165,6 @@ msgstr "" msgid "Connection to printers connected via the print host failed." 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 "" - -#: 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 "" - -#: 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 "" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -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?" -msgstr "" - -#: 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 "" - #~ msgid "Keep upper part" #~ msgstr "Behåll övre del" diff --git a/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po b/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po index dea9c507ad..52d6ba64ff 100644 --- a/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po +++ b/bbl/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-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-07-07 00:37+0800\n" "PO-Revision-Date: 2023-04-01 13:21+0800\n" "Last-Translator: Jiang Yue \n" "Language-Team: \n" @@ -1841,7 +1841,10 @@ msgstr "请输入有效的数值 (K的范围为0~0.5, N的范围为0.6~2.0)" msgid "You need to select the material type and color first." msgstr "" -msgid "Other color" +msgid "Other Color" +msgstr "" + +msgid "Custom Color" msgstr "" msgid "Dynamic flow calibration" @@ -6187,6 +6190,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "根据当前设置,不会生成任何打印。" +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6745,15 +6751,15 @@ msgid "Internal bridge support thickness" msgstr "内部桥接支撑厚度" msgid "" -"If enabled, Studio will generate support loops 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" +"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 "" -"如果开启,Studio会沿着内部桥接的边沿在其下方生成支撑轮廓。这些支撑轮廓可以防" -"止悬空地打印内部桥接并提高顶面质量,特别是在填充密度较低的情况下。这个设置用" -"于调整支撑轮廓的厚度,0表示关闭此特性。" +"如果开启,逆戟鲸切片会沿着内部桥接的边沿在其下方生成支撑轮廓。这些支撑轮廓可" +"以防止悬空地打印内部桥接并提高顶面质量,特别是在填充密度较低的情况下。这个设" +"置用于调整支撑轮廓的厚度,0表示关闭此特性。" msgid "Top surface pattern" msgstr "顶面图案" @@ -7091,6 +7097,54 @@ msgstr "支撑立方体" msgid "Lightning" msgstr "闪电" +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." +msgstr "" +"用附加周长的一小段将填充线连接到内部周长。如果以百分比(例如:15%)表示,则计" +"算填充拉伸宽度。OrcaSlicer 试图将两条紧密的填充线连接到一个短的周长段。如果找" +"不到短于“填充”和“锚点”最大值的周长线段,则填充线仅在一侧连接到周长线段,并且" +"所取周长线段的长度仅限于此参数,但不超过“锚点长度”最大值。将此参数设置为零," +"以禁用连接到单个填充线的锚点周长。" + +msgid "0 (no open anchors)" +msgstr "0 (无锚线)" + +msgid "1000 (unlimited)" +msgstr "1000(无限制)" + +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." +msgstr "" +"用附加周长的一小段将填充线连接到内部周长。如果以百分比(例如:15%)表示,则计" +"算填充拉伸宽度。OrcaSlicer 试图将两条紧密的填充线连接到一个短的周长段。如果找" +"不到比此参数短的周长线段,则填充线仅在一侧连接到周长线段,并且所采用的周长线" +"段的长度仅限于 infl_anchor,但不超过此参数。将此参数设置为零以禁用锚点。" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "外墙的加速度。它通常使用比内壁速度慢的加速度,以获得更好的质量" @@ -7869,6 +7923,14 @@ msgstr "背面" msgid "Random" 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 "Seam gap" msgstr "接缝留空" @@ -7924,6 +7986,12 @@ msgstr "Skirt圈数" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "skirt的圈数。0表示关闭skirt。" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + 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" @@ -8959,250 +9027,235 @@ msgstr "" msgid "Connection to printers connected via the print host failed." 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场景操作\n" -"如何在3D场景中使用鼠标和触摸面板进行视角控制和对象/部件选择" +#~ 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场景操作\n" +#~ "如何在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?" -msgstr "" -"切割工具\n" -"您知道吗?您可以使用切割工具以任何角度和位置切割模型。" +#~ msgid "" +#~ "Cut Tool\n" +#~ "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?" -msgstr "" -"修复模型\n" -"您知道吗?您可以修复一个损坏的3D模型以避免诸多切片问题。" +#~ msgid "" +#~ "Fix Model\n" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " +#~ "slicing problems?" +#~ msgstr "" +#~ "修复模型\n" +#~ "您知道吗?您可以修复一个损坏的3D模型以避免诸多切片问题。" -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" -"延时摄影\n" -"您知道吗?您可以每次打印时生成一段延时摄影。" +#~ msgid "" +#~ "Timelapse\n" +#~ "Did you know that you can generate a timelapse video during each print?" +#~ msgstr "" +#~ "延时摄影\n" +#~ "您知道吗?您可以每次打印时生成一段延时摄影。" -#: 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 "" -"自动摆盘\n" -"您知道吗?您可以自动排列项目中的所有对象。" +#~ msgid "" +#~ "Auto-Arrange\n" +#~ "Did you know that you can auto-arrange all objects in your project?" +#~ msgstr "" +#~ "自动摆盘\n" +#~ "您知道吗?您可以自动排列项目中的所有对象。" -#: 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 "" -"自动朝向\n" -"您知道吗,您只需单击鼠标,即可将对象旋转到适合的打印方向。" +#~ msgid "" +#~ "Auto-Orient\n" +#~ "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." -msgstr "" -"放置在面部\n" -"您知道吗,您可以快速指定模型的底面,使其位于打印床上。选择“放置在面部”功能或" -"按F键。" +#~ 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 "" +#~ "放置在面部\n" +#~ "您知道吗,您可以快速指定模型的底面,使其位于打印床上。选择“放置在面部”功能" +#~ "或按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?" -msgstr "" -"对象列表\n" -"您知道对象列表吗?您可以在其中的查看所有对象/部件,并更改每个对象/部件的设" -"置。" +#~ 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 "" +#~ "对象列表\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." -msgstr "" -"简化模型\n" -"您知道吗,您可以使用“简化模型”功能减少模型的三角形数。在模型上单击鼠标右键," -"然后选择“简化模型”。" +#~ 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 "" +#~ "简化模型\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?" -msgstr "" -"参数表格\n" -"您知道吗?您可以参数表格上的所有对象/部件,并更改每个对象/部件的设置。" +#~ 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 "" +#~ "参数表格\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?" -msgstr "" -"分割成对象/零件\n" -"您知道吗,您可以把一个大对象分割成多个小对象/零件以便着色或打印。" +#~ 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 "" +#~ "分割成对象/零件\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." -msgstr "" -"减去部分几何体\n" -"您知道吗,您可以使用负零件从另一个几何体中减去另一个几何体。例如,可以直接在" -"逆戟鲸中创建可轻松调整大小的孔。" +#~ 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 "" +#~ "减去部分几何体\n" +#~ "您知道吗,您可以使用负零件从另一个几何体中减去另一个几何体。例如,可以直接" +#~ "在逆戟鲸中创建可轻松调整大小的孔。" -#: 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 "" -"STEP文件\n" -"您知道吗,通过切片STEP文件而不是STL文件可以提高打印质量。\n" -"逆戟鲸支持切片STEP文件,提供比低分辨率STL更平滑的结果。试试看!" +#~ 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 "" +#~ "STEP文件\n" +#~ "您知道吗,通过切片STEP文件而不是STL文件可以提高打印质量。\n" +#~ "逆戟鲸支持切片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!" -msgstr "" -"Z接缝位置\n" -"您知道吗,您可以自定义Z接缝的位置,甚至可以将其绘制在打印上,使其位于不太可见" -"的位置。这样可以改善模型的整体外观。试试看!" +#~ 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接缝位置\n" +#~ "您知道吗,您可以自定义Z接缝的位置,甚至可以将其绘制在打印上,使其位于不太" +#~ "可见的位置。这样可以改善模型的整体外观。试试看!" -#: 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 "" -"流量微调\n" -"你知道吗,您可以微调流量,以获得更好看的打印效果。根据材料的不同,可以通过进" -"行一些微调来提高打印模型的整体光洁度。" +#~ 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 "" +#~ "流量微调\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." -msgstr "" -"分盘打印\n" -"您知道吗,您可以把一个有很多零件的模型安排到多个独立的分盘,然后打印出来,这" -"将简化对所有零件的管理。" +#~ 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 "" +#~ "分盘打印\n" +#~ "您知道吗,您可以把一个有很多零件的模型安排到多个独立的分盘,然后打印出来," +#~ "这将简化对所有零件的管理。" -#: 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 "" -"自适应层高度加速打印\n" -"您知道吗,您可以使用“自适应层高度”选项可以更快地打印模型。试试看!" +#~ 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 "" +#~ "自适应层高度加速打印\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." -msgstr "" -"绘制支撑\n" -"您知道吗,您可以手动绘制添加/屏蔽支撑的位置,此功能使仅将支撑材料放置在实际需" -"要的模型截面上变得容易。" +#~ 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 "" +#~ "绘制支撑\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!" -msgstr "" -"支撑类型\n" -"您知道吗,有多种可选的支撑类型,树状支撑非常适合人物/动物模型,同时可以节耗材" -"并提高打印速度。试试看!" +#~ 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 "" +#~ "支撑类型\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 "" -"打印丝绸耗材\n" -"你知道吗,丝绸耗材需要特别考虑才能成功打印。为了获得最佳效果,通常建议使用较" -"高的温度和较低的速度。" +#~ 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 "" +#~ "打印丝绸耗材\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?" -msgstr "" -"使用Brim\n" -"您知道吗?当模型与热床表面的接触面积较小时,建议使用brim以提高打印成功率。" +#~ 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 "" +#~ "使用Brim\n" +#~ "您知道吗?当模型与热床表面的接触面积较小时,建议使用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?" -msgstr "" -"为多个对象设置参数\n" -"您知道吗,可以同时为所有选定对象设置切片参数。" +#~ msgid "" +#~ "Set parameters for multiple objects\n" +#~ "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 "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -msgstr "" -"组合物体\n" -"你知道吗?你可以把多个对象组合为一个整体。" +#~ msgid "" +#~ "Stack objects\n" +#~ "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?" -msgstr "" -"冲刷到支持/对象/填充中\n" -"你知道吗?你可以在换料时将它们冲入支撑/对象/填充,以节省浪费的料丝。" +#~ 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 "" +#~ "冲刷到支持/对象/填充中\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?" -msgstr "" -"提高强度\n" -"你知道吗?你可以使用更多的墙层数和更高的疏散填充密度来提高模型的强度。" +#~ 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 "" +#~ "提高强度\n" +#~ "你知道吗?你可以使用更多的墙层数和更高的疏散填充密度来提高模型的强度。" + +#~ 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 "" +#~ "如果开启,Studio会沿着内部桥接的边沿在其下方生成支撑轮廓。这些支撑轮廓可以" +#~ "防止悬空地打印内部桥接并提高顶面质量,特别是在填充密度较低的情况下。这个设" +#~ "置用于调整支撑轮廓的厚度,0表示关闭此特性。" #~ msgid "Bridge direction" #~ msgstr "桥接方向" @@ -9649,8 +9702,8 @@ msgstr "" #~ "中打印指定厚度的环形走线,为内部桥接提供更好的铆接。0值代表关闭该功能。" #~ msgid "" -#~ "If enabled, Studio will generate support loops under the contours of " -#~ "internal bridges.These support loops could prevent internal bridges from " +#~ "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, expecially " #~ "with a low infill density.This value determins the thickness of the " #~ "support loops." @@ -12216,24 +12269,12 @@ msgstr "" #~ msgid "Bridges" #~ msgstr "桥接" -#~ msgid "Sparse infill anchor length" -#~ msgstr "稀疏填充锚线长度" - -#~ msgid "0 (no open anchors)" -#~ msgstr "0 (无锚线)" - #~ msgid "5 mm" #~ msgstr "5 mm" #~ msgid "10 mm" #~ msgstr "10 mm" -#~ msgid "1000 (unlimited)" -#~ msgstr "1000(无限制)" - -#~ msgid "Maximum length of the infill anchor" -#~ msgstr "填充锚线的最大长度" - #~ msgid "0 (not anchored)" #~ msgstr "0(无)" diff --git a/cmake/modules/MacOSXBundleInfo.plist.in b/cmake/modules/MacOSXBundleInfo.plist.in index 5e61a9e94c..40c8e7c3a0 100644 --- a/cmake/modules/MacOSXBundleInfo.plist.in +++ b/cmake/modules/MacOSXBundleInfo.plist.in @@ -118,5 +118,13 @@ NSHumanReadableCopyright ${MACOSX_BUNDLE_COPYRIGHT} + NSAppTransportSecurity + + + NSAllowsArbitraryLoads + + NSAllowsArbitraryLoadsInWebContent + + diff --git a/deps/OCCT/OCCT.cmake b/deps/OCCT/OCCT.cmake index 2943a3cbbd..6a15292ece 100644 --- a/deps/OCCT/OCCT.cmake +++ b/deps/OCCT/OCCT.cmake @@ -8,7 +8,7 @@ bambustudio_add_cmake_project(OCCT URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip URL_HASH SHA256=28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc #PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch - PATCH_COMMAND git apply --directory deps/build/dep_OCCT-prefix/src/dep_OCCT --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch + PATCH_COMMAND git apply --directory ${CMAKE_BINARY_DIR}/dep_OCCT-prefix/src/dep_OCCT --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch #DEPENDS dep_Boost #DEPENDS dep_FREETYPE CMAKE_ARGS diff --git a/deps/OpenEXR/0001-OpenEXR-GCC13.patch b/deps/OpenEXR/0001-OpenEXR-GCC13.patch new file mode 100644 index 0000000000..bf7d6ae82b --- /dev/null +++ b/deps/OpenEXR/0001-OpenEXR-GCC13.patch @@ -0,0 +1,31 @@ +--- a/OpenEXR/IlmImf/ImfDwaCompressor.cpp ++++ b/OpenEXR/IlmImf/ImfDwaCompressor.cpp +@@ -159,6 +159,7 @@ + #include + + #include ++#include + + + // Windows specific addition to prevent the indirect import of the redefined min/max macros +--- a/OpenEXR/IlmImf/ImfHuf.h ++++ b/OpenEXR/IlmImf/ImfHuf.h +@@ -40,6 +40,8 @@ + #include "ImfExport.h" + #include "ImfNamespace.h" + ++#include ++ + //----------------------------------------------------------------------------- + // + // 16-bit Huffman compression and decompression: +--- a/OpenEXR/IlmImf/ImfMisc.h ++++ b/OpenEXR/IlmImf/ImfMisc.h +@@ -51,6 +51,7 @@ + #include "ImfForward.h" + + #include ++#include + #include + + diff --git a/deps/OpenEXR/OpenEXR.cmake b/deps/OpenEXR/OpenEXR.cmake index 5ffdd1c964..74d6de3272 100644 --- a/deps/OpenEXR/OpenEXR.cmake +++ b/deps/OpenEXR/OpenEXR.cmake @@ -33,12 +33,13 @@ bambustudio_add_cmake_project(OpenEXR # GIT_REPOSITORY https://github.com/openexr/openexr.git URL https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v2.5.5.zip URL_HASH SHA256=0307a3d7e1fa1e77e9d84d7e9a8694583fbbbfd50bdc6884e2c96b8ef6b902de + PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OpenEXR-GCC13.patch DEPENDS ${ZLIB_PKG} GIT_TAG v2.5.5 CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON - -DBUILD_TESTING=OFF - -DPYILMBASE_ENABLE:BOOL=OFF + -DBUILD_TESTING=OFF + -DPYILMBASE_ENABLE:BOOL=OFF -DOPENEXR_VIEWERS_ENABLE:BOOL=OFF -DOPENEXR_BUILD_UTILS:BOOL=OFF ) diff --git a/deps/TBB/0001-TBB-GCC13.patch b/deps/TBB/0001-TBB-GCC13.patch new file mode 100644 index 0000000000..047daa4497 --- /dev/null +++ b/deps/TBB/0001-TBB-GCC13.patch @@ -0,0 +1,11 @@ +--- a/include/tbb/task.h ++++ b/include/tbb/task.h +@@ -219,7 +219,7 @@ + #if __TBB_TASK_PRIORITY + //! Pointer to the next offloaded lower priority task. + /** Used to maintain a list of offloaded tasks inside the scheduler. **/ +- task* next_offloaded; ++ tbb::task* next_offloaded; + }; + #endif /* __TBB_TASK_PRIORITY */ + diff --git a/deps/TBB/TBB.cmake b/deps/TBB/TBB.cmake index 9891fca41a..304b3ffb1b 100644 --- a/deps/TBB/TBB.cmake +++ b/deps/TBB/TBB.cmake @@ -2,7 +2,8 @@ bambustudio_add_cmake_project( TBB URL "https://github.com/wjakob/tbb/archive/a0dc9bf76d0120f917b641ed095360448cabc85b.tar.gz" URL_HASH SHA256=0545cb6033bd1873fcae3ea304def720a380a88292726943ae3b9b207f322efe - CMAKE_ARGS + PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-TBB-GCC13.patch + CMAKE_ARGS -DTBB_BUILD_SHARED=OFF -DTBB_BUILD_TESTS=OFF -DTBB_BUILD_TESTS=OFF diff --git a/doc/Calibration.md b/doc/Calibration.md index 4b865ccbe8..eeb699e0bf 100644 --- a/doc/Calibration.md +++ b/doc/Calibration.md @@ -6,8 +6,8 @@ - [Temp tower](#Temp-tower) - [Retraction test](#Retraction-test) - [Orca Tolerance Test](#Orca-Tolerance-Test) -- [Advanced calibration] - 1. [Max Volumetric speed] +- [Advanced calibration](#Advanced-Calibration) + 1. [Max Volumetric speed](#Max-Volumetric-speed) 2. [VFA] **NOTE**: After completing the calibration process, remember to create a new project in order to exit the calibration mode. @@ -106,6 +106,27 @@ You can assess the tolerance using either an M6 Allen key or the printed hexagon ![image](./images/OrcaToleranceTes_m6.jpg) ![image](./images/OrcaToleranceTest_print.jpg) +# Advanced Calibration + +## Max Volumetric speed +This is a test designed to calibrate the maximum volumetric speed of the specific filament. The generic or 3rd party filament types may not have the correct volumetric flow rate set in the filament. This test will help you to find the maximum volumetric speed of the filament. + +You will be promted to enter the settings for the test: start volumetric speed, end volumentric speed, and step. It is recommended to use the default values (5mm³/s start, 20mm³/s end, with a step of 0.5), unless you already have an idea of the lower or upper limit for your filament. Select "OK", slice the plate, and send it to the printer. + +Once printed, take note of where the layers begin to fail and where the quality begins to suffer. Pay attention to changes from matte to shiny as well. + +![image](./images/vmf_measurement_point.jpg) + +Using calipers or a ruler, measure the height of the print at that point. Use the following calculation to determine the correct max flow value: `start + (height-measured * step)` . For example in the photo below, and using the default setting values, the print quality began to suffer at 19mm measured, so the calculation would be: `5 + (19 * 0.5)` , or `13mm³/s` using the default values. Enter your number into the "Max volumetric speed" value in the filament settings. + +![image](./images/caliper_sample_mvf.jpg) + +You can also return to OrcaSlicer in the "Preview" tab, make sure the color scheme "flow" is selected. Scroll down to the layer height that you measured, and click on the toolhead slider. This will indicate the max flow level for your filmanet. + +![image](./images/max_volumetric_flow.jpg) + + #### *NOTE You may also choose to conservatively reduce the flow by 5-10% to ensure print quality.* + *** *Credits:* - *The Flowrate test and retraction test is inspired by [SuperSlicer](https://github.com/supermerill/SuperSlicer)* diff --git a/doc/images/caliper_sample_mvf.jpg b/doc/images/caliper_sample_mvf.jpg new file mode 100644 index 0000000000..718a124077 Binary files /dev/null and b/doc/images/caliper_sample_mvf.jpg differ diff --git a/doc/images/max_volumetric_flow.jpg b/doc/images/max_volumetric_flow.jpg new file mode 100644 index 0000000000..54d850cd95 Binary files /dev/null and b/doc/images/max_volumetric_flow.jpg differ diff --git a/doc/images/vmf_measurement_point.jpg b/doc/images/vmf_measurement_point.jpg new file mode 100644 index 0000000000..c9af518e54 Binary files /dev/null and b/doc/images/vmf_measurement_point.jpg differ diff --git a/resources/i18n/cs/OrcaSlicer.mo b/resources/i18n/cs/OrcaSlicer.mo index c22d3ac6b6..475e3029b5 100644 Binary files a/resources/i18n/cs/OrcaSlicer.mo and b/resources/i18n/cs/OrcaSlicer.mo differ diff --git a/resources/i18n/de/OrcaSlicer.mo b/resources/i18n/de/OrcaSlicer.mo index 3f20a8c5ff..aabe1a8780 100644 Binary files a/resources/i18n/de/OrcaSlicer.mo and b/resources/i18n/de/OrcaSlicer.mo differ diff --git a/resources/i18n/es/OrcaSlicer.mo b/resources/i18n/es/OrcaSlicer.mo index 1bb8e90306..c78460c573 100644 Binary files a/resources/i18n/es/OrcaSlicer.mo and b/resources/i18n/es/OrcaSlicer.mo differ diff --git a/resources/i18n/fr/OrcaSlicer.mo b/resources/i18n/fr/OrcaSlicer.mo index 5e7512bf7d..fac5c113ab 100644 Binary files a/resources/i18n/fr/OrcaSlicer.mo and b/resources/i18n/fr/OrcaSlicer.mo differ diff --git a/resources/i18n/ja/OrcaSlicer.mo b/resources/i18n/ja/OrcaSlicer.mo index e6f112de09..0a7a1b2a62 100644 Binary files a/resources/i18n/ja/OrcaSlicer.mo and b/resources/i18n/ja/OrcaSlicer.mo differ diff --git a/resources/i18n/ru/OrcaSlicer.mo b/resources/i18n/ru/OrcaSlicer.mo new file mode 100644 index 0000000000..650cb3f448 Binary files /dev/null and b/resources/i18n/ru/OrcaSlicer.mo differ diff --git a/resources/i18n/zh_cn/OrcaSlicer.mo b/resources/i18n/zh_cn/OrcaSlicer.mo index bb7010b2dc..809985a652 100644 Binary files a/resources/i18n/zh_cn/OrcaSlicer.mo and b/resources/i18n/zh_cn/OrcaSlicer.mo differ diff --git a/resources/images/OrcaSlicer_32px.png b/resources/images/OrcaSlicer_32px.png new file mode 100644 index 0000000000..424fd4f63a Binary files /dev/null and b/resources/images/OrcaSlicer_32px.png differ diff --git a/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json b/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json index c50debc45d..c8035f28e5 100644 --- a/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json +++ b/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "60", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json index 1ced316a58..d94a11efe6 100644 --- a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json +++ b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json index a4e98cb812..765c5cf427 100644 --- a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json +++ b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json index 9f1b4e5bd1..08a9832adf 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "60", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json index f15a3c56ff..569cf6a84d 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json index 4b58b1f744..07c8c46ddd 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json index 52f3502268..889e1ff25e 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json b/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json index 90ae0bb24d..86971d70a4 100644 --- a/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json +++ b/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json b/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json index 65d73a88c8..250c65c3cd 100644 --- a/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json +++ b/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json b/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json index 07442b3821..317ebc8fb0 100644 --- a/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json +++ b/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "60", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index fbfbf38e0b..017470de67 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -868,6 +868,38 @@ { "name": "Bambu PET-CF @BBL P1P", "sub_path": "filament/P1P/Bambu PET-CF @BBL P1P.json" + }, + { + "name":"Bambu Support For PLA @base", + "sub_path":"filament/Bambu Support For PLA @base.json" + }, + { + "name":"Bambu Support For PLA @BBL X1C 0.2 nozzle", + "sub_path":"filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json" + }, + { + "name":"Bambu Support For PLA @BBL X1C", + "sub_path":"filament/Bambu Support For PLA @BBL X1C.json" + }, + { + "name":"Bambu Support For PLA @BBL P1P 0.2 nozzle", + "sub_path":"filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json" + }, + { + "name":"Bambu Support For PLA @BBL P1P", + "sub_path":"filament/P1P/Bambu Support For PLA @BBL P1P.json" + }, + { + "name":"Bambu Support For PA/PET @base", + "sub_path":"filament/Bambu Support For PA PET @base.json" + }, + { + "name":"Bambu Support For PA/PET @BBL P1P", + "sub_path":"filament/P1P/Bambu Support For PA PET @BBL P1P.json" + }, + { + "name":"Bambu Support For PA/PET @BBL X1C", + "sub_path":"filament/Bambu Support For PA PET @BBL X1C.json" } ], "machine_list": [ 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 new file mode 100644 index 0000000000..bbf5d836ac --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PA PET @BBL X1C.json @@ -0,0 +1,16 @@ +{ + "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", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" + ] +} 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 new file mode 100644 index 0000000000..5ba24bd8d3 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "filament_id": "GFS03", + "name": "Bambu Support For PA/PET @base", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_pa", + "required_nozzle_HRC": [ + "3" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "filament_density": [ + "1.22" + ], + "filament_is_support": [ + "1" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature": [ + "280" + ], + "fan_cooling_layer_time": [ + "10" + ], + "filament_cost": [ + "34.99" + ], + "slow_down_layer_time":[ + "6" + ] +} 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 new file mode 100644 index 0000000000..7903c25650 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json @@ -0,0 +1,21 @@ +{ + "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", + "filament_max_volumetric_speed": [ + "0.5" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature": [ + "240" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle", + "Bambu Lab X1 0.2 nozzle" + ] +} \ 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 new file mode 100644 index 0000000000..61cf0a8ab6 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "setting_id": "GFSS02_02", + "name": "Bambu Support For PLA @BBL X1C", + "from": "system", + "instantiation": "true", + "inherits": "Bambu Support For PLA @base", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" + ] +} diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @base.json b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json new file mode 100644 index 0000000000..5a49fef271 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json @@ -0,0 +1,29 @@ +{ + "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" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "filament_cost": [ + "69.98" + ], + "slow_down_layer_time": [ + "8" + ] +} 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 new file mode 100644 index 0000000000..e59d77e2dc --- /dev/null +++ b/resources/profiles/BBL/filament/P1P/Bambu Support For PA PET @BBL P1P.json @@ -0,0 +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", + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle" + ] +} 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 new file mode 100644 index 0000000000..0b73e5f494 --- /dev/null +++ b/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json @@ -0,0 +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", + "filament_max_volumetric_speed": [ + "0.5" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature": [ + "240" + ], + "hot_plate_temp" : [ + "65" + ], + "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" + ], + "compatible_printers": [ + "Bambu Lab P1P 0.2 nozzle" + ] +} \ 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 new file mode 100644 index 0000000000..19ebe7afc1 --- /dev/null +++ b/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P.json @@ -0,0 +1,31 @@ +{ + "type": "filament", + "setting_id": "GFSS02_12", + "name": "Bambu Support For PLA @BBL P1P", + "from": "system", + "instantiation": "true", + "inherits": "Bambu Support For PLA @base", + "hot_plate_temp" : [ + "65" + ], + "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" + ], + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle" + ] +} 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 380f00d7f5..07c26c7236 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 @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "5" ], - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230323 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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", + "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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", "upward_compatible_machine":[ "Bambu Lab X1 0.2 nozzle", "Bambu Lab X1 Carbon 0.2 nozzle" 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 be49085835..b90157cf3f 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 @@ -23,7 +23,7 @@ "0x28" ], "extruder_clearance_max_radius": "56", - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230323 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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", "scan_first_layer": "0", "machine_load_filament_time": "29", "machine_unload_filament_time": "28", 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 d5e2180d11..5c55f9e45b 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 @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "3" ], - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230323 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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", + "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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", "nozzle_type": "hardened_steel", "nozzle_hrc": "55", "upward_compatible_machine":[ 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 cb10e3e27a..92867bd3cf 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 @@ -29,7 +29,7 @@ "retract_length_toolchange": [ "3" ], - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230323 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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", + "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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", "nozzle_type": "hardened_steel", "nozzle_hrc": "55", "upward_compatible_machine":[ 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 d727b43d07..5f9ff32645 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 @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "5" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018\n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061\n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659\n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769\n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256\n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018\n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061\n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659\n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769\n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256\n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", "nozzle_type": "stainless_steel", "upward_compatible_machine":[ "Bambu Lab P1P 0.2 nozzle", 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 e77c8c8566..d504610c0f 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 @@ -26,7 +26,7 @@ "20", "20" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \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 Y22.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 Y16.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 Y16.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_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \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 Y22.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 Y16.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 Y16.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", "scan_first_layer": "1", "machine_load_filament_time": "29", "machine_unload_filament_time": "28", 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 bfc3bfa467..3aaebcd2c2 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 @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "3" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.679\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.032\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.679\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.164\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.944\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.428\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.725\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.329\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.725\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.362\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.910\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.186\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.384\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.318\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.461\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.318\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.679\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.032\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.679\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.164\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.944\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.428\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.725\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.329\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.725\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.362\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.910\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.186\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.384\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.318\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.461\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.318\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", "nozzle_type": "hardened_steel", "nozzle_hrc": "55", "upward_compatible_machine":[ 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 b11a5b9313..1c4225d3ee 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 @@ -29,7 +29,7 @@ "retract_length_toolchange": [ "3" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.8660\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.0360\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.8660\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.1820\n G1 F1200.0 X31.000 Y49.000 Z0.200 E2.1600\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.4760\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.8060\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.3660\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.8060\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.4020\n G1 F1200.0 X48.000 Y20.000 Z0.200 E2.1220\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.3180\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.5380\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.4640\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.5120\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.4640\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.8660\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.0360\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.8660\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.1820\n G1 F1200.0 X31.000 Y49.000 Z0.200 E2.1600\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.4760\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.8060\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.3660\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.8060\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.4020\n G1 F1200.0 X48.000 Y20.000 Z0.200 E2.1220\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.3180\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.5380\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.4640\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.5120\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.4640\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", "nozzle_type": "hardened_steel", "nozzle_hrc": "55", "upward_compatible_machine":[ 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 fd99ccab49..f34ba14f2e 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 @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "5" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018\n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061\n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659\n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769\n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256\n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018\n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061\n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659\n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769\n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256\n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", "nozzle_type": "stainless_steel", "nozzle_hrc": "20", "upward_compatible_machine":[ 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 0b079aca78..58a0464c3e 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 @@ -26,7 +26,7 @@ "20", "20" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \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 Y22.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 Y16.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 Y16.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_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \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 Y22.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 Y16.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 Y16.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", "scan_first_layer": "1", "machine_load_filament_time": "29", "machine_unload_filament_time": "28", 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 53ebc5f479..ac7a701175 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 @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "3" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.679\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.032\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.679\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.164\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.944\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.428\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.725\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.329\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.725\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.362\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.910\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.186\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.384\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.318\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.461\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.318\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.679\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.032\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.679\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.164\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.944\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.428\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.725\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.329\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.725\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.362\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.910\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.186\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.384\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.318\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.461\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.318\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", "upward_compatible_machine":[ "Bambu Lab P1P 0.6 nozzle", "Bambu Lab X1 0.6 nozzle" 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 1da5d4cb6e..428c360f8a 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 @@ -29,7 +29,7 @@ "retract_length_toolchange": [ "3" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.8660\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.0360\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.8660\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.1820\n G1 F1200.0 X31.000 Y49.000 Z0.200 E2.1600\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.4760\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.8060\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.3660\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.8060\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.4020\n G1 F1200.0 X48.000 Y20.000 Z0.200 E2.1220\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.3180\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.5380\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.4640\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.5120\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.4640\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\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\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\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\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 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\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 G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.8660\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.0360\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.8660\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.1820\n G1 F1200.0 X31.000 Y49.000 Z0.200 E2.1600\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.4760\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.8060\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.3660\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.8060\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.4020\n G1 F1200.0 X48.000 Y20.000 Z0.200 E2.1220\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.3180\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.5380\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.4640\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.5120\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.4640\n G1 F1500.000 E-0.800\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 Y18.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 Y20.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 Y18.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 Y22.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 Y18.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 Y24.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 Y18.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\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 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\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 Y22.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 Y16.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 Y16.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", "upward_compatible_machine":[ "Bambu Lab P1P 0.8 nozzle", "Bambu Lab X1 0.8 nozzle" diff --git a/resources/profiles/BIQU.json b/resources/profiles/BIQU.json index 2ea29332d4..864a31c2a4 100644 --- a/resources/profiles/BIQU.json +++ b/resources/profiles/BIQU.json @@ -1,6 +1,6 @@ { "name": "BIQU", - "version": "01.00.01.00", + "version": "01.01.00.00", "force_update": "0", "description": "BIQU configurations", "machine_model_list": [ @@ -31,52 +31,52 @@ "sub_path": "process/fdm_process_hurakan_common.json" }, { - "name": "0.12mm Fine @BX", - "sub_path": "process/0.12mm Fine @BIQU BX.json" + "name": "0.12mm Fine @BIQU BX (0.4 nozzle)", + "sub_path": "process/0.12mm Fine @BIQU BX (0.4 nozzle).json" }, { - "name": "0.15mm Optimal @BX", - "sub_path": "process/0.15mm Optimal @BIQU BX.json" + "name": "0.15mm Optimal @BIQU BX (0.4 nozzle)", + "sub_path": "process/0.15mm Optimal @BIQU BX (0.4 nozzle).json" }, { - "name": "0.20mm Standard @BX", - "sub_path": "process/0.20mm Standard @BIQU BX.json" + "name": "0.20mm Standard @BIQU BX (0.4 nozzle)", + "sub_path": "process/0.20mm Standard @BIQU BX (0.4 nozzle).json" }, { - "name": "0.24mm Draft @BX", - "sub_path": "process/0.24mm Draft @BIQU BX.json" + "name": "0.24mm Draft @BIQU BX (0.4 nozzle)", + "sub_path": "process/0.24mm Draft @BIQU BX (0.4 nozzle).json" }, { - "name": "0.12mm Fine @B1", - "sub_path": "process/0.12mm Fine @BIQU B1.json" + "name": "0.12mm Fine @BIQU B1 (0.4 nozzle)", + "sub_path": "process/0.12mm Fine @BIQU B1 (0.4 nozzle).json" }, { - "name": "0.15mm Optimal @B1", - "sub_path": "process/0.15mm Optimal @BIQU B1.json" + "name": "0.15mm Optimal @BIQU B1 (0.4 nozzle)", + "sub_path": "process/0.15mm Optimal @BIQU B1 (0.4 nozzle).json" }, { - "name": "0.20mm Standard @B1", - "sub_path": "process/0.20mm Standard @BIQU B1.json" + "name": "0.20mm Standard @BIQU B1 (0.4 nozzle)", + "sub_path": "process/0.20mm Standard @BIQU B1 (0.4 nozzle).json" }, { - "name": "0.24mm Draft @B1", - "sub_path": "process/0.24mm Draft @BIQU B1.json" + "name": "0.24mm Draft @BIQU B1 (0.4 nozzle)", + "sub_path": "process/0.24mm Draft @BIQU B1 (0.4 nozzle).json" }, { - "name": "0.12mm Fine @Hurakan", - "sub_path": "process/0.12mm Fine @BIQU Hurakan.json" + "name": "0.12mm Fine @BIQU Hurakan (0.4 nozzle)", + "sub_path": "process/0.12mm Fine @BIQU Hurakan (0.4 nozzle).json" }, { - "name": "0.15mm Optimal @Hurakan", - "sub_path": "process/0.15mm Optimal @BIQU Hurakan.json" + "name": "0.15mm Optimal @BIQU Hurakan (0.4 nozzle)", + "sub_path": "process/0.15mm Optimal @BIQU Hurakan (0.4 nozzle).json" }, { - "name": "0.20mm Standard @Hurakan", - "sub_path": "process/0.20mm Standard @BIQU Hurakan.json" + "name": "0.20mm Standard @BIQU Hurakan (0.4 nozzle)", + "sub_path": "process/0.20mm Standard @BIQU Hurakan (0.4 nozzle).json" }, { - "name": "0.24mm Draft @Hurakan", - "sub_path": "process/0.24mm Draft @BIQU Hurakan.json" + "name": "0.24mm Draft @BIQU Hurakan (0.4 nozzle)", + "sub_path": "process/0.24mm Draft @BIQU Hurakan (0.4 nozzle).json" } ], "filament_list": [ @@ -179,16 +179,16 @@ "sub_path": "machine/fdm_klipper_common.json" }, { - "name": "BIQU BX 0.4 nozzle", - "sub_path": "machine/BIQU BX 0.4 nozzle.json" + "name": "BIQU BX (0.4 nozzle)", + "sub_path": "machine/BIQU BX (0.4 nozzle).json" }, { - "name": "BIQU B1 0.4 nozzle", - "sub_path": "machine/BIQU B1 0.4 nozzle.json" + "name": "BIQU B1 (0.4 nozzle)", + "sub_path": "machine/BIQU B1 (0.4 nozzle).json" }, { - "name": "BIQU Hurakan 0.4 nozzle", - "sub_path": "machine/BIQU Hurakan 0.4 nozzle.json" + "name": "BIQU Hurakan (0.4 nozzle)", + "sub_path": "machine/BIQU Hurakan (0.4 nozzle).json" } ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic ABS.json b/resources/profiles/BIQU/filament/BIQU Generic ABS.json index 8e3273c097..9db0d1dcdb 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic ABS.json +++ b/resources/profiles/BIQU/filament/BIQU Generic ABS.json @@ -13,8 +13,8 @@ "12" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic ASA.json b/resources/profiles/BIQU/filament/BIQU Generic ASA.json index 68fff18155..b0281bf899 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic ASA.json +++ b/resources/profiles/BIQU/filament/BIQU Generic ASA.json @@ -13,8 +13,8 @@ "0.926" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PA-CF.json b/resources/profiles/BIQU/filament/BIQU Generic PA-CF.json index 98eff9d182..55344dfae0 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PA-CF.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PA-CF.json @@ -37,8 +37,8 @@ "2" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PA.json b/resources/profiles/BIQU/filament/BIQU Generic PA.json index 2acf172d8c..6b8db4e32e 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PA.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PA.json @@ -19,8 +19,8 @@ "16" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PC.json b/resources/profiles/BIQU/filament/BIQU Generic PC.json index 370dc31378..e70c31a11a 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PC.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PC.json @@ -13,8 +13,8 @@ "0.94" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PETG-CF.json b/resources/profiles/BIQU/filament/BIQU Generic PETG-CF.json index a6b08bdea7..0d72df1e96 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PETG-CF.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PETG-CF.json @@ -82,8 +82,8 @@ "20" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PETG.json b/resources/profiles/BIQU/filament/BIQU Generic PETG.json index a30e7743a6..0a358a7580 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PETG.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PETG.json @@ -43,8 +43,8 @@ "; filament start gcode\n" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PLA Silk.json b/resources/profiles/BIQU/filament/BIQU Generic PLA Silk.json index 0bdf0090ee..9e4f780789 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PLA Silk.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PLA Silk.json @@ -14,6 +14,7 @@ ], "filament_flow_ratio": [ "0.98" + ], "slow_down_layer_time": [ "8" ], @@ -21,8 +22,8 @@ "; 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" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PLA-CF.json b/resources/profiles/BIQU/filament/BIQU Generic PLA-CF.json index 0335156d33..bb63cd0324 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PLA-CF.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PLA-CF.json @@ -37,8 +37,8 @@ "; 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}" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PLA.json b/resources/profiles/BIQU/filament/BIQU Generic PLA.json index d3616b441c..fd2c5ba4c7 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PLA.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PLA.json @@ -16,8 +16,8 @@ "8" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PVA.json b/resources/profiles/BIQU/filament/BIQU Generic PVA.json index 21e6f93526..2ce1334b7a 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PVA.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PVA.json @@ -19,8 +19,8 @@ "10" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } \ No newline at end of file diff --git a/resources/profiles/BIQU/filament/BIQU Generic TPU.json b/resources/profiles/BIQU/filament/BIQU Generic TPU.json index 3aa5017b12..a218690d45 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic TPU.json +++ b/resources/profiles/BIQU/filament/BIQU Generic TPU.json @@ -13,8 +13,8 @@ "; 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": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/machine/BIQU B1 (0.4 nozzle).json b/resources/profiles/BIQU/machine/BIQU B1 (0.4 nozzle).json new file mode 100644 index 0000000000..52653b3b8f --- /dev/null +++ b/resources/profiles/BIQU/machine/BIQU B1 (0.4 nozzle).json @@ -0,0 +1,86 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "BIQU B1 (0.4 nozzle)", + "from": "system", + "instantiation": "true", + "inherits": "fdm_biqu_common", + "printer_model": "BIQU B1", + "default_print_profile": "0.20mm Standard @BIQU B1 (0.4 nozzle)", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "235x0", + "235x235", + "0x235" + ], + "printable_height": "270", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "deretraction_speed": [ + "70" +], +"gcode_flavor": "marlin", +"machine_max_acceleration_e": [ + "10000" +], +"machine_max_acceleration_extruding": [ + "1000" +], +"machine_max_acceleration_retracting": [ + "1000" +], +"machine_max_acceleration_x": [ + "1000" +], +"machine_max_acceleration_y": [ + "1000" +], +"machine_max_acceleration_z": [ + "100" +], +"machine_max_speed_e": [ + "60" +], +"machine_max_speed_x": [ + "500" +], +"machine_max_speed_y": [ + "500" +], +"machine_max_speed_z": [ + "10" +], +"machine_max_jerk_e": [ + "5" +], +"machine_max_jerk_x": [ + "10" +], +"machine_max_jerk_y": [ + "10" +], +"machine_max_jerk_z": [ + "0.3" +], +"max_layer_height": [ + "0.32" +], +"min_layer_height": [ + "0.10" +], +"printer_variant": "0.4", +"retraction_minimum_travel": [ + "1.5" +], +"retraction_length": [ + "7" +], +"retraction_speed": [ + "70" +], +"machine_start_gcode": "; BIQU B1 Start G-code\nM117 Getting the bed up to temp!\nM140 S{material_bed_temperature_layer_0}; Set Heat Bed temperature\nM190 S{material_bed_temperature_layer_0}; Wait for Heat Bed temperature\nM117 Getting the extruder up to temp!\nM104 S{material_print_temperature_layer_0}; Set Extruder temperature\nG92 E0; Reset Extruder\nM117 Homing axes\nG28; Home all axes\nM109 S{material_print_temperature_layer_0}; Wait for Extruder temperature\nG1 Z2.0 F3000; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X4.1 Y20 Z0.3 F5000.0; Move to start position\nM117 Purging\nG1 X4.1 Y200.0 Z0.3 F1500.0 E15; Draw the first line\nG1 X4.4 Y200.0 Z0.3 F5000.0; Move to side a little\nG1 X4.4 Y20 Z0.3 F1500.0 E30; Draw the second line\nG92 E0; Reset Extruder\nM117 Lets make\nG1 Z2.0 F3000; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.3 F5000.0; Move over to prevent blob squish", +"machine_end_gcode": ";BIQU B1 Default End Gcode\nG91;Relative positioning\nG1 E-2 F2700;Retract a bit\nG1 E-2 Z0.2 F2400;Retract a bit more and raise Z\nG1 X5 Y5 F3000;Wipe out\nG1 Z10;Raise Z by 10mm\nG90;Return to absolute positioning\nG1 X0 Y{machine_depth};\nM106 S0;Turn-off fan\nM104 S0;Turn-off hotend\nM140 S0;Turn-off bed\nM84 X Y E;Disable all steppers but Z" +} \ No newline at end of file diff --git a/resources/profiles/BIQU/machine/BIQU B1 0.4 nozzle.json b/resources/profiles/BIQU/machine/BIQU B1 0.4 nozzle.json deleted file mode 100644 index 02089ee9fa..0000000000 --- a/resources/profiles/BIQU/machine/BIQU B1 0.4 nozzle.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM001", - "name": "BIQU B1 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_biqu_common", - "printer_model": "BIQU B1", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "235x0", - "235x235", - "0x235" - ], - "printable_height": "270", - "nozzle_type": "undefine", - "auxiliary_fan": "0", - "deretraction_speed": [ - "70" -], -"gcode_flavor": "marlin", -"machine_max_acceleration_e": [ - "10000" -], -"machine_max_acceleration_extruding": [ - "1000" -], -"machine_max_acceleration_retracting": [ - "1000" -], -"machine_max_acceleration_x": [ - "1000" -], -"machine_max_acceleration_y": [ - "1000" -], -"machine_max_acceleration_z": [ - "100" -], -"machine_max_speed_e": [ - "60" -], -"machine_max_speed_x": [ - "500" -], -"machine_max_speed_y": [ - "500" -], -"machine_max_speed_z": [ - "10" -], -"machine_max_jerk_e": [ - "5" -], -"machine_max_jerk_x": [ - "10" -], -"machine_max_jerk_y": [ - "10" -], -"machine_max_jerk_z": [ - "0.3" -], -"max_layer_height": [ - "0.32" -], -"min_layer_height": [ - "0.10" -], -"printer_variant": "0.4", -"retraction_minimum_travel": [ - "1.5" -], -"retraction_length": [ - "7" -], -"retraction_speed": [ - "70" -], -"default_print_profile": "0.15mm Optimal @BIQU B1", -"machine_start_gcode": "; BIQU B1 Start G-code\nM117 Getting the bed up to temp!\nM140 S{material_bed_temperature_layer_0} ; Set Heat Bed temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Heat Bed temperature\nM117 Getting the extruder up to temp!\nM104 S{material_print_temperature_layer_0} ; Set Extruder temperature\nG92 E0 ; Reset Extruder\nM117 Homing axes\nG28 ; Home all axes\nM109 S{material_print_temperature_layer_0} ; Wait for Extruder temperature\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X4.1 Y20 Z0.3 F5000.0 ; Move to start position\nM117 Purging\nG1 X4.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X4.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X4.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nM117 Lets make\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish", -"machine_end_gcode": ";BIQU B1 Default End Gcode\nG91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract a bit more and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z by 10mm\nG90 ;Return to absolute positioning\nG1 X0 Y{machine_depth} ;TaDaaaa\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM84 X Y E ;Disable all steppers but Z" -} \ No newline at end of file diff --git a/resources/profiles/BIQU/machine/BIQU B1.json b/resources/profiles/BIQU/machine/BIQU B1.json index 7aa6bb520a..c9cfe75c98 100644 --- a/resources/profiles/BIQU/machine/BIQU B1.json +++ b/resources/profiles/BIQU/machine/BIQU B1.json @@ -5,8 +5,8 @@ "nozzle_diameter": "0.4", "machine_tech": "FFF", "family": "BIQU", - "bed_model": "BIQU_B1_buildplate_model.stl", - "bed_texture": "BIQU_B1_buildplate_texture.png", - "hotend_model": "BIQU_B1_hotend.stl", - "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS;" + "bed_model": "biqu_b1_buildplate_model.stl", + "bed_texture": "biqu_b1_buildplate_texture.png", + "hotend_model": "biqu_b1_hotend.stl", + "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS" } diff --git a/resources/profiles/BIQU/machine/BIQU BX (0.4 nozzle).json b/resources/profiles/BIQU/machine/BIQU BX (0.4 nozzle).json new file mode 100644 index 0000000000..29250444d1 --- /dev/null +++ b/resources/profiles/BIQU/machine/BIQU BX (0.4 nozzle).json @@ -0,0 +1,86 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "BIQU BX (0.4 nozzle)", + "from": "system", + "instantiation": "true", + "inherits": "fdm_biqu_common", + "printer_model": "BIQU BX", + "default_print_profile": "0.20mm Standard @BIQU BX (0.4 nozzle)", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "250x0", + "250x250", + "0x250" + ], + "printable_height": "250", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "deretraction_speed": [ + "70" +], +"gcode_flavor": "marlin", +"machine_max_acceleration_e": [ + "10000" +], +"machine_max_acceleration_extruding": [ + "1000" +], +"machine_max_acceleration_retracting": [ + "1000" +], +"machine_max_acceleration_x": [ + "1000" +], +"machine_max_acceleration_y": [ + "1000" +], +"machine_max_acceleration_z": [ + "100" +], +"machine_max_speed_e": [ + "60" +], +"machine_max_speed_x": [ + "500" +], +"machine_max_speed_y": [ + "500" +], +"machine_max_speed_z": [ + "10" +], +"machine_max_jerk_e": [ + "5" +], +"machine_max_jerk_x": [ + "10" +], +"machine_max_jerk_y": [ + "10" +], +"machine_max_jerk_z": [ + "0.3" +], +"max_layer_height": [ + "0.32" +], +"min_layer_height": [ + "0.10" +], +"printer_variant": "0.4", +"retraction_minimum_travel": [ + "1.5" +], +"retraction_length": [ + "1" +], +"retraction_speed": [ + "40" +], +"machine_start_gcode": "; BIQU BX Start G-code\n;M117 Initial homing sequence; Home so that the probe is positioned to heat\nG28\nM117 Probe heating position\nG0 X65 Y5 Z1; Move the probe to the heating position.\nM117 Getting the heaters up to temp!\nM104 S140; Set Extruder temperature, no wait\nM140 S60; Set Heat Bed temperature\nM190 S60; Wait for Heat Bed temperature\nM117 Waiting for probe to warm; Wait another 90s for the probe to absorb heat.\nG4 S90\nM117 Post warming re-home\nG28; Home all axes again after warming\nM117 Z-Dance of my people\nG34\nM117 ABL Probing\nG29\nM900 K0 L0 T0;Edit the K and L values if you have calibrated a k factor for your filament\nM900 T0 S0\nG1 Z2.0 F3000; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X4.1 Y10 Z0.3 F5000.0; Move to start position\nM117 Getting the extruder up to temp\nM140 S{material_bed_temperature_layer_0}; Set Heat Bed temperature\nM104 S{material_print_temperature_layer_0}; Set Extruder temperature\nM109 S{material_print_temperature_layer_0}; Wait for Extruder temperature\nM190 S{material_bed_temperature_layer_0}; Wait for Heat Bed temperature\nG92 E0; Reset Extruder\nM117 Purging\nG1 X4.1 Y200.0 Z0.3 F1500.0 E15; Draw the first line\nG1 X4.4 Y200.0 Z0.3 F5000.0; Move to side a little\nG1 X4.4 Y20 Z0.3 F1500.0 E30; Draw the second line\nG92 E0; Reset Extruder\nM117 Lets make\nG1 X8 Y20 Z0.3 F5000.0; Move over to prevent blob squish", +"machine_end_gcode": "; BIQU BX Default End Gcode\nG91;Relative positioning\nG1 E-2 F2700;Retract a bit\nG1 E-2 Z0.2 F2400;Retract a bit more and raise Z\nG1 X5 Y5 F3000;Wipe out\nG1 Z10;Raise Z by 10mm\nG90;Return to absolute positioning\nG1 X0 Y{machine_depth};TaDaaaa\nM106 S0;Turn-off fan\nM104 S0;Turn-off hotend\nM140 S0;Turn-off bed\nM84 X Y E;Disable all steppers but Z" +} \ No newline at end of file diff --git a/resources/profiles/BIQU/machine/BIQU BX 0.4 nozzle.json b/resources/profiles/BIQU/machine/BIQU BX 0.4 nozzle.json deleted file mode 100644 index f2fa6833c7..0000000000 --- a/resources/profiles/BIQU/machine/BIQU BX 0.4 nozzle.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM001", - "name": "BIQU BX 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_biqu_common", - "printer_model": "BIQU BX", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "250x0", - "250x250", - "0x250" - ], - "printable_height": "250", - "nozzle_type": "undefine", - "auxiliary_fan": "0", - "deretraction_speed": [ - "70" -], -"gcode_flavor": "marlin", -"machine_max_acceleration_e": [ - "10000" -], -"machine_max_acceleration_extruding": [ - "1000" -], -"machine_max_acceleration_retracting": [ - "1000" -], -"machine_max_acceleration_x": [ - "1000" -], -"machine_max_acceleration_y": [ - "1000" -], -"machine_max_acceleration_z": [ - "100" -], -"machine_max_speed_e": [ - "60" -], -"machine_max_speed_x": [ - "500" -], -"machine_max_speed_y": [ - "500" -], -"machine_max_speed_z": [ - "10" -], -"machine_max_jerk_e": [ - "5" -], -"machine_max_jerk_x": [ - "10" -], -"machine_max_jerk_y": [ - "10" -], -"machine_max_jerk_z": [ - "0.3" -], -"max_layer_height": [ - "0.32" -], -"min_layer_height": [ - "0.10" -], -"printer_variant": "0.4", -"retraction_minimum_travel": [ - "1.5" -], -"retraction_length": [ - "1" -], -"retraction_speed": [ - "40" -], -"default_print_profile": "0.15mm Optimal @BIQU BX", -"machine_start_gcode": "; BIQU BX Start G-code\n; For the official github site visit: https://github.com/bigtreetech/BIQU-BX\nM117 Initial homing sequence. ; Home so that the probe is positioned to heat\nG28\nM117 Probe heating position\nG0 X65 Y5 Z1 ; Move the probe to the heating position.\nM117 Getting the heaters up to temp!\nM104 S140 ; Set Extruder temperature, no wait\nM140 S60 ; Set Heat Bed temperature\nM190 S60 ; Wait for Heat Bed temperature\nM117 Waiting for probe to warm! ; Wait another 90s for the probe to absorb heat.\nG4 S90\nM117 Post warming re-home\nG28 ; Home all axes again after warming\nM117 Z-Dance of my people\nG34\nM117 ABL Probing\nG29\nM900 K0 L0 T0 ;Edit the K and L values if you have calibrated a k factor for your filament\nM900 T0 S0\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X4.1 Y10 Z0.3 F5000.0 ; Move to start position\nM117 Getting the extruder up to temp\nM140 S{material_bed_temperature_layer_0} ; Set Heat Bed temperature\nM104 S{material_print_temperature_layer_0} ; Set Extruder temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Extruder temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Heat Bed temperature\nG92 E0 ; Reset Extruder\nM117 Purging\nG1 X4.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X4.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X4.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nM117 Lets make\nG1 X8 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish", -"machine_end_gcode": "; BIQU BX Default End Gcode\nG91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract a bit more and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z by 10mm\nG90 ;Return to absolute positioning\nG1 X0 Y{machine_depth} ;TaDaaaa\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM84 X Y E ;Disable all steppers but Z" -} \ No newline at end of file diff --git a/resources/profiles/BIQU/machine/BIQU BX.json b/resources/profiles/BIQU/machine/BIQU BX.json index cf8ed01417..e0d6e3d470 100644 --- a/resources/profiles/BIQU/machine/BIQU BX.json +++ b/resources/profiles/BIQU/machine/BIQU BX.json @@ -5,8 +5,8 @@ "nozzle_diameter": "0.4", "machine_tech": "FFF", "family": "BIQU", - "bed_model": "BIQU_BX_buildplate_model.stl", - "bed_texture": "BIQU_BX_buildplate_texture.png", - "hotend_model": "Biqu_BX_hotend.stl", - "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS;" + "bed_model": "biqu_bx_buildplate_model.stl", + "bed_texture": "biqu_bx_buildplate_texture.png", + "hotend_model": "biqu_bx_hotend.stl", + "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS" } diff --git a/resources/profiles/BIQU/machine/BIQU Hurakan 0.4 nozzle.json b/resources/profiles/BIQU/machine/BIQU Hurakan (0.4 nozzle).json similarity index 95% rename from resources/profiles/BIQU/machine/BIQU Hurakan 0.4 nozzle.json rename to resources/profiles/BIQU/machine/BIQU Hurakan (0.4 nozzle).json index 9b248fbd4b..85ffe772ce 100644 --- a/resources/profiles/BIQU/machine/BIQU Hurakan 0.4 nozzle.json +++ b/resources/profiles/BIQU/machine/BIQU Hurakan (0.4 nozzle).json @@ -1,11 +1,12 @@ { "type": "machine", "setting_id": "GM001", - "name": "BIQU Hurakan 0.4 nozzle", + "name": "BIQU Hurakan (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_klipper_common", "printer_model": "BIQU Hurakan", + "default_print_profile": "0.20mm Standard @BIQU Hurakan (0.4 nozzle)", "nozzle_diameter": [ "0.4" ], diff --git a/resources/profiles/BIQU/machine/BIQU Hurakan.json b/resources/profiles/BIQU/machine/BIQU Hurakan.json index 594dcc7bc4..ab3e2c804e 100644 --- a/resources/profiles/BIQU/machine/BIQU Hurakan.json +++ b/resources/profiles/BIQU/machine/BIQU Hurakan.json @@ -5,8 +5,8 @@ "nozzle_diameter": "0.4", "machine_tech": "FFF", "family": "BIQU", - "bed_model": "BIQU_Hurakan_buildplate_model.stl", - "bed_texture": "BIQU_Hurakan_buildplate_texture.png", - "hotend_model": "Biqu_Hurakan_hotend.stl", - "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS;" + "bed_model": "biqu_hurakan_buildplate_model.stl", + "bed_texture": "biqu_hurakan_buildplate_texture.png", + "hotend_model": "biqu_hurakan_hotend.stl", + "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS" } diff --git a/resources/profiles/BIQU/machine/fdm_biqu_common.json b/resources/profiles/BIQU/machine/fdm_biqu_common.json index ef8d68bb0c..5da04e99c1 100644 --- a/resources/profiles/BIQU/machine/fdm_biqu_common.json +++ b/resources/profiles/BIQU/machine/fdm_biqu_common.json @@ -124,9 +124,8 @@ "1" ], "default_filament_profile": [ - "Generic PLA @BIQU" + "BIQU Generic PLA" ], - "default_print_profile": "0.20mm Standard @BIQU", "bed_exclude_area": [ "0x0" ], diff --git a/resources/profiles/BIQU/machine/fdm_machine_common.json b/resources/profiles/BIQU/machine/fdm_machine_common.json index 8884d46f0c..a31cfc8144 100644 --- a/resources/profiles/BIQU/machine/fdm_machine_common.json +++ b/resources/profiles/BIQU/machine/fdm_machine_common.json @@ -111,7 +111,6 @@ "1" ], "z_lift_type": "NormalLift", - "default_print_profile": "0.16mm Optimal @Bambu Lab X1 Carbon 0.4 nozzle", "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" } diff --git a/resources/profiles/BIQU/process/0.12mm Fine @BIQU BX.json b/resources/profiles/BIQU/process/0.12mm Fine @BIQU B1 (0.4 nozzle).json similarity index 78% rename from resources/profiles/BIQU/process/0.12mm Fine @BIQU BX.json rename to resources/profiles/BIQU/process/0.12mm Fine @BIQU B1 (0.4 nozzle).json index 17791ae1fb..178300d7b0 100644 --- a/resources/profiles/BIQU/process/0.12mm Fine @BIQU BX.json +++ b/resources/profiles/BIQU/process/0.12mm Fine @BIQU B1 (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.12mm Fine @BIQU BX", + "name": "0.12mm Fine @BIQU B1 (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -9,6 +9,6 @@ "bottom_shell_layers": "5", "top_shell_layers": "6", "compatible_printers": [ - "BIQU BX 0.4 nozzle" + "BIQU B1 (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan.json b/resources/profiles/BIQU/process/0.12mm Fine @BIQU BX (0.4 nozzle).json similarity index 78% rename from resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan.json rename to resources/profiles/BIQU/process/0.12mm Fine @BIQU BX (0.4 nozzle).json index e42f64077d..eee743dabb 100644 --- a/resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan.json +++ b/resources/profiles/BIQU/process/0.12mm Fine @BIQU BX (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.12mm Fine @BIQU Hurakan", + "name": "0.12mm Fine @BIQU BX (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -9,6 +9,6 @@ "bottom_shell_layers": "5", "top_shell_layers": "6", "compatible_printers": [ - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.12mm Fine @BIQU B1.json b/resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan (0.4 nozzle).json similarity index 75% rename from resources/profiles/BIQU/process/0.12mm Fine @BIQU B1.json rename to resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan (0.4 nozzle).json index 5d3cac461f..ed3e38fd51 100644 --- a/resources/profiles/BIQU/process/0.12mm Fine @BIQU B1.json +++ b/resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.12mm Fine @BIQU B1", + "name": "0.12mm Fine @BIQU Hurakan (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -9,6 +9,6 @@ "bottom_shell_layers": "5", "top_shell_layers": "6", "compatible_printers": [ - "BIQU B1 0.4 nozzle" + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX.json b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1 (0.4 nozzle).json similarity index 77% rename from resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX.json rename to resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1 (0.4 nozzle).json index 78b16fbf69..467cd93327 100644 --- a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX.json +++ b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1 (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.15mm Optimal @BIQU BX", + "name": "0.15mm Optimal @BIQU B1 (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -9,6 +9,6 @@ "top_shell_layers": "5", "layer_height": "0.15", "compatible_printers": [ - "BIQU BX 0.4 nozzle" + "BIQU B1 (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1.json b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX (0.4 nozzle).json similarity index 77% rename from resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1.json rename to resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX (0.4 nozzle).json index 7c11ac4f5b..3333991bc8 100644 --- a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1.json +++ b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.15mm Optimal @BIQU B1", + "name": "0.15mm Optimal @BIQU BX (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -9,6 +9,6 @@ "top_shell_layers": "5", "layer_height": "0.15", "compatible_printers": [ - "BIQU B1 0.4 nozzle" + "BIQU BX (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan.json b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan (0.4 nozzle).json similarity index 73% rename from resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan.json rename to resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan (0.4 nozzle).json index 3a3d3a5f60..4ad9fde878 100644 --- a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan.json +++ b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.15mm Optimal @BIQU Hurakan", + "name": "0.15mm Optimal @BIQU Hurakan (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_hurakan_common", @@ -9,6 +9,6 @@ "top_shell_layers": "5", "layer_height": "0.15", "compatible_printers": [ - "BIQU Hurakan 0.4 nozzle" - ] + "BIQU Hurakan (0.4 nozzle)" + ] } diff --git a/resources/profiles/BIQU/process/0.20mm Standard @BIQU B1.json b/resources/profiles/BIQU/process/0.20mm Standard @BIQU B1 (0.4 nozzle).json similarity index 77% rename from resources/profiles/BIQU/process/0.20mm Standard @BIQU B1.json rename to resources/profiles/BIQU/process/0.20mm Standard @BIQU B1 (0.4 nozzle).json index 9901991aec..c541cacaa3 100644 --- a/resources/profiles/BIQU/process/0.20mm Standard @BIQU B1.json +++ b/resources/profiles/BIQU/process/0.20mm Standard @BIQU B1 (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm Standard @BIQU B1", + "name": "0.20mm Standard @BIQU B1 (0.4 nozzle)", "from": "system", "inherits": "fdm_process_biqu_common", "instantiation": "true", @@ -9,6 +9,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU B1 0.4 nozzle" + "BIQU B1 (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.20mm Standard @BIQU BX.json b/resources/profiles/BIQU/process/0.20mm Standard @BIQU BX (0.4 nozzle).json similarity index 77% rename from resources/profiles/BIQU/process/0.20mm Standard @BIQU BX.json rename to resources/profiles/BIQU/process/0.20mm Standard @BIQU BX (0.4 nozzle).json index 59f1cc13a2..a7e03f2d2b 100644 --- a/resources/profiles/BIQU/process/0.20mm Standard @BIQU BX.json +++ b/resources/profiles/BIQU/process/0.20mm Standard @BIQU BX (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm Standard @BIQU BX", + "name": "0.20mm Standard @BIQU BX (0.4 nozzle)", "from": "system", "inherits": "fdm_process_biqu_common", "instantiation": "true", @@ -9,6 +9,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU BX 0.4 nozzle" + "BIQU BX (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan.json b/resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan (0.4 nozzle).json similarity index 75% rename from resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan.json rename to resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan (0.4 nozzle).json index 8db0ed210c..36d1224e79 100644 --- a/resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan.json +++ b/resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm Standard @BIQU Hurakan", + "name": "0.20mm Standard @BIQU Hurakan (0.4 nozzle)", "from": "system", "inherits": "fdm_process_hurakan_common", "instantiation": "true", @@ -9,6 +9,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU Hurakan 0.4 nozzle" + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.24mm Draft @BIQU BX.json b/resources/profiles/BIQU/process/0.24mm Draft @BIQU B1 (0.4 nozzle).json similarity index 80% rename from resources/profiles/BIQU/process/0.24mm Draft @BIQU BX.json rename to resources/profiles/BIQU/process/0.24mm Draft @BIQU B1 (0.4 nozzle).json index 8e5ae7a45b..7939b37b88 100644 --- a/resources/profiles/BIQU/process/0.24mm Draft @BIQU BX.json +++ b/resources/profiles/BIQU/process/0.24mm Draft @BIQU B1 (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.24mm Draft @BIQU BX", + "name": "0.24mm Draft @BIQU B1 (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -10,6 +10,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU BX 0.4 nozzle" + "BIQU B1 (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.24mm Draft @BIQU B1.json b/resources/profiles/BIQU/process/0.24mm Draft @BIQU BX (0.4 nozzle).json similarity index 80% rename from resources/profiles/BIQU/process/0.24mm Draft @BIQU B1.json rename to resources/profiles/BIQU/process/0.24mm Draft @BIQU BX (0.4 nozzle).json index e746011e5a..1241d93357 100644 --- a/resources/profiles/BIQU/process/0.24mm Draft @BIQU B1.json +++ b/resources/profiles/BIQU/process/0.24mm Draft @BIQU BX (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.24mm Draft @BIQU B1", + "name": "0.24mm Draft @BIQU BX (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -10,6 +10,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU B1 0.4 nozzle" + "BIQU BX (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan.json b/resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan (0.4 nozzle).json similarity index 78% rename from resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan.json rename to resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan (0.4 nozzle).json index 17504bbd72..e9ac5c635a 100644 --- a/resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan.json +++ b/resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.24mm Draft @BIQU Hurakan", + "name": "0.24mm Draft @BIQU Hurakan (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_hurakan_common", @@ -10,6 +10,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU Hurakan 0.4 nozzle" + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/fdm_process_biqu_common.json b/resources/profiles/BIQU/process/fdm_process_biqu_common.json index 5ba9d9ba30..7fef4b7f6a 100644 --- a/resources/profiles/BIQU/process/fdm_process_biqu_common.json +++ b/resources/profiles/BIQU/process/fdm_process_biqu_common.json @@ -100,10 +100,5 @@ "wipe_tower_no_sparse_layers": "0", "prime_tower_width": "35", "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" - ] + "xy_contour_compensation": "0" } diff --git a/resources/profiles/BIQU/process/fdm_process_hurakan_common.json b/resources/profiles/BIQU/process/fdm_process_hurakan_common.json index ec74a3b9ff..e1bf276aa6 100644 --- a/resources/profiles/BIQU/process/fdm_process_hurakan_common.json +++ b/resources/profiles/BIQU/process/fdm_process_hurakan_common.json @@ -100,10 +100,5 @@ "wipe_tower_no_sparse_layers": "0", "prime_tower_width": "35", "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" - ] + "xy_contour_compensation": "0" } diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json index afba0de567..d086212427 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "25", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json index 7a8dcc66e2..00d8a2180a 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json index dc4b5b3d68..5fc2f55311 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json index e0c99f1149..35144c680e 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json index e4b05ad7c9..df52bffc57 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json index 1bddf5cf67..c15c56d002 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json index 420749338c..c1223c6976 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "25", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json index 2364174546..f9dca860ae 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json index ad7c03a9e0..cd9867303b 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json index ad0512dd15..7026072ab3 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json index 4e1bcf6cbd..e5244fe8a6 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json index e498aeff64..6a5e10b572 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json index 8c52434ddc..590dfb5f51 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "25", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json index 1ce37e942b..315d0cf1ff 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json index 26ce8bcc58..2bb340baed 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json index bdb29f3471..63f85bf97a 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json index e804b905be..df6d637241 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json index 322d210048..6744c79db6 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json index 62192b929b..0b2635ccde 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "25", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json index 0719bf34c2..71ccf5168e 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json index acea431a4b..69989a2091 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json index 8d6c4e9ece..3584c1b071 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json index 1bc2ccf75a..60e1e6da28 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json index d3b70f70de..b970184594 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json index aece5ac36f..e804d6e1ce 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "25", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json index 7637ddfd3f..4c393ecddc 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json index 6e96736278..850137322e 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json index 9614550cb3..fe93d85933 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json index a70b9bc2ad..1e18cbdfa2 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json index 8f6ba3ec22..fe56ffe7c9 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json b/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json index 4419f1cab0..05aeb03482 100644 --- a/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json +++ b/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "0.2", "support_speed": "60", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json b/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json index 1a915c61b0..0d70edc00f 100644 --- a/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json +++ b/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "0.2", "support_speed": "45", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json b/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json index abb06089c5..66163f3c3a 100644 --- a/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json +++ b/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "0.2", "support_speed": "60", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Vivedino/machine/fdm_rrf_common.json b/resources/profiles/Vivedino/machine/fdm_rrf_common.json index 93965350b7..d73876ec01 100644 --- a/resources/profiles/Vivedino/machine/fdm_rrf_common.json +++ b/resources/profiles/Vivedino/machine/fdm_rrf_common.json @@ -131,7 +131,7 @@ "bed_exclude_area": [ "0x0" ], - "machine_start_gcode": "M104 S0\n M190 S0\n M98 P\"start_print.g\" A[first_layer_bed_temperature] B\"[filament_type]\" C[first_layer_temperature] D[nozzle_diameter] ", + "machine_start_gcode": "M104 S0\nM190 S0\nM98 P\"start_print.g\" A[first_layer_bed_temperature] B\"[filament_type]\" C[first_layer_temperature] D[nozzle_diameter] E{first_layer_print_min[0]} F{first_layer_print_max[0]} H{first_layer_print_min[1]} J{first_layer_print_max[1]}", "machine_end_gcode": "M0", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", diff --git a/resources/web/data/text.js b/resources/web/data/text.js index c0903dd843..208bb9fc15 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -88,6 +88,95 @@ var LangText={ "t93":"Printer Connection", "t94":"Please set up your printer connection to view the device." }, + "es_ES":{ + "t1":"Bienvenido a Orca Slicer", + "t2":"Va a configurar Orca Slicer mediante varios pasos. ¡Vamos a comenzar!", + "t3":"Terminos de usuario", + "t4":"Estoy en desacuerdo", + "t5":"Estoy de deacuerdo", + "t6":"Le rogamos su ayuda para mejorar
la experiencia de impresión de todos", + "t7":"Permitir enviar datos anónimos", + "t8":"Volver", + "t9":"Siguiente", + "t10":"Seleccionar impresora", + "t11":"Todo", + "t12":"Limpiar todo", + "t13":"mm de boquilla", + "t14":"Seleccionar filamento", + "t15":"Impresora", + "t16":"Tipo de filamento", + "t17":"Fabricante", + "t18":"error", + "t19":"Al menos se debe seleccionar un filamento.", + "t20":"¿Desea usar el filamento por defecto?", + "t21":"sí", + "t22":"no", + "t23":"Notas de lanzamiento", + "t24":"Comencemos", + "t25":"Finalizar", + "t26":"Ingresar", + "t27":"Registro", + "t28":"Reciente", + "t29":"Tienda", + "t30":"Manual", + "t31":"Nuevo proyecto", + "t32":"Crear nuevo proyecto", + "t33":"Abrir proyecto", + "t34":"punto de acceso", + "t35":"Abiertos recientemente", + "t36":"ok", + "t37":"Al menos se debe seleccionar una impresora.", + "t38":"Cancelar", + "t39":"Confirmar", + "t40":"Desconectado, por favor compruebe la conexión de red e inténtelo de nuevo.", + "t47":"Por favor, seleccione su región:", + "t48":"Asia-Pacífico", + "t49":"China", + "t50":"Desconectarse", + "t52":"Saltar", + "t53":"Ingresar", + "t54":"En la comunidad de impresión 3D, pordemos aprender de los logros y los fallos de otros para obtener nuestros propios parametros y configuraciones de Orca Slicer 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 Orca Slicer 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 ", + "t55":"Política de privacidad", + "t56":". No recolectaremos ningún tipo de dato personal con el que se le pueda identificar directa o indirectamente, incluyendo nombre, direcciones, información de pago, o números de teléfono. Activando este servicio, si está de acuerdo en estos términos y los acuerdos sobre Política y Privacidad.", + "t57":"", + "t58":"", + "t59":".", + "t60":"Europa", + "t61":"Norte América", + "t62":"Otras", + "t63":"Después de cambiar de región, su cuenta será desconectada. por favor, vuelva a ingresar.", + "t64":"Complemento de red Bambú", + "t65":"", + "t66":"Control remoto total", + "t67":"Retransmisión en vivo", + "t68":"Sincronización de datos de usuario", + "t69":"Instalar complemento de red Bambú", + "t70":"", + "t71":"Descargando", + "t72":"Descarga fallida", + "t73":"Instalación exitosa.", + "t74":"Reiniciar", + "t75":"El complemento de red Bambú proporciona las siguientes carácteristicas:", + "t76":"Complemento de red Bambú no encontrado. Presione ", + "t77":"aquí", + "t78":" para instalarlo.", + "t79":"Fallo al instalar el complemento. ", + "t80":"Intente los siguientes pasos:", + "t81":"1, Presionar ", + "t82":" para abrir el directorio de complementos", + "t83":"2, Cerrar todos los Orca Slicer abiertos", + "t84":"3, Borrar todos los archivos en el directorio de complementos", + "t85":"4, Reabrir Orca Slicer e instalar el complemento de nuevo", + "t86":"Cerrar", + "t87":"Manual de usuario", + "t88":"Borrar", + "t89":"Abrir carpeta contenedora", + "t90":"Modelo 3D", + "t91":"Descargar modelos 3D", + "t92":"Cabina Bambú de Navidad", + "t93":"Conexión de Impresora", + "t94":"Por favor, configure la conexión de red de la impresora para encontrarla." + }, "de_DE":{ "t1":"Willkommen im Orca Slicer", "t2":"Das Orca Slicer wird in mehreren Schritten eingerichtet. Lass uns anfangen!", diff --git a/run_gettext.bat b/run_gettext.bat new file mode 100644 index 0000000000..2d15878c8f --- /dev/null +++ b/run_gettext.bat @@ -0,0 +1,24 @@ +@echo off +REM OrcaSlicer gettext +REM Created by SoftFever on 27/5/23. +xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost -f ./bbl/i18n/list.txt -o ./bbl/i18n/OrcaSlicer.pot +./build/src/hints/Release/hintsToPot.exe ./resources ./bbl/i18n + +REM Print the current directory +echo %cd% +set pot_file="./bbl/i18n/OrcaSlicer.pot" + +REM Run the script for each .po file +for /r "./bbl/i18n/" %%f in (*.po) do ( + call :processFile "%%f" +) +goto :eof + +:processFile + set "file=%~1" + set "dir=%~dp1" + set "name=%~n1" + set "lang=%name:OrcaSlicer_=%" + msgmerge -N -o "%file%" "%file%" "%pot_file%" + msgfmt --check-format -o "./resources/i18n/%lang%/OrcaSlicer.mo" "%file%" +goto :eof diff --git a/run_gettext.sh b/run_gettext.sh new file mode 100755 index 0000000000..1862ccd39b --- /dev/null +++ b/run_gettext.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# OrcaSlicer gettext +# Created by SoftFever on 27/5/23. +# +xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost -f ./bbl/i18n/list.txt -o ./bbl/i18n/OrcaSlicer.pot +./build_arm64/src/hints/Release/hintsToPot.app/Contents/MacOS/hintsToPot ./resources ./bbl/i18n + + +echo $PWD +pot_file="./bbl/i18n/OrcaSlicer.pot" +for dir in ./bbl/i18n/*/ +do + dir=${dir%*/} # remove the trailing "/" + lang=${dir##*/} # extract the language identifier + + if [ -f "$dir/OrcaSlicer_${lang}.po" ]; then + msgmerge -N -o $dir/OrcaSlicer_${lang}.po $dir/OrcaSlicer_${lang}.po $pot_file + msgfmt --check-format -o ./resources/i18n/${lang}/OrcaSlicer.mo $dir/OrcaSlicer_${lang}.po + fi +done diff --git a/src/clipper2/Clipper2Lib/include/clipper2/clipper.engine.h b/src/clipper2/Clipper2Lib/include/clipper2/clipper.engine.h index 34e216ac5a..67383f2130 100644 --- a/src/clipper2/Clipper2Lib/include/clipper2/clipper.engine.h +++ b/src/clipper2/Clipper2Lib/include/clipper2/clipper.engine.h @@ -17,6 +17,8 @@ constexpr auto CLIPPER2_VERSION = "1.0.6"; #include #include #include +#include +#include #include "clipper.core.h" namespace Clipper2Lib { @@ -31,19 +33,19 @@ namespace Clipper2Lib { //Note: all clipping operations except for Difference are commutative. enum class ClipType { None, Intersection, Union, Difference, Xor }; - + enum class PathType { Subject, Clip }; enum class VertexFlags : uint32_t { None = 0, OpenStart = 1, OpenEnd = 2, LocalMax = 4, LocalMin = 8 }; - constexpr enum VertexFlags operator &(enum VertexFlags a, enum VertexFlags b) + constexpr enum VertexFlags operator &(enum VertexFlags a, enum VertexFlags b) { return (enum VertexFlags)(uint32_t(a) & uint32_t(b)); } - constexpr enum VertexFlags operator |(enum VertexFlags a, enum VertexFlags b) + constexpr enum VertexFlags operator |(enum VertexFlags a, enum VertexFlags b) { return (enum VertexFlags)(uint32_t(a) | uint32_t(b)); } @@ -97,7 +99,7 @@ namespace Clipper2Lib { //Important: UP and DOWN here are premised on Y-axis positive down //displays, which is the orientation used in Clipper's development. /////////////////////////////////////////////////////////////////// - + struct Active { Point64 bot; Point64 top; @@ -168,7 +170,7 @@ namespace Clipper2Lib { std::vector::iterator current_locmin_iter_; std::vector vertex_lists_; std::priority_queue scanline_list_; - std::vector intersect_nodes_; + std::vector intersect_nodes_; std::vector joiner_list_; //pointers in case of memory reallocs void Reset(); void InsertScanline(int64_t y); @@ -197,7 +199,7 @@ namespace Clipper2Lib { void ProcessIntersectList(); void SwapPositionsInAEL(Active& edge1, Active& edge2); OutPt* AddOutPt(const Active &e, const Point64& pt); - OutPt* AddLocalMinPoly(Active &e1, Active &e2, + OutPt* AddLocalMinPoly(Active &e1, Active &e2, const Point64& pt, bool is_new = false); OutPt* AddLocalMaxPoly(Active &e1, Active &e2, const Point64& pt); void DoHorizontal(Active &horz); @@ -254,7 +256,7 @@ namespace Clipper2Lib { PolyPath* parent_; public: PolyPath(PolyPath* parent = nullptr): parent_(parent){} - virtual ~PolyPath() { Clear(); }; + virtual ~PolyPath() { Clear(); }; //https://en.cppreference.com/w/cpp/language/rule_of_three PolyPath(const PolyPath&) = delete; PolyPath& operator=(const PolyPath&) = delete; @@ -274,7 +276,7 @@ namespace Clipper2Lib { const PolyPath* Parent() const { return parent_; } - bool IsHole() const + bool IsHole() const { const PolyPath* pp = parent_; bool is_hole = pp; @@ -364,13 +366,13 @@ namespace Clipper2Lib { PathD polygon_; typedef typename std::vector::const_iterator ppD_itor; public: - PolyPathD(PolyPathD* parent = nullptr) : PolyPath(parent) + PolyPathD(PolyPathD* parent = nullptr) : PolyPath(parent) { inv_scale_ = parent ? parent->inv_scale_ : 1.0; } - PolyPathD* operator [] (size_t index) - { - return static_cast(childs_[index]); + PolyPathD* operator [] (size_t index) + { + return static_cast(childs_[index]); } ppD_itor begin() const { return childs_.cbegin(); } ppD_itor end() const { return childs_.cend(); } @@ -437,7 +439,7 @@ namespace Clipper2Lib { return Execute(clip_type, fill_rule, closed_paths, dummy); } - bool Execute(ClipType clip_type, FillRule fill_rule, + bool Execute(ClipType clip_type, FillRule fill_rule, Paths64& closed_paths, Paths64& open_paths) { closed_paths.clear(); @@ -509,12 +511,12 @@ namespace Clipper2Lib { void CheckCallback() { if(zCallback_) - // if the user defined float point callback has been assigned + // if the user defined float point callback has been assigned // then assign the proxy callback function - ClipperBase::zCallback_ = + ClipperBase::zCallback_ = std::bind(&ClipperD::ZCB, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, - std::placeholders::_4, std::placeholders::_5); + std::placeholders::_4, std::placeholders::_5); else ClipperBase::zCallback_ = nullptr; } @@ -581,6 +583,6 @@ namespace Clipper2Lib { }; -} // namespace +} // namespace #endif // CLIPPER_ENGINE_H diff --git a/src/clipper2/Clipper2Lib/src/clipper.engine.cpp b/src/clipper2/Clipper2Lib/src/clipper.engine.cpp index 0c0d47f37a..069b52392c 100644 --- a/src/clipper2/Clipper2Lib/src/clipper.engine.cpp +++ b/src/clipper2/Clipper2Lib/src/clipper.engine.cpp @@ -15,6 +15,9 @@ #include #include "clipper2/clipper.engine.h" +#include +#include + namespace Clipper2Lib { static const double FloatingPointTolerance = 1.0e-12; @@ -94,7 +97,7 @@ namespace Clipper2Lib { inline bool IsOpenEnd(const Vertex& v) { - return (v.flags & (VertexFlags::OpenStart | VertexFlags::OpenEnd)) != + return (v.flags & (VertexFlags::OpenStart | VertexFlags::OpenEnd)) != VertexFlags::None; } @@ -189,8 +192,8 @@ namespace Clipper2Lib { } inline Point64 GetEndE1ClosestToEndE2( - const Active& e1, const Active& e2) - { + const Active& e1, const Active& e2) + { double d[] = { DistanceSqr(e1.bot, e2.bot), DistanceSqr(e1.top, e2.top), @@ -204,7 +207,7 @@ namespace Clipper2Lib { if (d[i] < d[idx]) idx = i; if (d[i] == 0) break; } - switch (idx) + switch (idx) { case 1: case 2: return e1.top; default: return e1.bot; @@ -214,7 +217,7 @@ namespace Clipper2Lib { Point64 GetIntersectPoint(const Active& e1, const Active& e2) { double b1, b2, q = (e1.dx - e2.dx); - if (std::abs(q) < 1e-5) // 1e-5 is a rough empirical limit + if (std::abs(q) < 1e-5) // 1e-5 is a rough empirical limit return GetEndE1ClosestToEndE2(e1, e2); // ie almost parallel if (e1.dx == 0) @@ -235,7 +238,7 @@ namespace Clipper2Lib { { b1 = e1.bot.x - e1.bot.y * e1.dx; b2 = e2.bot.x - e2.bot.y * e2.dx; - + q = (b2 - b1) / q; return (abs(e1.dx) < abs(e2.dx)) ? Point64(static_cast(e1.dx * q + b1), @@ -306,7 +309,7 @@ namespace Clipper2Lib { //PrevPrevVertex: useful to get the (inverted Y-axis) top of the - //alternate edge (ie left or right bound) during edge insertion. + //alternate edge (ie left or right bound) during edge insertion. inline Vertex* PrevPrevVertex(const Active& ae) { if (ae.wind_dx > 0) @@ -353,7 +356,7 @@ namespace Clipper2Lib { while (result->next->pt.y == result->pt.y) result = result->next; else while (result->prev->pt.y == result->pt.y) result = result->prev; - if (!IsMaxima(*result)) result = nullptr; // not a maxima + if (!IsMaxima(*result)) result = nullptr; // not a maxima return result; } @@ -494,7 +497,7 @@ namespace Clipper2Lib { return result * 0.5; } - inline double AreaTriangle(const Point64& pt1, + inline double AreaTriangle(const Point64& pt1, const Point64& pt2, const Point64& pt3) { return (static_cast(pt3.y + pt1.y) * static_cast(pt3.x - pt1.x) + @@ -630,7 +633,7 @@ namespace Clipper2Lib { Clear(); } - void ClipperBase::DeleteEdges(Active*& e) + void ClipperBase::DeleteEdges(Active*& e) { while (e) { @@ -681,7 +684,7 @@ namespace Clipper2Lib { void ClipperBase::SetZ(const Active& e1, const Active& e2, Point64& ip) { if (!zCallback_) return; - // prioritize subject over clip vertices by passing + // prioritize subject over clip vertices by passing // subject vertices before clip vertices in the callback if (GetPolyType(e1) == PathType::Subject) { @@ -872,19 +875,19 @@ namespace Clipper2Lib { case FillRule::EvenOdd: break; case FillRule::NonZero: - if (abs(e.wind_cnt) != 1) return false; + if (abs(e.wind_cnt) != 1) return false; break; case FillRule::Positive: - if (e.wind_cnt != 1) return false; + if (e.wind_cnt != 1) return false; break; case FillRule::Negative: - if (e.wind_cnt != -1) return false; + if (e.wind_cnt != -1) return false; break; } switch (cliptype_) { - case ClipType::None: + case ClipType::None: return false; case ClipType::Intersection: switch (fillrule_) @@ -914,17 +917,17 @@ namespace Clipper2Lib { bool result; switch (fillrule_) { - case FillRule::Positive: - result = (e.wind_cnt2 <= 0); + case FillRule::Positive: + result = (e.wind_cnt2 <= 0); break; case FillRule::Negative: - result = (e.wind_cnt2 >= 0); + result = (e.wind_cnt2 >= 0); break; - default: + default: result = (e.wind_cnt2 == 0); } if (GetPolyType(e) == PathType::Subject) - return result; + return result; else return !result; break; @@ -940,15 +943,15 @@ namespace Clipper2Lib { bool is_in_clip, is_in_subj; switch (fillrule_) { - case FillRule::Positive: - is_in_clip = e.wind_cnt2 > 0; + case FillRule::Positive: + is_in_clip = e.wind_cnt2 > 0; is_in_subj = e.wind_cnt > 0; break; - case FillRule::Negative: - is_in_clip = e.wind_cnt2 < 0; + case FillRule::Negative: + is_in_clip = e.wind_cnt2 < 0; is_in_subj = e.wind_cnt < 0; break; - default: + default: is_in_clip = e.wind_cnt2 != 0; is_in_subj = e.wind_cnt != 0; } @@ -1085,15 +1088,15 @@ namespace Clipper2Lib { //the direction they're about to turn if (!IsMaxima(resident) && (resident.top.y > newcomer.top.y)) { - return CrossProduct(newcomer.bot, + return CrossProduct(newcomer.bot, resident.top, NextVertex(resident)->pt) <= 0; } - else if (!IsMaxima(newcomer) && (newcomer.top.y > resident.top.y)) + else if (!IsMaxima(newcomer) && (newcomer.top.y > resident.top.y)) { return CrossProduct(newcomer.bot, newcomer.top, NextVertex(newcomer)->pt) >= 0; } - + int64_t y = newcomer.bot.y; bool newcomerIsLeft = newcomer.is_left_bound; @@ -1103,7 +1106,7 @@ namespace Clipper2Lib { else if (resident.is_left_bound != newcomerIsLeft) return newcomerIsLeft; else if (CrossProduct(PrevPrevVertex(resident)->pt, - resident.bot, resident.top) == 0) return true; + resident.bot, resident.top) == 0) return true; else //compare turning direction of the alternate bound return (CrossProduct(PrevPrevVertex(resident)->pt, @@ -1319,7 +1322,7 @@ namespace Clipper2Lib { SetSides(*outrec, e1, e2); else SetSides(*outrec, e2, e1); - } + } else { Active* prevHotEdge = GetPrevHotEdge(e1); @@ -1335,7 +1338,7 @@ namespace Clipper2Lib { else SetSides(*outrec, e1, e2); } - else + else { outrec->owner = nullptr; if (is_new) @@ -1344,7 +1347,7 @@ namespace Clipper2Lib { SetSides(*outrec, e2, e1); } } - + OutPt* op = new OutPt(pt, outrec); outrec->pts = op; return op; @@ -1359,7 +1362,7 @@ namespace Clipper2Lib { SwapFrontBackSides(*e1.outrec); else if (IsOpenEnd(e2)) SwapFrontBackSides(*e2.outrec); - else + else { succeeded_ = false; return nullptr; @@ -1369,7 +1372,7 @@ namespace Clipper2Lib { OutPt* result = AddOutPt(e1, pt); if (e1.outrec == e2.outrec) { - OutRec& outrec = *e1.outrec; + OutRec& outrec = *e1.outrec; outrec.pts = result; UncoupleOutRec(e1); @@ -1523,7 +1526,7 @@ namespace Clipper2Lib { void ClipperBase::DoSplitOp(OutRec* outrec, OutPt* splitOp) { - // splitOp.prev -> splitOp && + // splitOp.prev -> splitOp && // splitOp.next -> splitOp.next.next are intersecting OutPt* prevOp = splitOp->prev; OutPt* nextNextOp = splitOp->next->next; @@ -1572,7 +1575,7 @@ namespace Clipper2Lib { SafeDeleteOutPtJoiners(splitOp->next); SafeDeleteOutPtJoiners(splitOp); - if (absArea2 >= 1 && + if (absArea2 >= 1 && (absArea2 > absArea1 || (area2 > 0) == (area1 > 0))) { OutRec* newOutRec = new OutRec(); @@ -1762,7 +1765,7 @@ namespace Clipper2Lib { else result = result->next_in_ael; } result = e->prev_in_ael; - while (result) + while (result) { if (result->local_min == e->local_min) return result; else if (!IsHorizontal(*result) && e->bot != result->bot) return nullptr; @@ -1791,14 +1794,14 @@ namespace Clipper2Lib { edge_c = &e1; } - if (abs(edge_c->wind_cnt) != 1) return nullptr; + if (abs(edge_c->wind_cnt) != 1) return nullptr; switch (cliptype_) { - case ClipType::Union: - if (!IsHotEdge(*edge_c)) return nullptr; + case ClipType::Union: + if (!IsHotEdge(*edge_c)) return nullptr; break; - default: - if (edge_c->local_min->polytype == PathType::Subject) + default: + if (edge_c->local_min->polytype == PathType::Subject) return nullptr; } @@ -1821,11 +1824,11 @@ namespace Clipper2Lib { edge_o->outrec = nullptr; return resultOp; } - + //horizontal edges can pass under open paths at a LocMins else if (pt == edge_o->local_min->vertex->pt && !IsOpenEnd(*edge_o->local_min->vertex)) - { + { //find the other side of the LocMin and //if it's 'hot' join up with it ... Active* e3 = FindEdgeWithMatchingLocMin(edge_o); @@ -1833,7 +1836,7 @@ namespace Clipper2Lib { { edge_o->outrec = e3->outrec; if (edge_o->wind_dx > 0) - SetSides(*e3->outrec, *edge_o, *e3); + SetSides(*e3->outrec, *edge_o, *e3); else SetSides(*e3->outrec, *e3, *edge_o); return e3->outrec->pts; @@ -1847,7 +1850,7 @@ namespace Clipper2Lib { //MANAGING CLOSED PATHS FROM HERE ON - + //UPDATE WINDING COUNTS... int old_e1_windcnt, old_e2_windcnt; @@ -1913,7 +1916,7 @@ namespace Clipper2Lib { { return nullptr; } - + //NOW PROCESS THE INTERSECTION ... OutPt* resultOp = nullptr; //if both edges are 'hot' ... @@ -2282,7 +2285,7 @@ namespace Clipper2Lib { inline bool HorzIsSpike(const Active& horzEdge) { Point64 nextPt = NextVertex(horzEdge)->pt; - return (nextPt.y == horzEdge.bot.y) && + return (nextPt.y == horzEdge.bot.y) && (horzEdge.bot.x < horzEdge.top.x) != (horzEdge.top.x < nextPt.x); } @@ -2295,7 +2298,7 @@ namespace Clipper2Lib { //always trim 180 deg. spikes (in closed paths) //but otherwise break if preserveCollinear = true if (preserveCollinear && - ((pt.x < horzEdge.top.x) != (horzEdge.bot.x < horzEdge.top.x))) + ((pt.x < horzEdge.top.x) != (horzEdge.bot.x < horzEdge.top.x))) break; horzEdge.vertex_top = NextVertex(horzEdge); @@ -2353,11 +2356,11 @@ namespace Clipper2Lib { OutPt* op; while (true) // loop through consec. horizontal edges - { + { if (horzIsOpen && IsMaxima(horz) && !IsOpenEnd(horz)) { vertex_max = GetCurrYMaximaVertex(horz); - if (vertex_max) + if (vertex_max) max_pair = GetHorzMaximaPair(horz, vertex_max); } @@ -2388,7 +2391,7 @@ namespace Clipper2Lib { //if horzEdge is a maxima, keep going until we reach //its maxima pair, otherwise check for break conditions - if (vertex_max != horz.vertex_top || IsOpenEnd(horz)) + if (vertex_max != horz.vertex_top || IsOpenEnd(horz)) { //otherwise stop when 'ae' is beyond the end of the horizontal line if ((is_left_to_right && e->curr_x > horz_right) || @@ -2467,15 +2470,15 @@ namespace Clipper2Lib { { AddOutPt(horz, horz.top); if (IsFront(horz)) - horz.outrec->front_edge = nullptr; + horz.outrec->front_edge = nullptr; else horz.outrec->back_edge = nullptr; horz.outrec = nullptr; } - DeleteFromAEL(horz); + DeleteFromAEL(horz); return; } - else if (NextVertex(horz)->pt.y != horz.top.y) + else if (NextVertex(horz)->pt.y != horz.top.y) break; //still more horizontals in bound to process ... @@ -2486,7 +2489,7 @@ namespace Clipper2Lib { if (PreserveCollinear && !horzIsOpen && HorzIsSpike(horz)) TrimHorz(horz, true); - is_left_to_right = + is_left_to_right = ResetHorzDirection(horz, max_pair, horz_left, horz_right); } @@ -2499,7 +2502,7 @@ namespace Clipper2Lib { else op = nullptr; - if ((horzIsOpen && !IsOpenEnd(horz)) || + if ((horzIsOpen && !IsOpenEnd(horz)) || (!horzIsOpen && vertex_max != horz.vertex_top)) { UpdateEdgeIntoAEL(&horz); // this is the end of an intermediate horiz. @@ -2516,7 +2519,7 @@ namespace Clipper2Lib { AddJoin(op2, op); } } - else if (IsHotEdge(horz)) + else if (IsHotEdge(horz)) AddLocalMaxPoly(horz, *max_pair, horz.top); else { @@ -2966,7 +2969,7 @@ namespace Clipper2Lib { OutRec* outrec = ProcessJoin(j); CleanCollinear(outrec); } - else + else delete j; } @@ -3015,7 +3018,7 @@ namespace Clipper2Lib { bool CollinearSegsOverlap(const Point64& seg1a, const Point64& seg1b, const Point64& seg2a, const Point64& seg2b) { - //precondition: seg1 and seg2 are collinear + //precondition: seg1 and seg2 are collinear if (seg1a.x == seg1b.x) { if (seg2a.x != seg1a.x || seg2a.x != seg2b.x) return false; @@ -3146,7 +3149,7 @@ namespace Clipper2Lib { { or1->pts = op1; or2->pts = nullptr; - if (or1->owner && (!or2->owner || + if (or1->owner && (!or2->owner || or2->owner->idx < or1->owner->idx)) or1->owner = or2->owner; or2->owner = or1; @@ -3156,7 +3159,7 @@ namespace Clipper2Lib { result = or2; or2->pts = op1; or1->pts = nullptr; - if (or2->owner && (!or1->owner || + if (or2->owner && (!or1->owner || or1->owner->idx < or2->owner->idx)) or2->owner = or1->owner; or1->owner = or2; @@ -3207,7 +3210,7 @@ namespace Clipper2Lib { { or1->pts = op1; or2->pts = nullptr; - if (or1->owner && (!or2->owner || + if (or1->owner && (!or2->owner || or2->owner->idx < or1->owner->idx)) or1->owner = or2->owner; or2->owner = or1; @@ -3217,9 +3220,9 @@ namespace Clipper2Lib { result = or2; or2->pts = op1; or1->pts = nullptr; - if (or2->owner && (!or1->owner || + if (or2->owner && (!or1->owner || or1->owner->idx < or2->owner->idx)) - or2->owner = or1->owner; + or2->owner = or1->owner; or1->owner = or2; } } @@ -3310,11 +3313,11 @@ namespace Clipper2Lib { if (pt.y > result.bottom) result.bottom = pt.y; } return result; - } + } bool BuildPath64(OutPt* op, bool reverse, bool isOpen, Path64& path) { - if (op->next == op || (!isOpen && op->next == op->prev)) + if (op->next == op || (!isOpen && op->next == op->prev)) return false; path.resize(0); @@ -3355,9 +3358,9 @@ namespace Clipper2Lib { if (owner->bounds.IsEmpty()) owner->bounds = GetBounds(owner->path); bool is_inside_owner_bounds = owner->bounds.Contains(outrec->bounds); - // while looking for the correct owner, check the owner's - // splits **before** checking the owner itself because - // splits can occur internally, and checking the owner + // while looking for the correct owner, check the owner's + // splits **before** checking the owner itself because + // splits can occur internally, and checking the owner // first would miss the inner split's true ownership if (owner->splits) { @@ -3388,7 +3391,7 @@ namespace Clipper2Lib { { if (is_inside_owner_bounds && Path1InsidePath2(outrec, outrec->owner)) return true; - // otherwise keep trying with owner's owner + // otherwise keep trying with owner's owner outrec->owner = outrec->owner->owner; if (!outrec->owner) return true; // true or false is_inside_owner_bounds = outrec->owner->bounds.Contains(outrec->bounds); diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 5b0bb503cc..028ab8fba2 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -185,7 +185,7 @@ std::vector group_fills(const Layer &layer) params.bridge = is_bridge || Fill::use_bridge_flow(params.pattern); params.flow = params.bridge ? //BBS: always enable thick bridge for internal bridge - layerm.bridging_flow(extrusion_role, (surface.is_bridge() && !surface.is_external()) || object_config.thick_bridges, surface.is_external() ? region_config.bridge_density.get_abs_value(1.0) : 1.0f) : + layerm.bridging_flow(extrusion_role, (surface.is_bridge() && !surface.is_external()) || object_config.thick_bridges) : layerm.flow(extrusion_role, (surface.thickness == -1) ? layer.height : surface.thickness); // Calculate flow spacing for infill pattern generation. @@ -199,8 +199,13 @@ std::vector group_fills(const Layer &layer) // so that internall infill will be aligned over all layers of the current region. params.spacing = layerm.region().flow(*layer.object(), frInfill, layer.object()->config().layer_height, false).spacing(); // Anchor a sparse infill to inner perimeters with the following anchor length: - params.anchor_length = float(Fill::infill_anchor * 0.01 * params.spacing); - params.anchor_length_max = Fill::infill_anchor_max; + // Anchor a sparse infill to inner perimeters with the following anchor length: + params.anchor_length = float(region_config.infill_anchor); + if (region_config.infill_anchor.percent) + params.anchor_length = float(params.anchor_length * 0.01 * params.spacing); + params.anchor_length_max = float(region_config.infill_anchor_max); + if (region_config.infill_anchor_max.percent) + params.anchor_length_max = float(params.anchor_length_max * 0.01 * params.spacing); params.anchor_length = std::min(params.anchor_length, params.anchor_length_max); } @@ -494,6 +499,11 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: // Spacing is modified by the filler to indicate adjustments. Reset it for each expolygon. f->spacing = surface_fill.params.spacing; surface_fill.surface.expolygon = std::move(expoly); + + if(surface_fill.params.bridge && surface_fill.surface.is_external() && surface_fill.params.density > 99.0){ + params.density = layerm->region().config().bridge_density.get_abs_value(1.0); + params.dont_adjust = true; + } // BBS: make fill f->fill_surface_extrusion(&surface_fill.surface, params, diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index c2a826100a..c64cc5000f 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -154,8 +154,8 @@ const std::string BBS_MODEL_CONFIG_FILE = "Metadata/model_settings.config"; const std::string BBS_MODEL_CONFIG_RELS_FILE = "Metadata/_rels/model_settings.config.rels"; const std::string SLICE_INFO_CONFIG_FILE = "Metadata/slice_info.config"; const std::string BBS_LAYER_HEIGHTS_PROFILE_FILE = "Metadata/layer_heights_profile.txt"; -/*const std::string LAYER_CONFIG_RANGES_FILE = "Metadata/Prusa_Slicer_layer_config_ranges.xml"; -const std::string SLA_SUPPORT_POINTS_FILE = "Metadata/Slic3r_PE_sla_support_points.txt"; +const std::string LAYER_CONFIG_RANGES_FILE = "Metadata/layer_config_ranges.xml"; +/*const std::string SLA_SUPPORT_POINTS_FILE = "Metadata/Slic3r_PE_sla_support_points.txt"; const std::string SLA_DRAIN_HOLES_FILE = "Metadata/Slic3r_PE_sla_drain_holes.txt";*/ const std::string CUSTOM_GCODE_PER_PRINT_Z_FILE = "Metadata/custom_gcode_per_layer.xml"; const std::string AUXILIARY_DIR = "Auxiliaries/"; @@ -751,8 +751,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) typedef std::map IdToCutObjectInfoMap; //typedef std::map IdToGeometryMap; typedef std::map> IdToLayerHeightsProfileMap; - /*typedef std::map IdToLayerConfigRangesMap; - typedef std::map> IdToSlaSupportPointsMap; + typedef std::map IdToLayerConfigRangesMap; + /*typedef std::map> IdToSlaSupportPointsMap; typedef std::map> IdToSlaDrainHolesMap;*/ struct ObjectImporter @@ -942,8 +942,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) IdToMetadataMap m_objects_metadata; IdToCutObjectInfoMap m_cut_object_infos; IdToLayerHeightsProfileMap m_layer_heights_profiles; - /*IdToLayerConfigRangesMap m_layer_config_ranges; - IdToSlaSupportPointsMap m_sla_support_points; + IdToLayerConfigRangesMap m_layer_config_ranges; + /*IdToSlaSupportPointsMap m_sla_support_points; IdToSlaDrainHolesMap m_sla_drain_holes;*/ std::string m_curr_metadata_name; std::string m_curr_characters; @@ -1199,7 +1199,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) m_curr_config.volume_id = -1; m_objects_metadata.clear(); m_layer_heights_profiles.clear(); - //m_layer_config_ranges.clear(); + m_layer_config_ranges.clear(); //m_sla_support_points.clear(); m_curr_metadata_name.clear(); m_curr_characters.clear(); @@ -1510,10 +1510,10 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) _extract_layer_heights_profile_config_from_archive(archive, stat); } else - /*if (boost::algorithm::iequals(name, LAYER_CONFIG_RANGES_FILE)) { + if (boost::algorithm::iequals(name, LAYER_CONFIG_RANGES_FILE)) { // extract slic3r layer config ranges file _extract_layer_config_ranges_from_archive(archive, stat, config_substitutions); - }*/ + } //BBS: disable SLA related files currently /*else if (boost::algorithm::iequals(name, SLA_SUPPORT_POINTS_FILE)) { // extract sla support points file @@ -1687,12 +1687,12 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) model_object->layer_height_profile.set(std::move(obj_layer_heights_profile->second)); // m_layer_config_ranges are indexed by a 1 based model object index. - /*IdToLayerConfigRangesMap::iterator obj_layer_config_ranges = m_layer_config_ranges.find(object.second + 1); + IdToLayerConfigRangesMap::iterator obj_layer_config_ranges = m_layer_config_ranges.find(object.second + 1); if (obj_layer_config_ranges != m_layer_config_ranges.end()) model_object->layer_config_ranges = std::move(obj_layer_config_ranges->second); // m_sla_support_points are indexed by a 1 based model object index. - IdToSlaSupportPointsMap::iterator obj_sla_support_points = m_sla_support_points.find(object.second + 1); + /*IdToSlaSupportPointsMap::iterator obj_sla_support_points = m_sla_support_points.find(object.second + 1); if (obj_sla_support_points != m_sla_support_points.end() && !obj_sla_support_points->second.empty()) { model_object->sla_support_points = std::move(obj_sla_support_points->second); model_object->sla_points_status = sla::PointsStatus::UserModified; @@ -2437,7 +2437,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } } } - /* + void _BBS_3MF_Importer::_extract_layer_config_ranges_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, ConfigSubstitutionContext& config_substitutions) { if (stat.m_uncomp_size > 0) { @@ -2495,7 +2495,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } } } - + /* void _BBS_3MF_Importer::_extract_sla_support_points_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat) { if (stat.m_uncomp_size > 0) { @@ -5363,14 +5363,16 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) proFn(EXPORT_STAGE_ADD_LAYER_RANGE, 0, 1, cb_cancel); if (cb_cancel) return false; - } + }*/ // Adds layer config ranges file ("Metadata/Slic3r_PE_layer_config_ranges.txt"). // All layer height profiles of all ModelObjects are stored here, indexed by 1 based index of the ModelObject in Model. // The index differes from the index of an object ID of an object instance of a 3MF file! if (!_add_layer_config_ranges_file_to_archive(archive, model)) { + close_zip_writer(&archive); + boost::filesystem::remove(filename); return false; - }*/ + } // BBS progress point /*BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" <<__LINE__ << boost::format("export 3mf EXPORT_STAGE_ADD_SUPPORT\n"); @@ -6417,7 +6419,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) return true; } - /* + bool _BBS_3MF_Exporter::_add_layer_config_ranges_file_to_archive(mz_zip_archive& archive, Model& model) { std::string out = ""; @@ -6477,6 +6479,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) return true; } + /* bool _BBS_3MF_Exporter::_add_sla_support_points_file_to_archive(mz_zip_archive& archive, Model& model) { assert(is_decimal_separator_point()); @@ -6810,7 +6813,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) stream << " <" << PLATE_TAG << ">\n"; //plate index stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << PLATERID_ATTR << "\" " << VALUE_ATTR << "=\"" << plate_data->plate_index + 1 << "\"/>\n"; - stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << PLATER_NAME_ATTR << "\" " << VALUE_ATTR << "=\"" << plate_data->plate_name << "\"/>\n"; + stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << PLATER_NAME_ATTR << "\" " << VALUE_ATTR << "=\"" << xml_escape(plate_data->plate_name) << "\"/>\n"; stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << LOCK_ATTR << "\" " << VALUE_ATTR << "=\"" << std::boolalpha<< plate_data->locked<< "\"/>\n"; ConfigOption* bed_type_opt = plate_data->config.option("curr_bed_type"); t_config_enum_names bed_type_names = ConfigOptionEnum::get_enum_names(); diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index c9b633ed1c..ee1a10893b 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1433,7 +1433,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato // modifies m_silent_time_estimator_enabled DoExport::init_gcode_processor(print.config(), m_processor, m_silent_time_estimator_enabled); const bool is_bbl_printers = print.is_BBL_printer(); - + m_calib_config.clear(); // resets analyzer's tracking data m_last_height = 0.f; m_last_layer_z = 0.f; @@ -1727,7 +1727,11 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato //m_placeholder_parser.set("has_single_extruder_multi_material_priming", has_wipe_tower && print.config().single_extruder_multi_material_priming); m_placeholder_parser.set("total_toolchanges", std::max(0, print.wipe_tower_data().number_of_toolchanges)); // Check for negative toolchanges (single extruder mode) and set to 0 (no tool change). - std::vector is_extruder_used(print.config().filament_diameter.size(), 0); + // PlaceholderParser currently substitues non-existent vector values with the zero'th value, which is harmful in the + // case of "is_extruder_used[]" as Slicer may lie about availability of such non-existent extruder. We rather + // sacrifice 256B of memory before we change the behavior of the PlaceholderParser, which should really only fill in + // the non-existent vector elements for filament parameters. + std::vector is_extruder_used(std::max(size_t(255), print.config().filament_diameter.size()), 0); for (unsigned int extruder : tool_ordering.all_extruders()) is_extruder_used[extruder] = true; m_placeholder_parser.set("is_extruder_used", new ConfigOptionBools(is_extruder_used)); @@ -1775,6 +1779,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato m_placeholder_parser.set("max_print_height",new ConfigOptionInt(m_config.printable_height)); m_placeholder_parser.set("z_offset", new ConfigOptionFloat(0.0f)); m_placeholder_parser.set("plate_name", new ConfigOptionString(print.get_plate_name())); + m_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 { @@ -3640,14 +3645,6 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou gcode += m_writer.extrude_to_xy(this->point_to_gcode(pt), 0,"move inwards before travel",true); } - //BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value. - if (!this->on_first_layer()) { - // reset acceleration - if (m_config.default_acceleration.value > 0) - gcode += m_writer.set_acceleration((unsigned int)(m_config.default_acceleration.value + 0.5)); - if (m_config.default_jerk.value > 0) - gcode += m_writer.set_jerk_xy(m_config.default_jerk.value); - } return gcode; } @@ -3671,14 +3668,7 @@ std::string GCode::extrude_multi_path(ExtrusionMultiPath multipath, std::string } m_wipe.path.reverse(); } - //BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value. - if (!this->on_first_layer()) { - // reset acceleration - if (m_config.default_acceleration.value > 0) - gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5)); - if(m_config.default_jerk.value > 0) - gcode += m_writer.set_jerk_xy(m_config.default_jerk.value); - } + return gcode; } @@ -3703,15 +3693,7 @@ std::string GCode::extrude_path(ExtrusionPath path, std::string description, dou m_wipe.path = std::move(path.polyline); m_wipe.path.reverse(); } - //BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value. - if (!this->on_first_layer()){ - // reset acceleration - if (m_config.default_acceleration.value > 0) - gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5)); - if(m_config.default_jerk.value > 0) - gcode += m_writer.set_jerk_xy(m_config.default_jerk.value); - } return gcode; } @@ -4020,6 +4002,12 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, } } } + // Override skirt speed if set + if (path.role() == erSkirt) { + const double skirt_speed = m_config.get_abs_value("skirt_speed"); + if (skirt_speed > 0.0) + speed = skirt_speed; + } //BBS: remove this config //else if (this->object_layer_over_raft()) // speed = m_config.get_abs_value("first_layer_speed_over_raft", speed); diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 4b89930635..cf5b9c5080 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -1,5 +1,7 @@ #include "SeamPlacer.hpp" +#include "Polygon.hpp" +#include "PrintConfig.hpp" #include "tbb/parallel_for.h" #include "tbb/blocked_range.h" #include "tbb/parallel_reduce.h" @@ -33,957 +35,1059 @@ namespace Slic3r { namespace SeamPlacerImpl { -// ************ FOR BACKPORT COMPATIBILITY ONLY *************** -// Color mapping of a value into RGB false colors. -inline Vec3f value_to_rgbf(float minimum, float maximum, float value) -{ - float ratio = 2.0f * (value - minimum) / (maximum - minimum); - float b = std::max(0.0f, (1.0f - ratio)); - float r = std::max(0.0f, (ratio - 1.0f)); - float g = 1.0f - b - r; - return Vec3f{r, g, b}; +template int sgn(T val) { + return int(T(0) < val) - int(val < T(0)); } -// Color mapping of a value into RGB false colors. -inline Vec3i value_to_rgbi(float minimum, float maximum, float value) { return (value_to_rgbf(minimum, maximum, value) * 255).cast(); } -// *************************** - -template int sgn(T val) { return int(T(0) < val) - int(val < T(0)); } - // base function: ((e^(((1)/(x^(2)+1)))-1)/(e-1)) // checkout e.g. here: https://www.geogebra.org/calculator -float gauss(float value, float mean_x_coord, float mean_value, float falloff_speed) -{ - float shifted = value - mean_x_coord; - float denominator = falloff_speed * shifted * shifted + 1.0f; - float exponent = 1.0f / denominator; - return mean_value * (std::exp(exponent) - 1.0f) / (std::exp(1.0f) - 1.0f); +float gauss(float value, float mean_x_coord, float mean_value, float falloff_speed) { + float shifted = value - mean_x_coord; + float denominator = falloff_speed * shifted * shifted + 1.0f; + float exponent = 1.0f / denominator; + return mean_value * (std::exp(exponent) - 1.0f) / (std::exp(1.0f) - 1.0f); } -float compute_angle_penalty(float ccw_angle) -{ - // This function is used: - // ((ℯ^(((1)/(x^(2)*3+1)))-1)/(ℯ-1))*1+((1)/(2+ℯ^(-x))) - // looks scary, but it is gaussian combined with sigmoid, - // so that concave points have much smaller penalty over convex ones - // https://github.com/prusa3d/PrusaSlicer/tree/master/doc/seam_placement/corner_penalty_function.png - return gauss(ccw_angle, 0.0f, 1.0f, 3.0f) + 1.0f / (2 + std::exp(-ccw_angle)); +float compute_angle_penalty(float ccw_angle) { + // This function is used: + // ((ℯ^(((1)/(x^(2)*3+1)))-1)/(ℯ-1))*1+((1)/(2+ℯ^(-x))) + // looks scary, but it is gaussian combined with sigmoid, + // so that concave points have much smaller penalty over convex ones + // https://github.com/prusa3d/PrusaSlicer/tree/master/doc/seam_placement/corner_penalty_function.png + return gauss(ccw_angle, 0.0f, 1.0f, 3.0f) + + 1.0f / (2 + std::exp(-ccw_angle)); } /// Coordinate frame -class Frame -{ +class Frame { public: - Frame() - { - mX = Vec3f(1, 0, 0); - mY = Vec3f(0, 1, 0); - mZ = Vec3f(0, 0, 1); - } + Frame() { + mX = Vec3f(1, 0, 0); + mY = Vec3f(0, 1, 0); + mZ = Vec3f(0, 0, 1); + } - Frame(const Vec3f &x, const Vec3f &y, const Vec3f &z) : mX(x), mY(y), mZ(z) {} + Frame(const Vec3f &x, const Vec3f &y, const Vec3f &z) : + mX(x), mY(y), mZ(z) { + } - void set_from_z(const Vec3f &z) - { - mZ = z.normalized(); - Vec3f tmpZ = mZ; - Vec3f tmpX = (std::abs(tmpZ.x()) > 0.99f) ? Vec3f(0, 1, 0) : Vec3f(1, 0, 0); - mY = (tmpZ.cross(tmpX)).normalized(); - mX = mY.cross(tmpZ); - } + void set_from_z(const Vec3f &z) { + mZ = z.normalized(); + Vec3f tmpZ = mZ; + Vec3f tmpX = (std::abs(tmpZ.x()) > 0.99f) ? Vec3f(0, 1, 0) : Vec3f(1, 0, 0); + mY = (tmpZ.cross(tmpX)).normalized(); + mX = mY.cross(tmpZ); + } - Vec3f to_world(const Vec3f &a) const { return a.x() * mX + a.y() * mY + a.z() * mZ; } + Vec3f to_world(const Vec3f &a) const { + return a.x() * mX + a.y() * mY + a.z() * mZ; + } - Vec3f to_local(const Vec3f &a) const { return Vec3f(mX.dot(a), mY.dot(a), mZ.dot(a)); } + Vec3f to_local(const Vec3f &a) const { + return Vec3f(mX.dot(a), mY.dot(a), mZ.dot(a)); + } - const Vec3f &binormal() const { return mX; } + const Vec3f& binormal() const { + return mX; + } - const Vec3f &tangent() const { return mY; } + const Vec3f& tangent() const { + return mY; + } - const Vec3f &normal() const { return mZ; } + const Vec3f& normal() const { + return mZ; + } private: - Vec3f mX, mY, mZ; + Vec3f mX, mY, mZ; }; -Vec3f sample_sphere_uniform(const Vec2f &samples) -{ - float term1 = 2.0f * float(PI) * samples.x(); - float term2 = 2.0f * sqrt(samples.y() - samples.y() * samples.y()); - return {cos(term1) * term2, sin(term1) * term2, 1.0f - 2.0f * samples.y()}; +Vec3f sample_sphere_uniform(const Vec2f &samples) { + float term1 = 2.0f * float(PI) * samples.x(); + float term2 = 2.0f * sqrt(samples.y() - samples.y() * samples.y()); + return {cos(term1) * term2, sin(term1) * term2, + 1.0f - 2.0f * samples.y()}; } -Vec3f sample_hemisphere_uniform(const Vec2f &samples) -{ - float term1 = 2.0f * float(PI) * samples.x(); - float term2 = 2.0f * sqrt(samples.y() - samples.y() * samples.y()); - return {cos(term1) * term2, sin(term1) * term2, abs(1.0f - 2.0f * samples.y())}; +Vec3f sample_hemisphere_uniform(const Vec2f &samples) { + float term1 = 2.0f * float(PI) * samples.x(); + float term2 = 2.0f * sqrt(samples.y() - samples.y() * samples.y()); + return {cos(term1) * term2, sin(term1) * term2, + abs(1.0f - 2.0f * samples.y())}; } -Vec3f sample_power_cosine_hemisphere(const Vec2f &samples, float power) -{ - float term1 = 2.f * float(PI) * samples.x(); - float term2 = pow(samples.y(), 1.f / (power + 1.f)); - float term3 = sqrt(1.f - term2 * term2); +Vec3f sample_power_cosine_hemisphere(const Vec2f &samples, float power) { + float term1 = 2.f * float(PI) * samples.x(); + float term2 = pow(samples.y(), 1.f / (power + 1.f)); + float term3 = sqrt(1.f - term2 * term2); - return Vec3f(cos(term1) * term3, sin(term1) * term3, term2); + return Vec3f(cos(term1) * term3, sin(term1) * term3, term2); } std::vector raycast_visibility(const AABBTreeIndirect::Tree<3, float> &raycasting_tree, - const indexed_triangle_set & triangles, - const TriangleSetSamples & samples, - size_t negative_volumes_start_index) -{ - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: raycast visibility of " << samples.positions.size() << " samples over " << triangles.indices.size() << " triangles: end"; + const indexed_triangle_set &triangles, + const TriangleSetSamples &samples, + size_t negative_volumes_start_index) { + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: raycast visibility of " << samples.positions.size() << " samples over " << triangles.indices.size() + << " triangles: end"; - // prepare uniform samples of a hemisphere - float step_size = 1.0f / SeamPlacer::sqr_rays_per_sample_point; - std::vector precomputed_sample_directions(SeamPlacer::sqr_rays_per_sample_point * SeamPlacer::sqr_rays_per_sample_point); - for (size_t x_idx = 0; x_idx < SeamPlacer::sqr_rays_per_sample_point; ++x_idx) { - float sample_x = x_idx * step_size + step_size / 2.0; - for (size_t y_idx = 0; y_idx < SeamPlacer::sqr_rays_per_sample_point; ++y_idx) { - size_t dir_index = x_idx * SeamPlacer::sqr_rays_per_sample_point + y_idx; - float sample_y = y_idx * step_size + step_size / 2.0; - precomputed_sample_directions[dir_index] = sample_hemisphere_uniform({sample_x, sample_y}); - } + //prepare uniform samples of a hemisphere + float step_size = 1.0f / SeamPlacer::sqr_rays_per_sample_point; + std::vector precomputed_sample_directions( + SeamPlacer::sqr_rays_per_sample_point * SeamPlacer::sqr_rays_per_sample_point); + for (size_t x_idx = 0; x_idx < SeamPlacer::sqr_rays_per_sample_point; ++x_idx) { + float sample_x = x_idx * step_size + step_size / 2.0; + for (size_t y_idx = 0; y_idx < SeamPlacer::sqr_rays_per_sample_point; ++y_idx) { + size_t dir_index = x_idx * SeamPlacer::sqr_rays_per_sample_point + y_idx; + float sample_y = y_idx * step_size + step_size / 2.0; + precomputed_sample_directions[dir_index] = sample_hemisphere_uniform( { sample_x, sample_y }); } + } - bool model_contains_negative_parts = negative_volumes_start_index < triangles.indices.size(); + bool model_contains_negative_parts = negative_volumes_start_index < triangles.indices.size(); - std::vector result(samples.positions.size()); - tbb::parallel_for(tbb::blocked_range(0, result.size()), [&triangles, &precomputed_sample_directions, model_contains_negative_parts, negative_volumes_start_index, - &raycasting_tree, &result, &samples](tbb::blocked_range r) { - // Maintaining hits memory outside of the loop, so it does not have to be reallocated for each query. - std::vector hits; - for (size_t s_idx = r.begin(); s_idx < r.end(); ++s_idx) { - result[s_idx] = 1.0f; - constexpr float decrease_step = 1.0f / (SeamPlacer::sqr_rays_per_sample_point * SeamPlacer::sqr_rays_per_sample_point); + std::vector result(samples.positions.size()); + tbb::parallel_for(tbb::blocked_range(0, result.size()), + [&triangles, &precomputed_sample_directions, model_contains_negative_parts, negative_volumes_start_index, + &raycasting_tree, &result, &samples](tbb::blocked_range r) { + // Maintaining hits memory outside of the loop, so it does not have to be reallocated for each query. + std::vector hits; + for (size_t s_idx = r.begin(); s_idx < r.end(); ++s_idx) { + result[s_idx] = 1.0f; + constexpr float decrease_step = 1.0f + / (SeamPlacer::sqr_rays_per_sample_point * SeamPlacer::sqr_rays_per_sample_point); - const Vec3f ¢er = samples.positions[s_idx]; - const Vec3f &normal = samples.normals[s_idx]; - // apply the local direction via Frame struct - the local_dir is with respect to +Z being forward - Frame f; - f.set_from_z(normal); + const Vec3f ¢er = samples.positions[s_idx]; + const Vec3f &normal = samples.normals[s_idx]; + // apply the local direction via Frame struct - the local_dir is with respect to +Z being forward + Frame f; + f.set_from_z(normal); - for (const auto &dir : precomputed_sample_directions) { - Vec3f final_ray_dir = (f.to_world(dir)); - if (!model_contains_negative_parts) { - igl::Hit hitpoint; - // FIXME: This AABBTTreeIndirect query will not compile for float ray origin and - // direction. - Vec3d final_ray_dir_d = final_ray_dir.cast(); - Vec3d ray_origin_d = (center + normal * 0.01f).cast(); // start above surface. - bool hit = AABBTreeIndirect::intersect_ray_first_hit(triangles.vertices, triangles.indices, raycasting_tree, ray_origin_d, final_ray_dir_d, hitpoint); - if (hit && its_face_normal(triangles, hitpoint.id).dot(final_ray_dir) <= 0) { result[s_idx] -= decrease_step; } - } else { // TODO improve logic for order based boolean operations - consider order of volumes - bool casting_from_negative_volume = samples.triangle_indices[s_idx] >= negative_volumes_start_index; - - Vec3d ray_origin_d = (center + normal * 0.01f).cast(); // start above surface. - if (casting_from_negative_volume) { // if casting from negative volume face, invert direction, change start pos - final_ray_dir = -1.0 * final_ray_dir; - ray_origin_d = (center - normal * 0.01f).cast(); - } - Vec3d final_ray_dir_d = final_ray_dir.cast(); - bool some_hit = AABBTreeIndirect::intersect_ray_all_hits(triangles.vertices, triangles.indices, raycasting_tree, ray_origin_d, final_ray_dir_d, hits); - if (some_hit) { - int counter = 0; - // NOTE: iterating in reverse, from the last hit for one simple reason: We know the state of the ray at that point; - // It cannot be inside model, and it cannot be inside negative volume - for (int hit_index = int(hits.size()) - 1; hit_index >= 0; --hit_index) { - Vec3f face_normal = its_face_normal(triangles, hits[hit_index].id); - if (hits[hit_index].id >= int(negative_volumes_start_index)) { // negative volume hit - counter -= sgn(face_normal.dot(final_ray_dir)); // if volume face aligns with ray dir, we are leaving negative space - // which in reverse hit analysis means, that we are entering negative space :) and vice versa - } else { - counter += sgn(face_normal.dot(final_ray_dir)); + for (const auto &dir : precomputed_sample_directions) { + Vec3f final_ray_dir = (f.to_world(dir)); + if (!model_contains_negative_parts) { + igl::Hit hitpoint; + // FIXME: This AABBTTreeIndirect query will not compile for float ray origin and + // direction. + Vec3d final_ray_dir_d = final_ray_dir.cast(); + Vec3d ray_origin_d = (center + normal * 0.01f).cast(); // start above surface. + bool hit = AABBTreeIndirect::intersect_ray_first_hit(triangles.vertices, + triangles.indices, raycasting_tree, ray_origin_d, final_ray_dir_d, hitpoint); + if (hit && its_face_normal(triangles, hitpoint.id).dot(final_ray_dir) <= 0) { + result[s_idx] -= decrease_step; } + } else { //TODO improve logic for order based boolean operations - consider order of volumes + bool casting_from_negative_volume = samples.triangle_indices[s_idx] + >= negative_volumes_start_index; + + Vec3d ray_origin_d = (center + normal * 0.01f).cast(); // start above surface. + if (casting_from_negative_volume) { // if casting from negative volume face, invert direction, change start pos + final_ray_dir = -1.0 * final_ray_dir; + ray_origin_d = (center - normal * 0.01f).cast(); + } + Vec3d final_ray_dir_d = final_ray_dir.cast(); + bool some_hit = AABBTreeIndirect::intersect_ray_all_hits(triangles.vertices, + triangles.indices, raycasting_tree, + ray_origin_d, final_ray_dir_d, hits); + if (some_hit) { + int counter = 0; + // NOTE: iterating in reverse, from the last hit for one simple reason: We know the state of the ray at that point; + // It cannot be inside model, and it cannot be inside negative volume + for (int hit_index = int(hits.size()) - 1; hit_index >= 0; --hit_index) { + Vec3f face_normal = its_face_normal(triangles, hits[hit_index].id); + if (hits[hit_index].id >= int(negative_volumes_start_index)) { //negative volume hit + counter -= sgn(face_normal.dot(final_ray_dir)); // if volume face aligns with ray dir, we are leaving negative space + // which in reverse hit analysis means, that we are entering negative space :) and vice versa + } else { + counter += sgn(face_normal.dot(final_ray_dir)); + } + } + if (counter == 0) { + result[s_idx] -= decrease_step; + } + } + } } - if (counter == 0) { result[s_idx] -= decrease_step; } - } - } - } - } - }); + } + }); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: raycast visibility of " << samples.positions.size() << " samples over " << triangles.indices.size() << " triangles: end"; + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: raycast visibility of " << samples.positions.size() << " samples over " << triangles.indices.size() + << " triangles: end"; - return result; + return result; } -std::vector calculate_polygon_angles_at_vertices(const Polygon &polygon, const std::vector &lengths, float min_arm_length) -{ - std::vector result(polygon.size()); +std::vector calculate_polygon_angles_at_vertices(const Polygon &polygon, const std::vector &lengths, + float min_arm_length) { + std::vector result(polygon.size()); - if (polygon.size() == 1) { result[0] = 0.0f; } + if (polygon.size() == 1) { + result[0] = 0.0f; + } - size_t idx_prev = 0; - size_t idx_curr = 0; - size_t idx_next = 0; + size_t idx_prev = 0; + size_t idx_curr = 0; + size_t idx_next = 0; - float distance_to_prev = 0; - float distance_to_next = 0; + float distance_to_prev = 0; + float distance_to_next = 0; - // push idx_prev far enough back as initialization - while (distance_to_prev < min_arm_length) { - idx_prev = Slic3r::prev_idx_modulo(idx_prev, polygon.size()); - distance_to_prev += lengths[idx_prev]; + //push idx_prev far enough back as initialization + while (distance_to_prev < min_arm_length) { + idx_prev = Slic3r::prev_idx_modulo(idx_prev, polygon.size()); + distance_to_prev += lengths[idx_prev]; + } + + for (size_t _i = 0; _i < polygon.size(); ++_i) { + // pull idx_prev to current as much as possible, while respecting the min_arm_length + while (distance_to_prev - lengths[idx_prev] > min_arm_length) { + distance_to_prev -= lengths[idx_prev]; + idx_prev = Slic3r::next_idx_modulo(idx_prev, polygon.size()); } - for (size_t _i = 0; _i < polygon.size(); ++_i) { - // pull idx_prev to current as much as possible, while respecting the min_arm_length - while (distance_to_prev - lengths[idx_prev] > min_arm_length) { - distance_to_prev -= lengths[idx_prev]; - idx_prev = Slic3r::next_idx_modulo(idx_prev, polygon.size()); - } - - // push idx_next forward as far as needed - while (distance_to_next < min_arm_length) { - distance_to_next += lengths[idx_next]; - idx_next = Slic3r::next_idx_modulo(idx_next, polygon.size()); - } - - // Calculate angle between idx_prev, idx_curr, idx_next. - const Point &p0 = polygon.points[idx_prev]; - const Point &p1 = polygon.points[idx_curr]; - const Point &p2 = polygon.points[idx_next]; - result[idx_curr] = float(angle(p1 - p0, p2 - p1)); - - // increase idx_curr by one - float curr_distance = lengths[idx_curr]; - idx_curr++; - distance_to_prev += curr_distance; - distance_to_next -= curr_distance; + //push idx_next forward as far as needed + while (distance_to_next < min_arm_length) { + distance_to_next += lengths[idx_next]; + idx_next = Slic3r::next_idx_modulo(idx_next, polygon.size()); } - return result; + // Calculate angle between idx_prev, idx_curr, idx_next. + const Point &p0 = polygon.points[idx_prev]; + const Point &p1 = polygon.points[idx_curr]; + const Point &p2 = polygon.points[idx_next]; + result[idx_curr] = float(angle(p1 - p0, p2 - p1)); + + // increase idx_curr by one + float curr_distance = lengths[idx_curr]; + idx_curr++; + distance_to_prev += curr_distance; + distance_to_next -= curr_distance; + } + + return result; } -struct CoordinateFunctor -{ - const std::vector *coordinates; - CoordinateFunctor(const std::vector *coords) : coordinates(coords) {} - CoordinateFunctor() : coordinates(nullptr) {} +struct CoordinateFunctor { + const std::vector *coordinates; + CoordinateFunctor(const std::vector *coords) : + coordinates(coords) { + } + CoordinateFunctor() : + coordinates(nullptr) { + } - const float &operator()(size_t idx, size_t dim) const { return coordinates->operator[](idx)[dim]; } + const float& operator()(size_t idx, size_t dim) const { + return coordinates->operator [](idx)[dim]; + } }; // structure to store global information about the model - occlusion hits, enforcers, blockers -struct GlobalModelInfo -{ - TriangleSetSamples mesh_samples; - std::vector mesh_samples_visibility; - CoordinateFunctor mesh_samples_coordinate_functor; - KDTreeIndirect<3, float, CoordinateFunctor> mesh_samples_tree{CoordinateFunctor{}}; - float mesh_samples_radius; +struct GlobalModelInfo { + TriangleSetSamples mesh_samples; + std::vector mesh_samples_visibility; + CoordinateFunctor mesh_samples_coordinate_functor; + KDTreeIndirect<3, float, CoordinateFunctor> mesh_samples_tree { CoordinateFunctor { } }; + float mesh_samples_radius; - indexed_triangle_set enforcers; - indexed_triangle_set blockers; - AABBTreeIndirect::Tree<3, float> enforcers_tree; - AABBTreeIndirect::Tree<3, float> blockers_tree; + indexed_triangle_set enforcers; + indexed_triangle_set blockers; + AABBTreeIndirect::Tree<3, float> enforcers_tree; + AABBTreeIndirect::Tree<3, float> blockers_tree; - bool is_enforced(const Vec3f &position, float radius) const - { - if (enforcers.empty()) { return false; } - float radius_sqr = radius * radius; - return AABBTreeIndirect::is_any_triangle_in_radius(enforcers.vertices, enforcers.indices, enforcers_tree, position, radius_sqr); + bool is_enforced(const Vec3f &position, float radius) const { + if (enforcers.empty()) { + return false; + } + float radius_sqr = radius * radius; + return AABBTreeIndirect::is_any_triangle_in_radius(enforcers.vertices, enforcers.indices, + enforcers_tree, position, radius_sqr); + } + + bool is_blocked(const Vec3f &position, float radius) const { + if (blockers.empty()) { + return false; + } + float radius_sqr = radius * radius; + return AABBTreeIndirect::is_any_triangle_in_radius(blockers.vertices, blockers.indices, + blockers_tree, position, radius_sqr); + } + + float calculate_point_visibility(const Vec3f &position) const { + std::vector points = find_nearby_points(mesh_samples_tree, position, mesh_samples_radius); + if (points.empty()) { + return 1.0f; } - bool is_blocked(const Vec3f &position, float radius) const - { - if (blockers.empty()) { return false; } - float radius_sqr = radius * radius; - return AABBTreeIndirect::is_any_triangle_in_radius(blockers.vertices, blockers.indices, blockers_tree, position, radius_sqr); + auto compute_dist_to_plane = [](const Vec3f &position, const Vec3f &plane_origin, const Vec3f &plane_normal) { + Vec3f orig_to_point = position - plane_origin; + return std::abs(orig_to_point.dot(plane_normal)); + }; + + float total_weight = 0; + float total_visibility = 0; + for (size_t i = 0; i < points.size(); ++i) { + size_t sample_idx = points[i]; + + Vec3f sample_point = this->mesh_samples.positions[sample_idx]; + Vec3f sample_normal = this->mesh_samples.normals[sample_idx]; + + float weight = mesh_samples_radius - compute_dist_to_plane(position, sample_point, sample_normal); + weight += (mesh_samples_radius - (position - sample_point).norm()); + total_visibility += weight * mesh_samples_visibility[sample_idx]; + total_weight += weight; } - float calculate_point_visibility(const Vec3f &position) const - { - std::vector points = find_nearby_points(mesh_samples_tree, position, mesh_samples_radius); - if (points.empty()) { return 1.0f; } + return total_visibility / total_weight; - auto compute_dist_to_plane = [](const Vec3f &position, const Vec3f &plane_origin, const Vec3f &plane_normal) { - Vec3f orig_to_point = position - plane_origin; - return std::abs(orig_to_point.dot(plane_normal)); - }; - - float total_weight = 0; - float total_visibility = 0; - for (size_t i = 0; i < points.size(); ++i) { - size_t sample_idx = points[i]; - - Vec3f sample_point = this->mesh_samples.positions[sample_idx]; - Vec3f sample_normal = this->mesh_samples.normals[sample_idx]; - - float weight = mesh_samples_radius - compute_dist_to_plane(position, sample_point, sample_normal); - weight += (mesh_samples_radius - (position - sample_point).norm()); - total_visibility += weight * mesh_samples_visibility[sample_idx]; - total_weight += weight; - } - - return total_visibility / total_weight; - } + } #ifdef DEBUG_FILES - void debug_export(const indexed_triangle_set &obj_mesh) const + void debug_export(const indexed_triangle_set &obj_mesh) const { + + indexed_triangle_set divided_mesh = obj_mesh; + Slic3r::CNumericLocalesSetter locales_setter; + { - indexed_triangle_set divided_mesh = obj_mesh; - Slic3r::CNumericLocalesSetter locales_setter; + auto filename = debug_out_path("visiblity.obj"); + FILE *fp = boost::nowide::fopen(filename.c_str(), "w"); + if (fp == nullptr) { + BOOST_LOG_TRIVIAL(error) + << "stl_write_obj: Couldn't open " << filename << " for writing"; + return; + } - { - auto filename = debug_out_path("visiblity.obj"); - FILE *fp = boost::nowide::fopen(filename.c_str(), "w"); - if (fp == nullptr) { - BOOST_LOG_TRIVIAL(error) << "stl_write_obj: Couldn't open " << filename << " for writing"; - return; - } - - for (size_t i = 0; i < divided_mesh.vertices.size(); ++i) { - float visibility = calculate_point_visibility(divided_mesh.vertices[i]); - Vec3f color = value_to_rgbf(0.0f, 1.0f, visibility); - fprintf(fp, "v %f %f %f %f %f %f\n", divided_mesh.vertices[i](0), divided_mesh.vertices[i](1), divided_mesh.vertices[i](2), color(0), color(1), color(2)); - } - for (size_t i = 0; i < divided_mesh.indices.size(); ++i) - fprintf(fp, "f %d %d %d\n", divided_mesh.indices[i][0] + 1, divided_mesh.indices[i][1] + 1, divided_mesh.indices[i][2] + 1); - fclose(fp); - } - - { - auto filename = debug_out_path("visiblity_samples.obj"); - FILE *fp = boost::nowide::fopen(filename.c_str(), "w"); - if (fp == nullptr) { - BOOST_LOG_TRIVIAL(error) << "stl_write_obj: Couldn't open " << filename << " for writing"; - return; - } - - for (size_t i = 0; i < mesh_samples.positions.size(); ++i) { - float visibility = mesh_samples_visibility[i]; - Vec3f color = value_to_rgbf(0.0f, 1.0f, visibility); - fprintf(fp, "v %f %f %f %f %f %f\n", mesh_samples.positions[i](0), mesh_samples.positions[i](1), mesh_samples.positions[i](2), color(0), color(1), color(2)); - } - fclose(fp); - } + for (size_t i = 0; i < divided_mesh.vertices.size(); ++i) { + float visibility = calculate_point_visibility(divided_mesh.vertices[i]); + Vec3f color = value_to_rgbf(0.0f, 1.0f, visibility); + fprintf(fp, "v %f %f %f %f %f %f\n", + divided_mesh.vertices[i](0), divided_mesh.vertices[i](1), divided_mesh.vertices[i](2), + color(0), color(1), color(2)); + } + for (size_t i = 0; i < divided_mesh.indices.size(); ++i) + fprintf(fp, "f %d %d %d\n", divided_mesh.indices[i][0] + 1, divided_mesh.indices[i][1] + 1, + divided_mesh.indices[i][2] + 1); + fclose(fp); } + + { + auto filename = debug_out_path("visiblity_samples.obj"); + FILE *fp = boost::nowide::fopen(filename.c_str(), "w"); + if (fp == nullptr) { + BOOST_LOG_TRIVIAL(error) + << "stl_write_obj: Couldn't open " << filename << " for writing"; + return; + } + + for (size_t i = 0; i < mesh_samples.positions.size(); ++i) { + float visibility = mesh_samples_visibility[i]; + Vec3f color = value_to_rgbf(0.0f, 1.0f, visibility); + fprintf(fp, "v %f %f %f %f %f %f\n", + mesh_samples.positions[i](0), mesh_samples.positions[i](1), mesh_samples.positions[i](2), + color(0), color(1), color(2)); + } + fclose(fp); + } + + } #endif -}; +} +; -// Extract perimeter polygons of the given layer -Polygons extract_perimeter_polygons(const Layer *layer, const SeamPosition configured_seam_preference, std::vector &corresponding_regions_out) -{ - Polygons polygons; - for (const LayerRegion *layer_region : layer->regions()) { - for (const ExtrusionEntity *ex_entity : layer_region->perimeters.entities) { - if (ex_entity->is_collection()) { // collection of inner, outer, and overhang perimeters - for (const ExtrusionEntity *perimeter : static_cast(ex_entity)->entities) { - ExtrusionRole role = perimeter->role(); - if (perimeter->is_loop()) { - for (const ExtrusionPath &path : static_cast(perimeter)->paths) { - if (path.role() == ExtrusionRole::erExternalPerimeter) { role = ExtrusionRole::erExternalPerimeter; } - } - } - - if (role == ExtrusionRole::erExternalPerimeter || - (is_perimeter(role) && configured_seam_preference == spRandom)) { // for random seam alignment, extract all perimeters - Points p; - perimeter->collect_points(p); - polygons.emplace_back(std::move(p)); - corresponding_regions_out.push_back(layer_region); - } - } - if (polygons.empty()) { - Points p; - ex_entity->collect_points(p); - polygons.emplace_back(std::move(p)); - corresponding_regions_out.push_back(layer_region); - } - } else { - Points p; - ex_entity->collect_points(p); - polygons.emplace_back(std::move(p)); - corresponding_regions_out.push_back(layer_region); +//Extract perimeter polygons of the given layer +Polygons extract_perimeter_polygons(const Layer *layer, std::vector &corresponding_regions_out) { + Polygons polygons; + for (const LayerRegion *layer_region : layer->regions()) { + for (const ExtrusionEntity *ex_entity : layer_region->perimeters.entities) { + if (ex_entity->is_collection()) { //collection of inner, outer, and overhang perimeters + for (const ExtrusionEntity *perimeter : static_cast(ex_entity)->entities) { + ExtrusionRole role = perimeter->role(); + if (perimeter->is_loop()) { + for (const ExtrusionPath &path : static_cast(perimeter)->paths) { + if (path.role() == ExtrusionRole::erExternalPerimeter) { + role = ExtrusionRole::erExternalPerimeter; + } } + } + + if (role == ExtrusionRole::erExternalPerimeter) { + Points p; + perimeter->collect_points(p); + polygons.emplace_back(std::move(p)); + corresponding_regions_out.push_back(layer_region); + } } + if (polygons.empty()) { + Points p; + ex_entity->collect_points(p); + polygons.emplace_back(std::move(p)); + corresponding_regions_out.push_back(layer_region); + } + } else { + Points p; + ex_entity->collect_points(p); + polygons.emplace_back(std::move(p)); + corresponding_regions_out.push_back(layer_region); + } } + } - if (polygons.empty()) { // If there are no perimeter polygons for whatever reason (disabled perimeters .. ) insert dummy point - // it is easier than checking everywhere if the layer is not emtpy, no seam will be placed to this layer anyway - polygons.emplace_back(std::vector{Point{0, 0}}); - corresponding_regions_out.push_back(nullptr); - } + if (polygons.empty()) { // If there are no perimeter polygons for whatever reason (disabled perimeters .. ) insert dummy point + // it is easier than checking everywhere if the layer is not emtpy, no seam will be placed to this layer anyway + polygons.emplace_back(Points{ { 0, 0 } }); + corresponding_regions_out.push_back(nullptr); + } - return polygons; + return polygons; } // Insert SeamCandidates created from perimeter polygons in to the result vector. // Compute its type (Enfrocer,Blocker), angle, and position -// each SeamCandidate also contains pointer to shared Perimeter structure representing the polygon +//each SeamCandidate also contains pointer to shared Perimeter structure representing the polygon // if Custom Seam modifiers are present, oversamples the polygon if necessary to better fit user intentions -void process_perimeter_polygon( - const Polygon &orig_polygon, float z_coord, const LayerRegion *region, const GlobalModelInfo &global_model_info, PrintObjectSeamData::LayerSeams &result) -{ - if (orig_polygon.size() == 0) { return; } - Polygon polygon = orig_polygon; - bool was_clockwise = polygon.make_counter_clockwise(); - float angle_arm_len = region != nullptr ? region->flow(FlowRole::frExternalPerimeter).nozzle_diameter() : 0.5f; +void process_perimeter_polygon(const Polygon &orig_polygon, float z_coord, const LayerRegion *region, + const GlobalModelInfo &global_model_info, PrintObjectSeamData::LayerSeams &result) { + if (orig_polygon.size() == 0) { + return; + } + Polygon polygon = orig_polygon; + bool was_clockwise = polygon.make_counter_clockwise(); + float angle_arm_len = region != nullptr ? region->flow(FlowRole::frExternalPerimeter).nozzle_diameter() : 0.5f; - std::vector lengths{}; - for (size_t point_idx = 0; point_idx < polygon.size() - 1; ++point_idx) { lengths.push_back((unscale(polygon[point_idx]) - unscale(polygon[point_idx + 1])).norm()); } - lengths.push_back(std::max((unscale(polygon[0]) - unscale(polygon[polygon.size() - 1])).norm(), 0.1)); - std::vector polygon_angles = calculate_polygon_angles_at_vertices(polygon, lengths, angle_arm_len); + std::vector lengths { }; + for (size_t point_idx = 0; point_idx < polygon.size() - 1; ++point_idx) { + lengths.push_back((unscale(polygon[point_idx]) - unscale(polygon[point_idx + 1])).norm()); + } + lengths.push_back(std::max((unscale(polygon[0]) - unscale(polygon[polygon.size() - 1])).norm(), 0.1)); + std::vector polygon_angles = calculate_polygon_angles_at_vertices(polygon, lengths, + angle_arm_len); - result.perimeters.push_back({}); - Perimeter &perimeter = result.perimeters.back(); + result.perimeters.push_back( { }); + Perimeter &perimeter = result.perimeters.back(); - std::queue orig_polygon_points{}; - for (size_t index = 0; index < polygon.size(); ++index) { - Vec2f unscaled_p = unscale(polygon[index]).cast(); - orig_polygon_points.emplace(unscaled_p.x(), unscaled_p.y(), z_coord); + std::queue orig_polygon_points { }; + for (size_t index = 0; index < polygon.size(); ++index) { + Vec2f unscaled_p = unscale(polygon[index]).cast(); + orig_polygon_points.emplace(unscaled_p.x(), unscaled_p.y(), z_coord); + } + Vec3f first = orig_polygon_points.front(); + std::queue oversampled_points { }; + size_t orig_angle_index = 0; + perimeter.start_index = result.points.size(); + perimeter.flow_width = region != nullptr ? region->flow(FlowRole::frExternalPerimeter).width() : 0.0f; + bool some_point_enforced = false; + while (!orig_polygon_points.empty() || !oversampled_points.empty()) { + EnforcedBlockedSeamPoint type = EnforcedBlockedSeamPoint::Neutral; + Vec3f position; + float local_ccw_angle = 0; + bool orig_point = false; + if (!oversampled_points.empty()) { + position = oversampled_points.front(); + oversampled_points.pop(); + } else { + position = orig_polygon_points.front(); + orig_polygon_points.pop(); + local_ccw_angle = was_clockwise ? -polygon_angles[orig_angle_index] : polygon_angles[orig_angle_index]; + orig_angle_index++; + orig_point = true; } - Vec3f first = orig_polygon_points.front(); - std::queue oversampled_points{}; - size_t orig_angle_index = 0; - perimeter.start_index = result.points.size(); - perimeter.flow_width = region != nullptr ? region->flow(FlowRole::frExternalPerimeter).width() : 0.0f; - bool some_point_enforced = false; - while (!orig_polygon_points.empty() || !oversampled_points.empty()) { - EnforcedBlockedSeamPoint type = EnforcedBlockedSeamPoint::Neutral; - Vec3f position; - float local_ccw_angle = 0; - bool orig_point = false; - if (!oversampled_points.empty()) { - position = oversampled_points.front(); - oversampled_points.pop(); + + if (global_model_info.is_enforced(position, perimeter.flow_width)) { + type = EnforcedBlockedSeamPoint::Enforced; + } + + if (global_model_info.is_blocked(position, perimeter.flow_width)) { + type = EnforcedBlockedSeamPoint::Blocked; + } + some_point_enforced = some_point_enforced || type == EnforcedBlockedSeamPoint::Enforced; + + if (orig_point) { + Vec3f pos_of_next = orig_polygon_points.empty() ? first : orig_polygon_points.front(); + float distance_to_next = (position - pos_of_next).norm(); + if (global_model_info.is_enforced(position, distance_to_next)) { + Vec3f vec_to_next = (pos_of_next - position).normalized(); + float step_size = SeamPlacer::enforcer_oversampling_distance; + float step = step_size; + while (step < distance_to_next) { + oversampled_points.push(position + vec_to_next * step); + step += step_size; + } + } + } + + result.points.emplace_back(position, perimeter, local_ccw_angle, type); + } + + perimeter.end_index = result.points.size(); + + if (some_point_enforced) { + // We will patches of enforced points (patch: continuous section of enforced points), choose + // the longest patch, and select the middle point or sharp point (depending on the angle) + // this point will have high priority on this perimeter + size_t perimeter_size = perimeter.end_index - perimeter.start_index; + const auto next_index = [&](size_t idx) { + return perimeter.start_index + Slic3r::next_idx_modulo(idx - perimeter.start_index, perimeter_size); + }; + + std::vector patches_starts_ends; + for (size_t i = perimeter.start_index; i < perimeter.end_index; ++i) { + if (result.points[i].type != EnforcedBlockedSeamPoint::Enforced && + result.points[next_index(i)].type == EnforcedBlockedSeamPoint::Enforced) { + patches_starts_ends.push_back(next_index(i)); + } + if (result.points[i].type == EnforcedBlockedSeamPoint::Enforced && + result.points[next_index(i)].type != EnforcedBlockedSeamPoint::Enforced) { + patches_starts_ends.push_back(next_index(i)); + } + } + //if patches_starts_ends are empty, it means that the whole perimeter is enforced.. don't do anything in that case + if (!patches_starts_ends.empty()) { + //if the first point in the patches is not enforced, it marks a patch end. in that case, put it to the end and start on next + // to simplify the processing + assert(patches_starts_ends.size() % 2 == 0); + bool start_on_second = false; + if (result.points[patches_starts_ends[0]].type != EnforcedBlockedSeamPoint::Enforced) { + start_on_second = true; + patches_starts_ends.push_back(patches_starts_ends[0]); + } + //now pick the longest patch + std::pair longest_patch { 0, 0 }; + auto patch_len = [perimeter_size](const std::pair &start_end) { + if (start_end.second < start_end.first) { + return start_end.first + (perimeter_size - start_end.second); } else { - position = orig_polygon_points.front(); - orig_polygon_points.pop(); - local_ccw_angle = was_clockwise ? -polygon_angles[orig_angle_index] : polygon_angles[orig_angle_index]; - orig_angle_index++; - orig_point = true; + return start_end.second - start_end.first; } - - if (global_model_info.is_enforced(position, perimeter.flow_width)) { type = EnforcedBlockedSeamPoint::Enforced; } - - if (global_model_info.is_blocked(position, perimeter.flow_width)) { type = EnforcedBlockedSeamPoint::Blocked; } - some_point_enforced = some_point_enforced || type == EnforcedBlockedSeamPoint::Enforced; - - if (orig_point) { - Vec3f pos_of_next = orig_polygon_points.empty() ? first : orig_polygon_points.front(); - float distance_to_next = (position - pos_of_next).norm(); - if (distance_to_next > perimeter.flow_width * perimeter.flow_width * 4) - oversampled_points.push((position + pos_of_next) / 2); - if (global_model_info.is_enforced(position, distance_to_next)) { - Vec3f vec_to_next = (pos_of_next - position).normalized(); - float step_size = SeamPlacer::enforcer_oversampling_distance; - float step = step_size; - while (step < distance_to_next) { - oversampled_points.push(position + vec_to_next * step); - step += step_size; - } - } + }; + for (size_t patch_idx = start_on_second ? 1 : 0; patch_idx < patches_starts_ends.size(); patch_idx += 2) { + std::pair current_patch { patches_starts_ends[patch_idx], patches_starts_ends[patch_idx + + 1] }; + if (patch_len(longest_patch) < patch_len(current_patch)) { + longest_patch = current_patch; } - - result.points.emplace_back(position, perimeter, local_ccw_angle, type); + } + std::vector viable_points_indices; + std::vector large_angle_points_indices; + for (size_t point_idx = longest_patch.first; point_idx != longest_patch.second; + point_idx = next_index(point_idx)) { + viable_points_indices.push_back(point_idx); + if (std::abs(result.points[point_idx].local_ccw_angle) + > SeamPlacer::sharp_angle_snapping_threshold) { + large_angle_points_indices.push_back(point_idx); + } + } + assert(viable_points_indices.size() > 0); + if (large_angle_points_indices.empty()) { + size_t central_idx = viable_points_indices[viable_points_indices.size() / 2]; + result.points[central_idx].central_enforcer = true; + } else { + size_t central_idx = large_angle_points_indices.size() / 2; + result.points[large_angle_points_indices[central_idx]].central_enforcer = true; + } } + } - perimeter.end_index = result.points.size(); - - if (some_point_enforced) { - // We will patches of enforced points (patch: continuous section of enforced points), choose - // the longest patch, and select the middle point or sharp point (depending on the angle) - // this point will have high priority on this perimeter - size_t perimeter_size = perimeter.end_index - perimeter.start_index; - const auto next_index = [&](size_t idx) { return perimeter.start_index + Slic3r::next_idx_modulo(idx - perimeter.start_index, perimeter_size); }; - - std::vector patches_starts_ends; - for (size_t i = perimeter.start_index; i < perimeter.end_index; ++i) { - if (result.points[i].type != EnforcedBlockedSeamPoint::Enforced && result.points[next_index(i)].type == EnforcedBlockedSeamPoint::Enforced) { - patches_starts_ends.push_back(next_index(i)); - } - if (result.points[i].type == EnforcedBlockedSeamPoint::Enforced && result.points[next_index(i)].type != EnforcedBlockedSeamPoint::Enforced) { - patches_starts_ends.push_back(next_index(i)); - } - } - // if patches_starts_ends are empty, it means that the whole perimeter is enforced.. don't do anything in that case - if (!patches_starts_ends.empty()) { - // if the first point in the patches is not enforced, it marks a patch end. in that case, put it to the end and start on next - // to simplify the processing - assert(patches_starts_ends.size() % 2 == 0); - bool start_on_second = false; - if (result.points[patches_starts_ends[0]].type != EnforcedBlockedSeamPoint::Enforced) { - start_on_second = true; - patches_starts_ends.push_back(patches_starts_ends[0]); - } - // now pick the longest patch - std::pair longest_patch{0, 0}; - auto patch_len = [perimeter_size](const std::pair &start_end) { - if (start_end.second < start_end.first) { - return start_end.first + (perimeter_size - start_end.second); - } else { - return start_end.second - start_end.first; - } - }; - for (size_t patch_idx = start_on_second ? 1 : 0; patch_idx < patches_starts_ends.size(); patch_idx += 2) { - std::pair current_patch{patches_starts_ends[patch_idx], patches_starts_ends[patch_idx + 1]}; - if (patch_len(longest_patch) < patch_len(current_patch)) { longest_patch = current_patch; } - } - std::vector viable_points_indices; - std::vector large_angle_points_indices; - for (size_t point_idx = longest_patch.first; point_idx != longest_patch.second; point_idx = next_index(point_idx)) { - viable_points_indices.push_back(point_idx); - if (std::abs(result.points[point_idx].local_ccw_angle) > SeamPlacer::sharp_angle_snapping_threshold) { large_angle_points_indices.push_back(point_idx); } - } - assert(viable_points_indices.size() > 0); - if (large_angle_points_indices.empty()) { - size_t central_idx = viable_points_indices[viable_points_indices.size() / 2]; - result.points[central_idx].central_enforcer = true; - } else { - size_t central_idx = large_angle_points_indices.size() / 2; - result.points[large_angle_points_indices[central_idx]].central_enforcer = true; - } - } - } } // Get index of previous and next perimeter point of the layer. Because SeamCandidates of all polygons of the given layer // are sequentially stored in the vector, each perimeter contains info about start and end index. These vales are used to // deduce index of previous and next neigbour in the corresponding perimeter. -std::pair find_previous_and_next_perimeter_point(const std::vector &perimeter_points, size_t point_index) -{ - const SeamCandidate ¤t = perimeter_points[point_index]; - int prev = point_index - 1; // for majority of points, it is true that neighbours lie behind and in front of them in the vector - int next = point_index + 1; +std::pair find_previous_and_next_perimeter_point(const std::vector &perimeter_points, + size_t point_index) { + const SeamCandidate ¤t = perimeter_points[point_index]; + int prev = point_index - 1; //for majority of points, it is true that neighbours lie behind and in front of them in the vector + int next = point_index + 1; - if (point_index == current.perimeter.start_index) { - // if point_index is equal to start, it means that the previous neighbour is at the end - prev = current.perimeter.end_index; - } + if (point_index == current.perimeter.start_index) { + // if point_index is equal to start, it means that the previous neighbour is at the end + prev = current.perimeter.end_index; + } - if (point_index == current.perimeter.end_index - 1) { - // if point_index is equal to end, than next neighbour is at the start - next = current.perimeter.start_index; - } + if (point_index == current.perimeter.end_index - 1) { + // if point_index is equal to end, than next neighbour is at the start + next = current.perimeter.start_index; + } - assert(prev >= 0); - assert(next >= 0); - return {size_t(prev), size_t(next)}; + assert(prev >= 0); + assert(next >= 0); + return {size_t(prev),size_t(next)}; } // Computes all global model info - transforms object, performs raycasting -void compute_global_occlusion(GlobalModelInfo &result, const PrintObject *po, std::function throw_if_canceled) -{ - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather occlusion meshes: start"; - auto obj_transform = po->trafo_centered(); - indexed_triangle_set triangle_set; - indexed_triangle_set negative_volumes_set; - // add all parts - for (const ModelVolume *model_volume : po->model_object()->volumes) { - if (model_volume->type() == ModelVolumeType::MODEL_PART || model_volume->type() == ModelVolumeType::NEGATIVE_VOLUME) { - auto model_transformation = model_volume->get_matrix(); - indexed_triangle_set model_its = model_volume->mesh().its; - its_transform(model_its, model_transformation); - if (model_volume->type() == ModelVolumeType::MODEL_PART) { - its_merge(triangle_set, model_its); - } else { - its_merge(negative_volumes_set, model_its); - } - } +void compute_global_occlusion(GlobalModelInfo &result, const PrintObject *po, + std::function throw_if_canceled) { + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: gather occlusion meshes: start"; + auto obj_transform = po->trafo_centered(); + indexed_triangle_set triangle_set; + indexed_triangle_set negative_volumes_set; + //add all parts + for (const ModelVolume *model_volume : po->model_object()->volumes) { + if (model_volume->type() == ModelVolumeType::MODEL_PART + || model_volume->type() == ModelVolumeType::NEGATIVE_VOLUME) { + auto model_transformation = model_volume->get_matrix(); + indexed_triangle_set model_its = model_volume->mesh().its; + its_transform(model_its, model_transformation); + if (model_volume->type() == ModelVolumeType::MODEL_PART) { + its_merge(triangle_set, model_its); + } else { + its_merge(negative_volumes_set, model_its); + } } - throw_if_canceled(); + } + throw_if_canceled(); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather occlusion meshes: end"; + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: gather occlusion meshes: end"; - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: decimate: start"; - its_short_edge_collpase(triangle_set, 25000); - its_short_edge_collpase(negative_volumes_set, 25000); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: decimate: start"; + its_short_edge_collpase(triangle_set, SeamPlacer::fast_decimation_triangle_count_target); + its_short_edge_collpase(negative_volumes_set, SeamPlacer::fast_decimation_triangle_count_target); - size_t negative_volumes_start_index = triangle_set.indices.size(); - its_merge(triangle_set, negative_volumes_set); - its_transform(triangle_set, obj_transform); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: decimate: end"; + size_t negative_volumes_start_index = triangle_set.indices.size(); + its_merge(triangle_set, negative_volumes_set); + its_transform(triangle_set, obj_transform); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: decimate: end"; - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: Compute visibility sample points: start"; + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: Compute visibility sample points: start"; - result.mesh_samples = sample_its_uniform_parallel(SeamPlacer::raycasting_visibility_samples_count, triangle_set); - result.mesh_samples_coordinate_functor = CoordinateFunctor(&result.mesh_samples.positions); - result.mesh_samples_tree = KDTreeIndirect<3, float, CoordinateFunctor>(result.mesh_samples_coordinate_functor, result.mesh_samples.positions.size()); + result.mesh_samples = sample_its_uniform_parallel(SeamPlacer::raycasting_visibility_samples_count, + triangle_set); + result.mesh_samples_coordinate_functor = CoordinateFunctor(&result.mesh_samples.positions); + result.mesh_samples_tree = KDTreeIndirect<3, float, CoordinateFunctor>(result.mesh_samples_coordinate_functor, + result.mesh_samples.positions.size()); - // The following code determines search area for random visibility samples on the mesh when calculating visibility of each perimeter point - // number of random samples in the given radius (area) is approximately poisson distribution - // to compute ideal search radius (area), we use exponential distribution (complementary distr to poisson) - // parameters of exponential distribution to compute area that will have with probability="probability" more than given number of samples="samples" - float probability = 0.9f; - float samples = 4; - float density = SeamPlacer::raycasting_visibility_samples_count / result.mesh_samples.total_area; - // exponential probability distrubtion function is : f(x) = P(X > x) = e^(l*x) where l is the rate parameter (computed as 1/u where u is mean value) - // probability that sampled area A with S samples contains more than samples count: - // P(S > samples in A) = e^-(samples/(density*A)); express A: - float search_area = samples / (-logf(probability) * density); - float search_radius = sqrt(search_area / PI); - result.mesh_samples_radius = search_radius; + // The following code determines search area for random visibility samples on the mesh when calculating visibility of each perimeter point + // number of random samples in the given radius (area) is approximately poisson distribution + // to compute ideal search radius (area), we use exponential distribution (complementary distr to poisson) + // parameters of exponential distribution to compute area that will have with probability="probability" more than given number of samples="samples" + float probability = 0.9f; + float samples = 4; + float density = SeamPlacer::raycasting_visibility_samples_count / result.mesh_samples.total_area; + // exponential probability distrubtion function is : f(x) = P(X > x) = e^(l*x) where l is the rate parameter (computed as 1/u where u is mean value) + // probability that sampled area A with S samples contains more than samples count: + // P(S > samples in A) = e^-(samples/(density*A)); express A: + float search_area = samples / (-logf(probability) * density); + float search_radius = sqrt(search_area / PI); + result.mesh_samples_radius = search_radius; - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: Compute visiblity sample points: end"; - throw_if_canceled(); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: Compute visiblity sample points: end"; + throw_if_canceled(); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: Mesh sample raidus: " << result.mesh_samples_radius; + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: Mesh sample raidus: " << result.mesh_samples_radius; - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB tree: start"; - auto raycasting_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(triangle_set.vertices, triangle_set.indices); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: build AABB tree: start"; + auto raycasting_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(triangle_set.vertices, + triangle_set.indices); - throw_if_canceled(); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB tree: end"; - result.mesh_samples_visibility = raycast_visibility(raycasting_tree, triangle_set, result.mesh_samples, negative_volumes_start_index); - throw_if_canceled(); + throw_if_canceled(); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: build AABB tree: end"; + result.mesh_samples_visibility = raycast_visibility(raycasting_tree, triangle_set, result.mesh_samples, + negative_volumes_start_index); + throw_if_canceled(); #ifdef DEBUG_FILES - result.debug_export(triangle_set); + result.debug_export(triangle_set); #endif } -void gather_enforcers_blockers(GlobalModelInfo &result, const PrintObject *po) -{ - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB trees for raycasting enforcers/blockers: start"; +void gather_enforcers_blockers(GlobalModelInfo &result, const PrintObject *po) { + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: build AABB trees for raycasting enforcers/blockers: start"; - auto obj_transform = po->trafo_centered(); + auto obj_transform = po->trafo_centered(); - for (const ModelVolume *mv : po->model_object()->volumes) { - if (mv->is_seam_painted()) { - auto model_transformation = obj_transform * mv->get_matrix(); + for (const ModelVolume *mv : po->model_object()->volumes) { + if (mv->is_seam_painted()) { + auto model_transformation = obj_transform * mv->get_matrix(); - indexed_triangle_set enforcers = mv->seam_facets.get_facets(*mv, EnforcerBlockerType::ENFORCER); - its_transform(enforcers, model_transformation); - its_merge(result.enforcers, enforcers); + indexed_triangle_set enforcers = mv->seam_facets.get_facets(*mv, EnforcerBlockerType::ENFORCER); + its_transform(enforcers, model_transformation); + its_merge(result.enforcers, enforcers); - indexed_triangle_set blockers = mv->seam_facets.get_facets(*mv, EnforcerBlockerType::BLOCKER); - its_transform(blockers, model_transformation); - its_merge(result.blockers, blockers); - } + indexed_triangle_set blockers = mv->seam_facets.get_facets(*mv, EnforcerBlockerType::BLOCKER); + its_transform(blockers, model_transformation); + its_merge(result.blockers, blockers); } + } - result.enforcers_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(result.enforcers.vertices, result.enforcers.indices); - result.blockers_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(result.blockers.vertices, result.blockers.indices); + result.enforcers_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(result.enforcers.vertices, + result.enforcers.indices); + result.blockers_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(result.blockers.vertices, + result.blockers.indices); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB trees for raycasting enforcers/blockers: end"; + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: build AABB trees for raycasting enforcers/blockers: end"; } -struct SeamComparator -{ - SeamPosition setup; - float angle_importance; - explicit SeamComparator(SeamPosition setup) : setup(setup) - { - angle_importance = setup == spNearest ? SeamPlacer::angle_importance_nearest : SeamPlacer::angle_importance_aligned; +struct SeamComparator { + SeamPosition setup; + float angle_importance; + explicit SeamComparator(SeamPosition setup) : + setup(setup) { + angle_importance = + setup == spNearest ? SeamPlacer::angle_importance_nearest : SeamPlacer::angle_importance_aligned; + } + + // Standard comparator, must respect the requirements of comparators (e.g. give same result on same inputs) for sorting usage + // should return if a is better seamCandidate than b + bool is_first_better(const SeamCandidate &a, const SeamCandidate &b, const Vec2f &preffered_location = Vec2f { 0.0f, + 0.0f }) const { + if (setup == SeamPosition::spAligned && a.central_enforcer != b.central_enforcer) { + return a.central_enforcer; } - // Standard comparator, must respect the requirements of comparators (e.g. give same result on same inputs) for sorting usage - // should return if a is better seamCandidate than b - bool is_first_better(const SeamCandidate &a, const SeamCandidate &b, const Vec2f &preffered_location = Vec2f{0.0f, 0.0f}) const - { - if (setup == SeamPosition::spAligned && a.central_enforcer != b.central_enforcer) { return a.central_enforcer; } - - // Blockers/Enforcers discrimination, top priority - if (a.type != b.type) { return a.type > b.type; } - - // avoid overhangs - if (a.overhang > 0.0f || b.overhang > 0.0f) { return a.overhang < b.overhang; } - - // prefer hidden points (more than 0.5 mm inside) - if (a.embedded_distance < -0.5f && b.embedded_distance > -0.5f) { return true; } - if (b.embedded_distance < -0.5f && a.embedded_distance > -0.5f) { return false; } - - if (setup == SeamPosition::spRear && a.position.y() != b.position.y()) { return a.position.y() > b.position.y(); } - - float distance_penalty_a = 0.0f; - float distance_penalty_b = 0.0f; - if (setup == spNearest) { - distance_penalty_a = 1.0f - gauss((a.position.head<2>() - preffered_location).norm(), 0.0f, 1.0f, 0.005f); - distance_penalty_b = 1.0f - gauss((b.position.head<2>() - preffered_location).norm(), 0.0f, 1.0f, 0.005f); - } - - // the penalites are kept close to range [0-1.x] however, it should not be relied upon - float penalty_a = a.overhang + a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle) + distance_penalty_a; - float penalty_b = b.overhang + b.visibility + angle_importance * compute_angle_penalty(b.local_ccw_angle) + distance_penalty_b; - - return penalty_a < penalty_b; + // Blockers/Enforcers discrimination, top priority + if (a.type != b.type) { + return a.type > b.type; } - // Comparator used during alignment. If there is close potential aligned point, it is compared to the current - // seam point of the perimeter, to find out if the aligned point is not much worse than the current seam - // Also used by the random seam generator. - bool is_first_not_much_worse(const SeamCandidate &a, const SeamCandidate &b) const - { - // Blockers/Enforcers discrimination, top priority - if (setup == SeamPosition::spAligned && a.central_enforcer != b.central_enforcer) { - // Prefer centers of enforcers. - return a.central_enforcer; - } - - if (a.type == EnforcedBlockedSeamPoint::Enforced) { return true; } - - if (a.type == EnforcedBlockedSeamPoint::Blocked) { return false; } - - if (a.type != b.type) { return a.type > b.type; } - - // avoid overhangs - if ((a.overhang > 0.0f || b.overhang > 0.0f) && abs(a.overhang - b.overhang) > (0.1f * a.perimeter.flow_width)) { return a.overhang < b.overhang; } - - // prefer hidden points (more than 0.5 mm inside) - if (a.embedded_distance < -0.5f && b.embedded_distance > -0.5f) { return true; } - if (b.embedded_distance < -0.5f && a.embedded_distance > -0.5f) { return false; } - - if (setup == SeamPosition::spRandom) { return true; } - - if (setup == SeamPosition::spRear) { return a.position.y() + SeamPlacer::seam_align_score_tolerance * 5.0f > b.position.y(); } - - float penalty_a = a.overhang + a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle); - float penalty_b = b.overhang + b.visibility + angle_importance * compute_angle_penalty(b.local_ccw_angle); - - return penalty_a <= penalty_b || penalty_a - penalty_b < SeamPlacer::seam_align_score_tolerance; + //avoid overhangs + if (a.overhang > 0.0f || b.overhang > 0.0f) { + return a.overhang < b.overhang; } - bool are_similar(const SeamCandidate &a, const SeamCandidate &b) const { return is_first_not_much_worse(a, b) && is_first_not_much_worse(b, a); } + // prefer hidden points (more than 0.5 mm inside) + if (a.embedded_distance < -0.5f && b.embedded_distance > -0.5f) { + return true; + } + if (b.embedded_distance < -0.5f && a.embedded_distance > -0.5f) { + return false; + } + + if (setup == SeamPosition::spRear && a.position.y() != b.position.y()) { + return a.position.y() > b.position.y(); + } + + float distance_penalty_a = 0.0f; + float distance_penalty_b = 0.0f; + if (setup == spNearest) { + distance_penalty_a = 1.0f - gauss((a.position.head<2>() - preffered_location).norm(), 0.0f, 1.0f, 0.005f); + distance_penalty_b = 1.0f - gauss((b.position.head<2>() - preffered_location).norm(), 0.0f, 1.0f, 0.005f); + } + + // the penalites are kept close to range [0-1.x] however, it should not be relied upon + float penalty_a = a.overhang + a.visibility + + angle_importance * compute_angle_penalty(a.local_ccw_angle) + + distance_penalty_a; + float penalty_b = b.overhang + b.visibility + + angle_importance * compute_angle_penalty(b.local_ccw_angle) + + distance_penalty_b; + + return penalty_a < penalty_b; + } + + // Comparator used during alignment. If there is close potential aligned point, it is compared to the current + // seam point of the perimeter, to find out if the aligned point is not much worse than the current seam + // Also used by the random seam generator. + bool is_first_not_much_worse(const SeamCandidate &a, const SeamCandidate &b) const { + // Blockers/Enforcers discrimination, top priority + if (setup == SeamPosition::spAligned && a.central_enforcer != b.central_enforcer) { + // Prefer centers of enforcers. + return a.central_enforcer; + } + + if (a.type == EnforcedBlockedSeamPoint::Enforced) { + return true; + } + + if (a.type == EnforcedBlockedSeamPoint::Blocked) { + return false; + } + + if (a.type != b.type) { + return a.type > b.type; + } + + //avoid overhangs + if ((a.overhang > 0.0f || b.overhang > 0.0f) + && abs(a.overhang - b.overhang) > (0.1f * a.perimeter.flow_width)) { + return a.overhang < b.overhang; + } + + // prefer hidden points (more than 0.5 mm inside) + if (a.embedded_distance < -0.5f && b.embedded_distance > -0.5f) { + return true; + } + if (b.embedded_distance < -0.5f && a.embedded_distance > -0.5f) { + return false; + } + + if (setup == SeamPosition::spRandom) { + return true; + } + + if (setup == SeamPosition::spRear) { + return a.position.y() + SeamPlacer::seam_align_score_tolerance * 5.0f > b.position.y(); + } + + float penalty_a = a.overhang + a.visibility + + angle_importance * compute_angle_penalty(a.local_ccw_angle); + float penalty_b = b.overhang + b.visibility + + angle_importance * compute_angle_penalty(b.local_ccw_angle); + + return penalty_a <= penalty_b || penalty_a - penalty_b < SeamPlacer::seam_align_score_tolerance; + } + + bool are_similar(const SeamCandidate &a, const SeamCandidate &b) const { + return is_first_not_much_worse(a, b) && is_first_not_much_worse(b, a); + } }; #ifdef DEBUG_FILES -void debug_export_points(const std::vector &layers, const BoundingBox &bounding_box, const SeamComparator &comparator) -{ - for (size_t layer_idx = 0; layer_idx < layers.size(); ++layer_idx) { - std::string angles_file_name = debug_out_path(("angles_" + std::to_string(layer_idx) + ".svg").c_str()); - SVG angles_svg{angles_file_name, bounding_box}; - float min_vis = 0; - float max_vis = min_vis; +void debug_export_points(const std::vector &layers, + const BoundingBox &bounding_box, const SeamComparator &comparator) { + for (size_t layer_idx = 0; layer_idx < layers.size(); ++layer_idx) { + std::string angles_file_name = debug_out_path( + ("angles_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG angles_svg { angles_file_name, bounding_box }; + float min_vis = 0; + float max_vis = min_vis; - float min_weight = std::numeric_limits::min(); - float max_weight = min_weight; + float min_weight = std::numeric_limits::min(); + float max_weight = min_weight; - for (const SeamCandidate &point : layers[layer_idx].points) { - Vec3i color = value_to_rgbi(-PI, PI, point.local_ccw_angle); - std::string fill = "rgb(" + std::to_string(color.x()) + "," + std::to_string(color.y()) + "," + std::to_string(color.z()) + ")"; - angles_svg.draw(scaled(Vec2f(point.position.head<2>())), fill); - min_vis = std::min(min_vis, point.visibility); - max_vis = std::max(max_vis, point.visibility); + for (const SeamCandidate &point : layers[layer_idx].points) { + Vec3i color = value_to_rgbi(-PI, PI, point.local_ccw_angle); + std::string fill = "rgb(" + std::to_string(color.x()) + "," + std::to_string(color.y()) + "," + + std::to_string(color.z()) + ")"; + angles_svg.draw(scaled(Vec2f(point.position.head<2>())), fill); + min_vis = std::min(min_vis, point.visibility); + max_vis = std::max(max_vis, point.visibility); - min_weight = std::min(min_weight, -compute_angle_penalty(point.local_ccw_angle)); - max_weight = std::max(max_weight, -compute_angle_penalty(point.local_ccw_angle)); - } + min_weight = std::min(min_weight, -compute_angle_penalty(point.local_ccw_angle)); + max_weight = std::max(max_weight, -compute_angle_penalty(point.local_ccw_angle)); - std::string visiblity_file_name = debug_out_path(("visibility_" + std::to_string(layer_idx) + ".svg").c_str()); - SVG visibility_svg{visiblity_file_name, bounding_box}; - std::string weights_file_name = debug_out_path(("weight_" + std::to_string(layer_idx) + ".svg").c_str()); - SVG weight_svg{weights_file_name, bounding_box}; - std::string overhangs_file_name = debug_out_path(("overhang_" + std::to_string(layer_idx) + ".svg").c_str()); - SVG overhangs_svg{overhangs_file_name, bounding_box}; - - for (const SeamCandidate &point : layers[layer_idx].points) { - Vec3i color = value_to_rgbi(min_vis, max_vis, point.visibility); - std::string visibility_fill = "rgb(" + std::to_string(color.x()) + "," + std::to_string(color.y()) + "," + std::to_string(color.z()) + ")"; - visibility_svg.draw(scaled(Vec2f(point.position.head<2>())), visibility_fill); - - Vec3i weight_color = value_to_rgbi(min_weight, max_weight, -compute_angle_penalty(point.local_ccw_angle)); - std::string weight_fill = "rgb(" + std::to_string(weight_color.x()) + "," + std::to_string(weight_color.y()) + "," + std::to_string(weight_color.z()) + ")"; - weight_svg.draw(scaled(Vec2f(point.position.head<2>())), weight_fill); - - Vec3i overhang_color = value_to_rgbi(-0.5, 0.5, std::clamp(point.overhang, -0.5f, 0.5f)); - std::string overhang_fill = "rgb(" + std::to_string(overhang_color.x()) + "," + std::to_string(overhang_color.y()) + "," + std::to_string(overhang_color.z()) + ")"; - overhangs_svg.draw(scaled(Vec2f(point.position.head<2>())), overhang_fill); - } } + + std::string visiblity_file_name = debug_out_path( + ("visibility_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG visibility_svg { visiblity_file_name, bounding_box }; + std::string weights_file_name = debug_out_path( + ("weight_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG weight_svg { weights_file_name, bounding_box }; + std::string overhangs_file_name = debug_out_path( + ("overhang_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG overhangs_svg { overhangs_file_name, bounding_box }; + + for (const SeamCandidate &point : layers[layer_idx].points) { + Vec3i color = value_to_rgbi(min_vis, max_vis, point.visibility); + std::string visibility_fill = "rgb(" + std::to_string(color.x()) + "," + std::to_string(color.y()) + "," + + std::to_string(color.z()) + ")"; + visibility_svg.draw(scaled(Vec2f(point.position.head<2>())), visibility_fill); + + Vec3i weight_color = value_to_rgbi(min_weight, max_weight, + -compute_angle_penalty(point.local_ccw_angle)); + std::string weight_fill = "rgb(" + std::to_string(weight_color.x()) + "," + std::to_string(weight_color.y()) + + "," + + std::to_string(weight_color.z()) + ")"; + weight_svg.draw(scaled(Vec2f(point.position.head<2>())), weight_fill); + + Vec3i overhang_color = value_to_rgbi(-0.5, 0.5, std::clamp(point.overhang, -0.5f, 0.5f)); + std::string overhang_fill = "rgb(" + std::to_string(overhang_color.x()) + "," + + std::to_string(overhang_color.y()) + + "," + + std::to_string(overhang_color.z()) + ")"; + overhangs_svg.draw(scaled(Vec2f(point.position.head<2>())), overhang_fill); + } + } } #endif // Pick best seam point based on the given comparator -void pick_seam_point(std::vector &perimeter_points, size_t start_index, const SeamComparator &comparator) -{ - size_t end_index = perimeter_points[start_index].perimeter.end_index; +void pick_seam_point(std::vector &perimeter_points, size_t start_index, + const SeamComparator &comparator) { + size_t end_index = perimeter_points[start_index].perimeter.end_index; - size_t seam_index = start_index; - for (size_t index = start_index; index < end_index; ++index) { - if (comparator.is_first_better(perimeter_points[index], perimeter_points[seam_index])) { seam_index = index; } + size_t seam_index = start_index; + for (size_t index = start_index; index < end_index; ++index) { + if (comparator.is_first_better(perimeter_points[index], perimeter_points[seam_index])) { + seam_index = index; } - perimeter_points[start_index].perimeter.seam_index = seam_index; + } + perimeter_points[start_index].perimeter.seam_index = seam_index; } -size_t pick_nearest_seam_point_index(const std::vector &perimeter_points, size_t start_index, const Vec2f &preffered_location) -{ - size_t end_index = perimeter_points[start_index].perimeter.end_index; - SeamComparator comparator{spNearest}; +size_t pick_nearest_seam_point_index(const std::vector &perimeter_points, size_t start_index, + const Vec2f &preffered_location) { + size_t end_index = perimeter_points[start_index].perimeter.end_index; + SeamComparator comparator { spNearest }; - size_t seam_index = start_index; - for (size_t index = start_index; index < end_index; ++index) { - if (comparator.is_first_better(perimeter_points[index], perimeter_points[seam_index], preffered_location)) { seam_index = index; } + size_t seam_index = start_index; + for (size_t index = start_index; index < end_index; ++index) { + if (comparator.is_first_better(perimeter_points[index], perimeter_points[seam_index], preffered_location)) { + seam_index = index; } - return seam_index; + } + return seam_index; } // picks random seam point uniformly, respecting enforcers blockers and overhang avoidance. -void pick_random_seam_point(const std::vector &perimeter_points, size_t start_index) -{ - SeamComparator comparator{spRandom}; +void pick_random_seam_point(const std::vector &perimeter_points, size_t start_index) { + SeamComparator comparator { spRandom }; - // algorithm keeps a list of viable points and their lengths. If it finds a point - // that is much better than the viable_example_index (e.g. better type, no overhang; see is_first_not_much_worse) - // then it throws away stored lists and starts from start - // in the end, the list should contain points with same type (Enforced > Neutral > Blocked) and also only those which are not - // big overhang. - size_t viable_example_index = start_index; - size_t end_index = perimeter_points[start_index].perimeter.end_index; - struct Viable - { - // Candidate seam point index. - size_t index; - float edge_length; - Vec3f edge; - }; - std::vector viables; + // algorithm keeps a list of viable points and their lengths. If it finds a point + // that is much better than the viable_example_index (e.g. better type, no overhang; see is_first_not_much_worse) + // then it throws away stored lists and starts from start + // in the end, the list should contain points with same type (Enforced > Neutral > Blocked) and also only those which are not + // big overhang. + size_t viable_example_index = start_index; + size_t end_index = perimeter_points[start_index].perimeter.end_index; + struct Viable { + // Candidate seam point index. + size_t index; + float edge_length; + Vec3f edge; + }; + std::vector viables; - const Vec3f pseudornd_seed = perimeter_points[viable_example_index].position; - float rand = std::abs(sin(pseudornd_seed.dot(Vec3f(12.9898f, 78.233f, 133.3333f))) * 43758.5453f); - rand = rand - (int) rand; + const Vec3f pseudornd_seed = perimeter_points[viable_example_index].position; + float rand = std::abs(sin(pseudornd_seed.dot(Vec3f(12.9898f,78.233f, 133.3333f))) * 43758.5453f); + rand = rand - (int) rand; - for (size_t index = start_index; index < end_index; ++index) { - if (comparator.are_similar(perimeter_points[index], perimeter_points[viable_example_index])) { - // index ok, push info into viables - Vec3f edge_to_next{perimeter_points[index == end_index - 1 ? start_index : index + 1].position - perimeter_points[index].position}; - float dist_to_next = edge_to_next.norm(); - viables.push_back({index, dist_to_next, edge_to_next}); - } else if (comparator.is_first_not_much_worse(perimeter_points[viable_example_index], perimeter_points[index])) { - // index is worse then viable_example_index, skip this point - } else { - // index is better than viable example index, update example, clear gathered info, start again - // clear up all gathered info, start from scratch, update example index - viable_example_index = index; - viables.clear(); + for (size_t index = start_index; index < end_index; ++index) { + if (comparator.are_similar(perimeter_points[index], perimeter_points[viable_example_index])) { + // index ok, push info into viables + Vec3f edge_to_next { perimeter_points[index == end_index - 1 ? start_index : index + 1].position + - perimeter_points[index].position }; + float dist_to_next = edge_to_next.norm(); + viables.push_back( { index, dist_to_next, edge_to_next }); + } else if (comparator.is_first_not_much_worse(perimeter_points[viable_example_index], + perimeter_points[index])) { + // index is worse then viable_example_index, skip this point + } else { + // index is better than viable example index, update example, clear gathered info, start again + // clear up all gathered info, start from scratch, update example index + viable_example_index = index; + viables.clear(); - Vec3f edge_to_next = (perimeter_points[index == end_index - 1 ? start_index : index + 1].position - perimeter_points[index].position); - float dist_to_next = edge_to_next.norm(); - viables.push_back({index, dist_to_next, edge_to_next}); - } + Vec3f edge_to_next = (perimeter_points[index == end_index - 1 ? start_index : index + 1].position + - perimeter_points[index].position); + float dist_to_next = edge_to_next.norm(); + viables.push_back( { index, dist_to_next, edge_to_next }); } + } - // now pick random point from the stored options - float len_sum = std::accumulate(viables.begin(), viables.end(), 0.0f, [](const float acc, const Viable &v) { return acc + v.edge_length; }); - float picked_len = len_sum * rand; + // now pick random point from the stored options + float len_sum = std::accumulate(viables.begin(), viables.end(), 0.0f, [](const float acc, const Viable &v) { + return acc + v.edge_length; + }); + float picked_len = len_sum * rand; - size_t point_idx = 0; - while (picked_len - viables[point_idx].edge_length > 0) { - picked_len = picked_len - viables[point_idx].edge_length; - point_idx++; - } + size_t point_idx = 0; + while (picked_len - viables[point_idx].edge_length > 0) { + picked_len = picked_len - viables[point_idx].edge_length; + point_idx++; + } - Perimeter &perimeter = perimeter_points[start_index].perimeter; - perimeter.seam_index = viables[point_idx].index; - perimeter.final_seam_position = perimeter_points[perimeter.seam_index].position + viables[point_idx].edge.normalized() * picked_len; - perimeter.finalized = true; + Perimeter &perimeter = perimeter_points[start_index].perimeter; + perimeter.seam_index = viables[point_idx].index; + perimeter.final_seam_position = perimeter_points[perimeter.seam_index].position + + viables[point_idx].edge.normalized() * picked_len; + perimeter.finalized = true; } -class PerimeterDistancer -{ - std::vector lines; - AABBTreeIndirect::Tree<2, double> tree; - -public: - PerimeterDistancer(const Layer *layer) - { - ExPolygons layer_outline = layer->lslices; - for (const ExPolygon &island : layer_outline) { - assert(island.contour.is_counter_clockwise()); - for (const auto &line : island.contour.lines()) { lines.emplace_back(unscale(line.a), unscale(line.b)); } - for (const Polygon &hole : island.holes) { - assert(hole.is_clockwise()); - for (const auto &line : hole.lines()) { lines.emplace_back(unscale(line.a), unscale(line.b)); } - } - } - tree = AABBTreeLines::build_aabb_tree_over_indexed_lines(lines); - } - - float distance_from_perimeter(const Vec2f &point) const - { - Vec2d p = point.cast(); - size_t hit_idx_out{}; - Vec2d hit_point_out = Vec2d::Zero(); - auto distance = AABBTreeLines::squared_distance_to_indexed_lines(lines, tree, p, hit_idx_out, hit_point_out); - if (distance < 0) { return std::numeric_limits::max(); } - - distance = sqrt(distance); - const Linef &line = lines[hit_idx_out]; - Vec2d v1 = line.b - line.a; - Vec2d v2 = p - line.a; - if ((v1.x() * v2.y()) - (v1.y() * v2.x()) > 0.0) { distance *= -1; } - return distance; - } -}; - } // namespace SeamPlacerImpl // Parallel process and extract each perimeter polygon of the given print object. // Gather SeamCandidates of each layer into vector and build KDtree over them // Store results in the SeamPlacer variables m_seam_per_object -void SeamPlacer::gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info, const SeamPosition configured_seam_preference) -{ - using namespace SeamPlacerImpl; - PrintObjectSeamData &seam_data = m_seam_per_object.emplace(po, PrintObjectSeamData{}).first->second; - seam_data.layers.resize(po->layer_count()); +void SeamPlacer::gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info) { + using namespace SeamPlacerImpl; + PrintObjectSeamData &seam_data = m_seam_per_object.emplace(po, PrintObjectSeamData { }).first->second; + seam_data.layers.resize(po->layer_count()); - tbb::parallel_for(tbb::blocked_range(0, po->layers().size()), [po, configured_seam_preference, &global_model_info, &seam_data](tbb::blocked_range r) { - for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { - PrintObjectSeamData::LayerSeams &layer_seams = seam_data.layers[layer_idx]; - const Layer * layer = po->get_layer(layer_idx); - auto unscaled_z = layer->slice_z; - std::vector regions; - // NOTE corresponding region ptr may be null, if the layer has zero perimeters - Polygons polygons = extract_perimeter_polygons(layer, configured_seam_preference, regions); - for (size_t poly_index = 0; poly_index < polygons.size(); ++poly_index) { - process_perimeter_polygon(polygons[poly_index], unscaled_z, regions[poly_index], global_model_info, layer_seams); - } - auto functor = SeamCandidateCoordinateFunctor{layer_seams.points}; - seam_data.layers[layer_idx].points_tree = std::make_unique(functor, layer_seams.points.size()); - } - }); + tbb::parallel_for(tbb::blocked_range(0, po->layers().size()), + [po, &global_model_info, &seam_data] + (tbb::blocked_range r) { + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + PrintObjectSeamData::LayerSeams &layer_seams = seam_data.layers[layer_idx]; + const Layer *layer = po->get_layer(layer_idx); + auto unscaled_z = layer->slice_z; + std::vector regions; + //NOTE corresponding region ptr may be null, if the layer has zero perimeters + Polygons polygons = extract_perimeter_polygons(layer, regions); + for (size_t poly_index = 0; poly_index < polygons.size(); ++poly_index) { + process_perimeter_polygon(polygons[poly_index], unscaled_z, + regions[poly_index], global_model_info, layer_seams); + } + auto functor = SeamCandidateCoordinateFunctor { layer_seams.points }; + seam_data.layers[layer_idx].points_tree = + std::make_unique(functor, + layer_seams.points.size()); + } + } + ); } -void SeamPlacer::calculate_candidates_visibility(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info) -{ - using namespace SeamPlacerImpl; +void SeamPlacer::calculate_candidates_visibility(const PrintObject *po, + const SeamPlacerImpl::GlobalModelInfo &global_model_info) { + using namespace SeamPlacerImpl; - std::vector &layers = m_seam_per_object[po].layers; - tbb::parallel_for(tbb::blocked_range(0, layers.size()), [&layers, &global_model_info](tbb::blocked_range r) { - for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { - for (auto &perimeter_point : layers[layer_idx].points) { perimeter_point.visibility = global_model_info.calculate_point_visibility(perimeter_point.position); } - } - }); + std::vector &layers = m_seam_per_object[po].layers; + tbb::parallel_for(tbb::blocked_range(0, layers.size()), + [&layers, &global_model_info](tbb::blocked_range r) { + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + for (auto &perimeter_point : layers[layer_idx].points) { + perimeter_point.visibility = global_model_info.calculate_point_visibility( + perimeter_point.position); + } + } + }); } -void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) -{ - using namespace SeamPlacerImpl; +void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) { + using namespace SeamPlacerImpl; + using PerimeterDistancer = AABBTreeLines::LinesDistancer; - std::vector &layers = m_seam_per_object[po].layers; - tbb::parallel_for(tbb::blocked_range(0, layers.size()), [po, &layers](tbb::blocked_range r) { - std::unique_ptr prev_layer_distancer; - if (r.begin() > 0) { // previous layer exists - prev_layer_distancer = std::make_unique(po->layers()[r.begin() - 1]); - } + std::vector &layers = m_seam_per_object[po].layers; + tbb::parallel_for(tbb::blocked_range(0, layers.size()), + [po, &layers](tbb::blocked_range r) { + std::unique_ptr prev_layer_distancer; + if (r.begin() > 0) { // previous layer exists + prev_layer_distancer = std::make_unique(to_unscaled_linesf(po->layers()[r.begin() - 1]->lslices)); + } - for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { - size_t regions_with_perimeter = 0; - for (const LayerRegion *region : po->layers()[layer_idx]->regions()) { - if (region->perimeters.entities.size() > 0) { regions_with_perimeter++; } - }; - bool should_compute_layer_embedding = regions_with_perimeter > 1; - std::unique_ptr current_layer_distancer = std::make_unique(po->layers()[layer_idx]); + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + size_t regions_with_perimeter = 0; + for (const LayerRegion *region : po->layers()[layer_idx]->regions()) { + if (region->perimeters.entities.size() > 0) { + regions_with_perimeter++; + } + }; + bool should_compute_layer_embedding = regions_with_perimeter > 1; + std::unique_ptr current_layer_distancer = std::make_unique( + to_unscaled_linesf(po->layers()[layer_idx]->lslices)); - for (SeamCandidate &perimeter_point : layers[layer_idx].points) { - Vec2f point = Vec2f{perimeter_point.position.head<2>()}; - if (prev_layer_distancer.get() != nullptr) { - perimeter_point.overhang = prev_layer_distancer->distance_from_perimeter(point) + 0.6f * perimeter_point.perimeter.flow_width - - tan(SeamPlacer::overhang_angle_threshold) * po->layers()[layer_idx]->height; - perimeter_point.overhang = perimeter_point.overhang < 0.0f ? 0.0f : perimeter_point.overhang; - } + for (SeamCandidate &perimeter_point : layers[layer_idx].points) { + Vec2f point = Vec2f { perimeter_point.position.head<2>() }; + if (prev_layer_distancer.get() != nullptr) { + perimeter_point.overhang = prev_layer_distancer->distance_from_lines(point.cast()) + + 0.6f * perimeter_point.perimeter.flow_width + - tan(SeamPlacer::overhang_angle_threshold) + * po->layers()[layer_idx]->height; + perimeter_point.overhang = + perimeter_point.overhang < 0.0f ? 0.0f : perimeter_point.overhang; + } - if (should_compute_layer_embedding) { // search for embedded perimeter points (points hidden inside the print ,e.g. multimaterial join, best position for seam) - perimeter_point.embedded_distance = current_layer_distancer->distance_from_perimeter(point) + 0.6f * perimeter_point.perimeter.flow_width; - } - } + if (should_compute_layer_embedding) { // search for embedded perimeter points (points hidden inside the print ,e.g. multimaterial join, best position for seam) + perimeter_point.embedded_distance = current_layer_distancer->distance_from_lines(point.cast()) + + 0.6f * perimeter_point.perimeter.flow_width; + } + } - prev_layer_distancer.swap(current_layer_distancer); - } - }); + prev_layer_distancer.swap(current_layer_distancer); + } + } + ); } // Estimates, if there is good seam point in the layer_idx which is close to last_point_pos @@ -993,107 +1097,122 @@ void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) // If the closest point is good enough to replace current chosen seam, it is stored in potential_string_seams, returns true and updates last_point_pos // Otherwise does nothing, returns false // Used by align_seam_points(). -std::optional> SeamPlacer::find_next_seam_in_layer(const std::vector &layers, - const Vec3f & projected_position, - const size_t layer_idx, - const float max_distance, - const SeamPlacerImpl::SeamComparator & comparator) const -{ - using namespace SeamPlacerImpl; - std::vector nearby_points_indices = find_nearby_points(*layers[layer_idx].points_tree, projected_position, max_distance); - - if (nearby_points_indices.empty()) { return {}; } - - size_t best_nearby_point_index = nearby_points_indices[0]; - size_t nearest_point_index = nearby_points_indices[0]; - - // Now find best nearby point, nearest point, and corresponding indices - for (const size_t &nearby_point_index : nearby_points_indices) { - const SeamCandidate &point = layers[layer_idx].points[nearby_point_index]; - if (point.perimeter.finalized) { - continue; // skip over finalized perimeters, try to find some that is not finalized - } - if (comparator.is_first_better(point, layers[layer_idx].points[best_nearby_point_index], projected_position.head<2>()) || - layers[layer_idx].points[best_nearby_point_index].perimeter.finalized) { - best_nearby_point_index = nearby_point_index; - } - if ((point.position - projected_position).squaredNorm() < (layers[layer_idx].points[nearest_point_index].position - projected_position).squaredNorm() || - layers[layer_idx].points[nearest_point_index].perimeter.finalized) { - nearest_point_index = nearby_point_index; - } - } - - const SeamCandidate &best_nearby_point = layers[layer_idx].points[best_nearby_point_index]; - const SeamCandidate &nearest_point = layers[layer_idx].points[nearest_point_index]; - - if (nearest_point.perimeter.finalized) { - // all points are from already finalized perimeter, skip - return {}; - } - - // from the nearest_point, deduce index of seam in the next layer - const SeamCandidate &next_layer_seam = layers[layer_idx].points[nearest_point.perimeter.seam_index]; - - // First try to pick central enforcer if any present - if (next_layer_seam.central_enforcer && (next_layer_seam.position - projected_position).squaredNorm() < sqr(3 * max_distance)) { - return {std::pair{layer_idx, nearest_point.perimeter.seam_index}}; - } - - // First try to align the nearest, then try the best nearby - if (comparator.is_first_not_much_worse(nearest_point, next_layer_seam)) { return {std::pair{layer_idx, nearest_point_index}}; } - // If nearest point is not good enough, try it with the best nearby point. - if (comparator.is_first_not_much_worse(best_nearby_point, next_layer_seam)) { return {std::pair{layer_idx, best_nearby_point_index}}; } +std::optional> SeamPlacer::find_next_seam_in_layer( + const std::vector &layers, + const Vec3f &projected_position, + const size_t layer_idx, const float max_distance, + const SeamPlacerImpl::SeamComparator &comparator) const { + using namespace SeamPlacerImpl; + std::vector nearby_points_indices = find_nearby_points(*layers[layer_idx].points_tree, projected_position, + max_distance); + if (nearby_points_indices.empty()) { return {}; + } + + size_t best_nearby_point_index = nearby_points_indices[0]; + size_t nearest_point_index = nearby_points_indices[0]; + + // Now find best nearby point, nearest point, and corresponding indices + for (const size_t &nearby_point_index : nearby_points_indices) { + const SeamCandidate &point = layers[layer_idx].points[nearby_point_index]; + if (point.perimeter.finalized) { + continue; // skip over finalized perimeters, try to find some that is not finalized + } + if (comparator.is_first_better(point, layers[layer_idx].points[best_nearby_point_index], + projected_position.head<2>()) + || layers[layer_idx].points[best_nearby_point_index].perimeter.finalized) { + best_nearby_point_index = nearby_point_index; + } + if ((point.position - projected_position).squaredNorm() + < (layers[layer_idx].points[nearest_point_index].position - projected_position).squaredNorm() + || layers[layer_idx].points[nearest_point_index].perimeter.finalized) { + nearest_point_index = nearby_point_index; + } + } + + const SeamCandidate &best_nearby_point = layers[layer_idx].points[best_nearby_point_index]; + const SeamCandidate &nearest_point = layers[layer_idx].points[nearest_point_index]; + + if (nearest_point.perimeter.finalized) { + //all points are from already finalized perimeter, skip + return {}; + } + + //from the nearest_point, deduce index of seam in the next layer + const SeamCandidate &next_layer_seam = layers[layer_idx].points[nearest_point.perimeter.seam_index]; + + // First try to pick central enforcer if any present + if (next_layer_seam.central_enforcer + && (next_layer_seam.position - projected_position).squaredNorm() + < sqr(3 * max_distance)) { + return {std::pair {layer_idx, nearest_point.perimeter.seam_index}}; + } + + // First try to align the nearest, then try the best nearby + if (comparator.is_first_not_much_worse(nearest_point, next_layer_seam)) { + return {std::pair {layer_idx, nearest_point_index}}; + } + // If nearest point is not good enough, try it with the best nearby point. + if (comparator.is_first_not_much_worse(best_nearby_point, next_layer_seam)) { + return {std::pair {layer_idx, best_nearby_point_index}}; + } + + return {}; } -std::vector> SeamPlacer::find_seam_string(const PrintObject * po, - std::pair start_seam, - const SeamPlacerImpl::SeamComparator &comparator) const -{ - const std::vector &layers = m_seam_per_object.find(po)->second.layers; - int layer_idx = start_seam.first; +std::vector> SeamPlacer::find_seam_string(const PrintObject *po, + std::pair start_seam, const SeamPlacerImpl::SeamComparator &comparator) const { + const std::vector &layers = m_seam_per_object.find(po)->second.layers; + int layer_idx = start_seam.first; - // initialize searching for seam string - cluster of nearby seams on previous and next layers - int next_layer = layer_idx + 1; - int step = 1; - std::pair prev_point_index = start_seam; - std::vector> seam_string{start_seam}; + //initialize searching for seam string - cluster of nearby seams on previous and next layers + int next_layer = layer_idx + 1; + int step = 1; + std::pair prev_point_index = start_seam; + std::vector> seam_string { start_seam }; - auto reverse_lookup_direction = [&]() { - step = -1; - prev_point_index = start_seam; - next_layer = layer_idx - 1; - }; + auto reverse_lookup_direction = [&]() { + step = -1; + prev_point_index = start_seam; + next_layer = layer_idx - 1; + }; - while (next_layer >= 0) { - if (next_layer >= int(layers.size())) { - reverse_lookup_direction(); - if (next_layer < 0) { break; } - } - float max_distance = SeamPlacer::seam_align_tolerable_dist_factor * layers[start_seam.first].points[start_seam.second].perimeter.flow_width; - Vec3f prev_position = layers[prev_point_index.first].points[prev_point_index.second].position; - Vec3f projected_position = prev_position; - projected_position.z() = float(po->get_layer(next_layer)->slice_z); - - std::optional> maybe_next_seam = find_next_seam_in_layer(layers, projected_position, next_layer, max_distance, comparator); - - if (maybe_next_seam.has_value()) { - // For old macOS (pre 10.14), std::optional does not have .value() method, so the code is using operator*() instead. - seam_string.push_back(maybe_next_seam.operator*()); - prev_point_index = seam_string.back(); - // String added, prev_point_index updated - } else { - if (step == 1) { - reverse_lookup_direction(); - if (next_layer < 0) { break; } - } else { - break; - } - } - next_layer += step; + while (next_layer >= 0) { + if (next_layer >= int(layers.size())) { + reverse_lookup_direction(); + if (next_layer < 0) { + break; + } } - return seam_string; + float max_distance = SeamPlacer::seam_align_tolerable_dist_factor * + layers[start_seam.first].points[start_seam.second].perimeter.flow_width; + Vec3f prev_position = layers[prev_point_index.first].points[prev_point_index.second].position; + Vec3f projected_position = prev_position; + projected_position.z() = float(po->get_layer(next_layer)->slice_z); + + std::optional> maybe_next_seam = find_next_seam_in_layer(layers, projected_position, + next_layer, + max_distance, comparator); + + if (maybe_next_seam.has_value()) { + // For old macOS (pre 10.14), std::optional does not have .value() method, so the code is using operator*() instead. + seam_string.push_back(maybe_next_seam.operator*()); + prev_point_index = seam_string.back(); + //String added, prev_point_index updated + } else { + if (step == 1) { + reverse_lookup_direction(); + if (next_layer < 0) { + break; + } + } else { + break; + } + } + next_layer += step; + } + return seam_string; } // clusters already chosen seam points into strings across multiple layers, and then @@ -1101,309 +1220,398 @@ std::vector> SeamPlacer::find_seam_string(const PrintO // Does not change the positions of the SeamCandidates themselves, instead stores // the new aligned position into the shared Perimeter structure of each perimeter // Note that this position does not necesarilly lay on the perimeter. -void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl::SeamComparator &comparator) -{ - using namespace SeamPlacerImpl; +void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl::SeamComparator &comparator) { + using namespace SeamPlacerImpl; - // Prepares Debug files for writing. + // Prepares Debug files for writing. #ifdef DEBUG_FILES - Slic3r::CNumericLocalesSetter locales_setter; - auto clusters_f = debug_out_path("seam_clusters.obj"); - FILE * clusters = boost::nowide::fopen(clusters_f.c_str(), "w"); - if (clusters == nullptr) { - BOOST_LOG_TRIVIAL(error) << "stl_write_obj: Couldn't open " << clusters_f << " for writing"; - return; - } - auto aligned_f = debug_out_path("aligned_clusters.obj"); - FILE *aligns = boost::nowide::fopen(aligned_f.c_str(), "w"); - if (aligns == nullptr) { - BOOST_LOG_TRIVIAL(error) << "stl_write_obj: Couldn't open " << clusters_f << " for writing"; - return; - } + Slic3r::CNumericLocalesSetter locales_setter; + auto clusters_f = debug_out_path("seam_clusters.obj"); + FILE *clusters = boost::nowide::fopen(clusters_f.c_str(), "w"); + if (clusters == nullptr) { + BOOST_LOG_TRIVIAL(error) + << "stl_write_obj: Couldn't open " << clusters_f << " for writing"; + return; + } + auto aligned_f = debug_out_path("aligned_clusters.obj"); + FILE *aligns = boost::nowide::fopen(aligned_f.c_str(), "w"); + if (aligns == nullptr) { + BOOST_LOG_TRIVIAL(error) + << "stl_write_obj: Couldn't open " << clusters_f << " for writing"; + return; + } #endif - // gather vector of all seams on the print_object - pair of layer_index and seam__index within that layer - const std::vector &layers = m_seam_per_object[po].layers; - std::vector> seams; - for (size_t layer_idx = 0; layer_idx < layers.size(); ++layer_idx) { - const std::vector &layer_perimeter_points = layers[layer_idx].points; - size_t current_point_index = 0; - while (current_point_index < layer_perimeter_points.size()) { - seams.emplace_back(layer_idx, layer_perimeter_points[current_point_index].perimeter.seam_index); - current_point_index = layer_perimeter_points[current_point_index].perimeter.end_index; - } + //gather vector of all seams on the print_object - pair of layer_index and seam__index within that layer + const std::vector &layers = m_seam_per_object[po].layers; + std::vector> seams; + for (size_t layer_idx = 0; layer_idx < layers.size(); ++layer_idx) { + const std::vector &layer_perimeter_points = layers[layer_idx].points; + size_t current_point_index = 0; + while (current_point_index < layer_perimeter_points.size()) { + seams.emplace_back(layer_idx, layer_perimeter_points[current_point_index].perimeter.seam_index); + current_point_index = layer_perimeter_points[current_point_index].perimeter.end_index; } + } - // sort them before alignment. Alignment is sensitive to initializaion, this gives it better chance to choose something nice - std::stable_sort(seams.begin(), seams.end(), [&comparator, &layers](const std::pair &left, const std::pair &right) { - return comparator.is_first_better(layers[left.first].points[left.second], layers[right.first].points[right.second]); - }); + //sort them before alignment. Alignment is sensitive to initializaion, this gives it better chance to choose something nice + std::stable_sort(seams.begin(), seams.end(), + [&comparator, &layers](const std::pair &left, + const std::pair &right) { + return comparator.is_first_better(layers[left.first].points[left.second], + layers[right.first].points[right.second]); + } + ); - // align the seam points - start with the best, and check if they are aligned, if yes, skip, else start alignment - // Keeping the vectors outside, so with a bit of luck they will not get reallocated after couple of for loop iterations. - std::vector> seam_string; - std::vector> alternative_seam_string; - std::vector observations; - std::vector observation_points; - std::vector weights; + //align the seam points - start with the best, and check if they are aligned, if yes, skip, else start alignment + // Keeping the vectors outside, so with a bit of luck they will not get reallocated after couple of for loop iterations. + std::vector> seam_string; + std::vector> alternative_seam_string; + std::vector observations; + std::vector observation_points; + std::vector weights; - int global_index = 0; - while (global_index < int(seams.size())) { - size_t layer_idx = seams[global_index].first; - size_t seam_index = seams[global_index].second; - global_index++; - const std::vector &layer_perimeter_points = layers[layer_idx].points; - if (layer_perimeter_points[seam_index].perimeter.finalized) { - // This perimeter is already aligned, skip seam - continue; - } else { - seam_string = this->find_seam_string(po, {layer_idx, seam_index}, comparator); - size_t step_size = 1 + seam_string.size() / 20; - for (size_t alternative_start = 0; alternative_start < seam_string.size(); alternative_start += step_size) { - size_t start_layer_idx = seam_string[alternative_start].first; - size_t seam_idx = layers[start_layer_idx].points[seam_string[alternative_start].second].perimeter.seam_index; - alternative_seam_string = this->find_seam_string(po, std::pair(start_layer_idx, seam_idx), comparator); - if (alternative_seam_string.size() > seam_string.size()) { seam_string = std::move(alternative_seam_string); } - } - if (seam_string.size() < seam_align_minimum_string_seams) { - // string NOT long enough to be worth aligning, skip - continue; - } - - // String is long enough, all string seams and potential string seams gathered, now do the alignment - // sort by layer index - std::sort(seam_string.begin(), seam_string.end(), - [](const std::pair &left, const std::pair &right) { return left.first < right.first; }); - - // repeat the alignment for the current seam, since it could be skipped due to alternative path being aligned. - global_index--; - - // gather all positions of seams and their weights - observations.resize(seam_string.size()); - observation_points.resize(seam_string.size()); - weights.resize(seam_string.size()); - - auto angle_3d = [](const Vec3f &a, const Vec3f &b) { return std::abs(acosf(a.normalized().dot(b.normalized()))); }; - - auto angle_weight = [](float angle) { return 1.0f / (0.1f + compute_angle_penalty(angle)); }; - - // gather points positions and weights - float total_length = 0.0f; - Vec3f last_point_pos = layers[seam_string[0].first].points[seam_string[0].second].position; - for (size_t index = 0; index < seam_string.size(); ++index) { - const SeamCandidate ¤t = layers[seam_string[index].first].points[seam_string[index].second]; - float layer_angle = 0.0f; - if (index > 0 && index < seam_string.size() - 1) { - layer_angle = angle_3d(current.position - layers[seam_string[index - 1].first].points[seam_string[index - 1].second].position, - layers[seam_string[index + 1].first].points[seam_string[index + 1].second].position - current.position); - } - observations[index] = current.position.head<2>(); - observation_points[index] = current.position.z(); - weights[index] = angle_weight(current.local_ccw_angle); - float sign = layer_angle > 2.0 * std::abs(current.local_ccw_angle) ? -0.8f : 1.0f; - if (current.type == EnforcedBlockedSeamPoint::Enforced) { - sign = 1.0f; - weights[index] += 3.0f; - } - total_length += sign * (last_point_pos - current.position).norm(); - last_point_pos = current.position; - } - - // Curve Fitting - size_t number_of_segments = std::max(size_t(1), size_t(std::max(0.0f, total_length) / SeamPlacer::seam_align_mm_per_segment)); - auto curve = Geometry::fit_cubic_bspline(observations, observation_points, weights, number_of_segments); - - // Do alignment - compute fitted point for each point in the string from its Z coord, and store the position into - // Perimeter structure of the point; also set flag aligned to true - for (size_t index = 0; index < seam_string.size(); ++index) { - const auto &pair = seam_string[index]; - float t = std::min(1.0f, std::pow(std::abs(layers[pair.first].points[pair.second].local_ccw_angle) / SeamPlacer::sharp_angle_snapping_threshold, 3.0f)); - if (layers[pair.first].points[pair.second].type == EnforcedBlockedSeamPoint::Enforced) { t = std::max(0.4f, t); } - - Vec3f current_pos = layers[pair.first].points[pair.second].position; - Vec2f fitted_pos = curve.get_fitted_value(current_pos.z()); - - // interpolate between current and fitted position, prefer current pos for large weights. - Vec3f final_position = t * current_pos + (1.0f - t) * to_3d(fitted_pos, current_pos.z()); - - Perimeter &perimeter = layers[pair.first].points[pair.second].perimeter; - perimeter.seam_index = pair.second; - perimeter.final_seam_position = final_position; - perimeter.finalized = true; - } - -#ifdef DEBUG_FILES - auto randf = []() { return float(rand()) / float(RAND_MAX); }; - Vec3f color{randf(), randf(), randf()}; - for (size_t i = 0; i < seam_string.size(); ++i) { - auto orig_seam = layers[seam_string[i].first].points[seam_string[i].second]; - fprintf(clusters, "v %f %f %f %f %f %f \n", orig_seam.position[0], orig_seam.position[1], orig_seam.position[2], color[0], color[1], color[2]); - } - - color = Vec3f{randf(), randf(), randf()}; - for (size_t i = 0; i < seam_string.size(); ++i) { - const Perimeter &perimeter = layers[seam_string[i].first].points[seam_string[i].second].perimeter; - fprintf(aligns, "v %f %f %f %f %f %f \n", perimeter.final_seam_position[0], perimeter.final_seam_position[1], perimeter.final_seam_position[2], color[0], - color[1], color[2]); - } -#endif - } - } - -#ifdef DEBUG_FILES - fclose(clusters); - fclose(aligns); -#endif -} - -void SeamPlacer::init(const Print &print, std::function throw_if_canceled_func) -{ - using namespace SeamPlacerImpl; - m_seam_per_object.clear(); - - for (const PrintObject *po : print.objects()) { - throw_if_canceled_func(); - SeamPosition configured_seam_preference = po->config().seam_position.value; - SeamComparator comparator{configured_seam_preference}; - - { - GlobalModelInfo global_model_info{}; - gather_enforcers_blockers(global_model_info, po); - throw_if_canceled_func(); - if (configured_seam_preference == spAligned || configured_seam_preference == spNearest) { compute_global_occlusion(global_model_info, po, throw_if_canceled_func); } - throw_if_canceled_func(); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather_seam_candidates: start"; - gather_seam_candidates(po, global_model_info, configured_seam_preference); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather_seam_candidates: end"; - throw_if_canceled_func(); - if (configured_seam_preference == spAligned || configured_seam_preference == spNearest) { - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_candidates_visibility : start"; - calculate_candidates_visibility(po, global_model_info); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_candidates_visibility : end"; - } - } // destruction of global_model_info (large structure, no longer needed) - throw_if_canceled_func(); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_overhangs and layer embdedding : start"; - calculate_overhangs_and_layer_embedding(po); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_overhangs and layer embdedding: end"; - throw_if_canceled_func(); - if (configured_seam_preference != spNearest) { // For spNearest, the seam is picked in the place_seam method with actual nozzle position information - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: pick_seam_point : start"; - // pick seam point - std::vector &layers = m_seam_per_object[po].layers; - tbb::parallel_for(tbb::blocked_range(0, layers.size()), [&layers, configured_seam_preference, comparator](tbb::blocked_range r) { - for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { - std::vector &layer_perimeter_points = layers[layer_idx].points; - for (size_t current = 0; current < layer_perimeter_points.size(); current = layer_perimeter_points[current].perimeter.end_index) - if (configured_seam_preference == spRandom) - pick_random_seam_point(layer_perimeter_points, current); - else - pick_seam_point(layer_perimeter_points, current, comparator); - } - }); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: pick_seam_point : end"; - } - throw_if_canceled_func(); - if (configured_seam_preference == spAligned || configured_seam_preference == spRear) { - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: align_seam_points : start"; - align_seam_points(po, comparator); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: align_seam_points : end"; - } - -#ifdef DEBUG_FILES - debug_export_points(m_seam_per_object[po].layers, po->bounding_box(), comparator); -#endif - } -} - -void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, const Point &last_pos) const -{ - using namespace SeamPlacerImpl; - const PrintObject *po = layer->object(); - // Must not be called with supprot layer. - assert(dynamic_cast(layer) == nullptr); - // Object layer IDs are incremented by the number of raft layers. - assert(layer->id() >= po->slicing_parameters().raft_layers()); - const size_t layer_index = layer->id() - po->slicing_parameters().raft_layers(); - const double unscaled_z = layer->slice_z; - auto get_next_loop_point = [&loop](ExtrusionLoop::ClosestPathPoint current) { - current.segment_idx += 1; - if (current.segment_idx >= loop.paths[current.path_idx].polyline.points.size()) { - current.path_idx = next_idx_modulo(current.path_idx, loop.paths.size()); - current.segment_idx = 0; - } - current.foot_pt = loop.paths[current.path_idx].polyline.points[current.segment_idx]; - return current; - }; - - const PrintObjectSeamData::LayerSeams& layer_perimeters = - m_seam_per_object.find(layer->object())->second.layers[layer_index]; - - // Find the closest perimeter in the SeamPlacer to this loop. - // Repeat search until two consecutive points of the loop are found, that result in the same closest_perimeter - // This is beacuse with arachne, T-Junctions may exist and sometimes the wrong perimeter was chosen - size_t closest_perimeter_point_index = 0; - { // local space for the closest_perimeter_point_index - Perimeter* closest_perimeter = nullptr; - ExtrusionLoop::ClosestPathPoint closest_point{ 0,0,loop.paths[0].polyline.points[0] }; - size_t points_count = std::accumulate(loop.paths.begin(), loop.paths.end(), 0, [](size_t acc, const ExtrusionPath& p) { - return acc + p.polyline.points.size(); - }); - for (size_t _ = 0; _ < points_count; ++_) { - Vec2f unscaled_p = unscaled(closest_point.foot_pt); - closest_perimeter_point_index = find_closest_point(*layer_perimeters.points_tree.get(), - to_3d(unscaled_p, float(unscaled_z))); - if (closest_perimeter != &layer_perimeters.points[closest_perimeter_point_index].perimeter) { - closest_perimeter = &layer_perimeters.points[closest_perimeter_point_index].perimeter; - closest_point = get_next_loop_point(closest_point); - } - else { - break; - } - } - } - Vec3f seam_position; - size_t seam_index; - if (const Perimeter &perimeter = layer_perimeters.points[closest_perimeter_point_index].perimeter; perimeter.finalized) { - seam_position = perimeter.final_seam_position; - seam_index = perimeter.seam_index; + int global_index = 0; + while (global_index < int(seams.size())) { + size_t layer_idx = seams[global_index].first; + size_t seam_index = seams[global_index].second; + global_index++; + const std::vector &layer_perimeter_points = layers[layer_idx].points; + if (layer_perimeter_points[seam_index].perimeter.finalized) { + // This perimeter is already aligned, skip seam + continue; } else { - seam_index = po->config().seam_position == spNearest ? pick_nearest_seam_point_index(layer_perimeters.points, perimeter.start_index, unscaled(last_pos)) : - perimeter.seam_index; - seam_position = layer_perimeters.points[seam_index].position; + seam_string = this->find_seam_string(po, { layer_idx, seam_index }, comparator); + size_t step_size = 1 + seam_string.size() / 20; + for (size_t alternative_start = 0; alternative_start < seam_string.size(); alternative_start += step_size) { + size_t start_layer_idx = seam_string[alternative_start].first; + size_t seam_idx = + layers[start_layer_idx].points[seam_string[alternative_start].second].perimeter.seam_index; + alternative_seam_string = this->find_seam_string(po, + std::pair(start_layer_idx, seam_idx), comparator); + if (alternative_seam_string.size() > seam_string.size()) { + seam_string = std::move(alternative_seam_string); + } + } + if (seam_string.size() < seam_align_minimum_string_seams) { + //string NOT long enough to be worth aligning, skip + continue; + } + + // String is long enough, all string seams and potential string seams gathered, now do the alignment + //sort by layer index + std::sort(seam_string.begin(), seam_string.end(), + [](const std::pair &left, const std::pair &right) { + return left.first < right.first; + }); + + //repeat the alignment for the current seam, since it could be skipped due to alternative path being aligned. + global_index--; + + // gather all positions of seams and their weights + observations.resize(seam_string.size()); + observation_points.resize(seam_string.size()); + weights.resize(seam_string.size()); + + auto angle_3d = [](const Vec3f& a, const Vec3f& b){ + return std::abs(acosf(a.normalized().dot(b.normalized()))); + }; + + auto angle_weight = [](float angle){ + return 1.0f / (0.1f + compute_angle_penalty(angle)); + }; + + //gather points positions and weights + float total_length = 0.0f; + Vec3f last_point_pos = layers[seam_string[0].first].points[seam_string[0].second].position; + for (size_t index = 0; index < seam_string.size(); ++index) { + const SeamCandidate ¤t = layers[seam_string[index].first].points[seam_string[index].second]; + float layer_angle = 0.0f; + if (index > 0 && index < seam_string.size() - 1) { + layer_angle = angle_3d( + current.position + - layers[seam_string[index - 1].first].points[seam_string[index - 1].second].position, + layers[seam_string[index + 1].first].points[seam_string[index + 1].second].position + - current.position + ); + } + observations[index] = current.position.head<2>(); + observation_points[index] = current.position.z(); + weights[index] = angle_weight(current.local_ccw_angle); + float curling_influence = layer_angle > 2.0 * std::abs(current.local_ccw_angle) ? -0.8f : 1.0f; + if (current.type == EnforcedBlockedSeamPoint::Enforced) { + curling_influence = 1.0f; + weights[index] += 3.0f; + } + total_length += curling_influence * (last_point_pos - current.position).norm(); + last_point_pos = current.position; + } + + if (comparator.setup == spRear) { + total_length *= 0.3f; + } + + // Curve Fitting + size_t number_of_segments = std::max(size_t(1), + size_t(std::max(0.0f,total_length) / SeamPlacer::seam_align_mm_per_segment)); + auto curve = Geometry::fit_cubic_bspline(observations, observation_points, weights, number_of_segments); + + // Do alignment - compute fitted point for each point in the string from its Z coord, and store the position into + // Perimeter structure of the point; also set flag aligned to true + for (size_t index = 0; index < seam_string.size(); ++index) { + const auto &pair = seam_string[index]; + float t = std::min(1.0f, std::pow(std::abs(layers[pair.first].points[pair.second].local_ccw_angle) + / SeamPlacer::sharp_angle_snapping_threshold, 3.0f)); + if (layers[pair.first].points[pair.second].type == EnforcedBlockedSeamPoint::Enforced){ + t = std::max(0.4f, t); + } + + Vec3f current_pos = layers[pair.first].points[pair.second].position; + Vec2f fitted_pos = curve.get_fitted_value(current_pos.z()); + + //interpolate between current and fitted position, prefer current pos for large weights. + Vec3f final_position = t * current_pos + (1.0f - t) * to_3d(fitted_pos, current_pos.z()); + + Perimeter &perimeter = layers[pair.first].points[pair.second].perimeter; + perimeter.seam_index = pair.second; + perimeter.final_seam_position = final_position; + perimeter.finalized = true; + } + +#ifdef DEBUG_FILES + auto randf = []() { + return float(rand()) / float(RAND_MAX); + }; + Vec3f color { randf(), randf(), randf() }; + for (size_t i = 0; i < seam_string.size(); ++i) { + auto orig_seam = layers[seam_string[i].first].points[seam_string[i].second]; + fprintf(clusters, "v %f %f %f %f %f %f \n", orig_seam.position[0], + orig_seam.position[1], + orig_seam.position[2], color[0], color[1], + color[2]); + } + + color = Vec3f { randf(), randf(), randf() }; + for (size_t i = 0; i < seam_string.size(); ++i) { + const Perimeter &perimeter = layers[seam_string[i].first].points[seam_string[i].second].perimeter; + fprintf(aligns, "v %f %f %f %f %f %f \n", perimeter.final_seam_position[0], + perimeter.final_seam_position[1], + perimeter.final_seam_position[2], color[0], color[1], + color[2]); + } +#endif + } + } + +#ifdef DEBUG_FILES + fclose(clusters); + fclose(aligns); +#endif + +} + +void SeamPlacer::init(const Print &print, std::function throw_if_canceled_func) { + using namespace SeamPlacerImpl; + m_seam_per_object.clear(); + + for (const PrintObject *po : print.objects()) { + throw_if_canceled_func(); + SeamPosition configured_seam_preference = po->config().seam_position.value; + SeamComparator comparator { configured_seam_preference }; + + { + GlobalModelInfo global_model_info { }; + gather_enforcers_blockers(global_model_info, po); + throw_if_canceled_func(); + if (configured_seam_preference == spAligned || configured_seam_preference == spNearest) { + compute_global_occlusion(global_model_info, po, throw_if_canceled_func); + } + throw_if_canceled_func(); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: gather_seam_candidates: start"; + gather_seam_candidates(po, global_model_info); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: gather_seam_candidates: end"; + throw_if_canceled_func(); + if (configured_seam_preference == spAligned || configured_seam_preference == spNearest) { + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: calculate_candidates_visibility : start"; + calculate_candidates_visibility(po, global_model_info); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: calculate_candidates_visibility : end"; + } + } // destruction of global_model_info (large structure, no longer needed) + throw_if_canceled_func(); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: calculate_overhangs and layer embdedding : start"; + calculate_overhangs_and_layer_embedding(po); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: calculate_overhangs and layer embdedding: end"; + throw_if_canceled_func(); + if (configured_seam_preference != spNearest) { // For spNearest, the seam is picked in the place_seam method with actual nozzle position information + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: pick_seam_point : start"; + //pick seam point + std::vector &layers = m_seam_per_object[po].layers; + tbb::parallel_for(tbb::blocked_range(0, layers.size()), + [&layers, configured_seam_preference, comparator](tbb::blocked_range r) { + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + std::vector &layer_perimeter_points = layers[layer_idx].points; + for (size_t current = 0; current < layer_perimeter_points.size(); + current = layer_perimeter_points[current].perimeter.end_index) + if (configured_seam_preference == spRandom) + pick_random_seam_point(layer_perimeter_points, current); + else + pick_seam_point(layer_perimeter_points, current, comparator); + } + }); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: pick_seam_point : end"; + } + throw_if_canceled_func(); + if (configured_seam_preference == spAligned || configured_seam_preference == spRear) { + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: align_seam_points : start"; + align_seam_points(po, comparator); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: align_seam_points : end"; } - Point seam_point = Point::new_scale(seam_position.x(), seam_position.y()); +#ifdef DEBUG_FILES + debug_export_points(m_seam_per_object[po].layers, po->bounding_box(), comparator); +#endif + } +} - if (const SeamCandidate &perimeter_point = layer_perimeters.points[seam_index]; - (po->config().seam_position == spNearest || po->config().seam_position == spAligned) && loop.role() == ExtrusionRole::erPerimeter && // Hopefully internal perimeter - (seam_position - perimeter_point.position).squaredNorm() < 4.0f && // seam is on perimeter point - perimeter_point.local_ccw_angle < -EPSILON // In concave angles +void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, + const Point &last_pos) const { + using namespace SeamPlacerImpl; + const PrintObject *po = layer->object(); + // Must not be called with supprot layer. + assert(dynamic_cast(layer) == nullptr); + // Object layer IDs are incremented by the number of raft layers. + assert(layer->id() >= po->slicing_parameters().raft_layers()); + const size_t layer_index = layer->id() - po->slicing_parameters().raft_layers(); + const double unscaled_z = layer->slice_z; + + auto get_next_loop_point = [loop](ExtrusionLoop::ClosestPathPoint current) { + current.segment_idx += 1; + if (current.segment_idx >= loop.paths[current.path_idx].polyline.points.size()) { + current.path_idx = next_idx_modulo(current.path_idx, loop.paths.size()); + current.segment_idx = 0; + } + current.foot_pt = loop.paths[current.path_idx].polyline.points[current.segment_idx]; + return current; + }; + + const PrintObjectSeamData::LayerSeams &layer_perimeters = + m_seam_per_object.find(layer->object())->second.layers[layer_index]; + + // Find the closest perimeter in the SeamPlacer to this loop. + // Repeat search until two consecutive points of the loop are found, that result in the same closest_perimeter + // This is beacuse with arachne, T-Junctions may exist and sometimes the wrong perimeter was chosen + size_t closest_perimeter_point_index = 0; + { // local space for the closest_perimeter_point_index + Perimeter *closest_perimeter = nullptr; + ExtrusionLoop::ClosestPathPoint closest_point{0,0,loop.paths[0].polyline.points[0]}; + size_t points_count = std::accumulate(loop.paths.begin(), loop.paths.end(), 0, [](size_t acc,const ExtrusionPath& p) { + return acc + p.polyline.points.size(); + }); + for (size_t i = 0; i < points_count; ++i) { + Vec2f unscaled_p = unscaled(closest_point.foot_pt); + closest_perimeter_point_index = find_closest_point(*layer_perimeters.points_tree.get(), + to_3d(unscaled_p, float(unscaled_z))); + if (closest_perimeter != &layer_perimeters.points[closest_perimeter_point_index].perimeter) { + closest_perimeter = &layer_perimeters.points[closest_perimeter_point_index].perimeter; + closest_point = get_next_loop_point(closest_point); + } else { + break; + } + } + } + + Vec3f seam_position; + size_t seam_index; + if (const Perimeter &perimeter = layer_perimeters.points[closest_perimeter_point_index].perimeter; + perimeter.finalized) { + seam_position = perimeter.final_seam_position; + seam_index = perimeter.seam_index; + } else { + seam_index = + po->config().seam_position == spNearest ? + pick_nearest_seam_point_index(layer_perimeters.points, perimeter.start_index, + unscaled(last_pos)) : + perimeter.seam_index; + seam_position = layer_perimeters.points[seam_index].position; + } + + Point seam_point = Point::new_scale(seam_position.x(), seam_position.y()); + + if (loop.role() == ExtrusionRole::erPerimeter) { //Hopefully inner perimeter + const SeamCandidate &perimeter_point = layer_perimeters.points[seam_index]; + ExtrusionLoop::ClosestPathPoint projected_point = loop.get_closest_path_and_point(seam_point, false); + // determine depth of the seam point. + float depth = (float) unscale(Point(seam_point - projected_point.foot_pt)).norm(); + float beta_angle = cos(perimeter_point.local_ccw_angle / 2.0f); + size_t index_of_prev = + seam_index == perimeter_point.perimeter.start_index ? + perimeter_point.perimeter.end_index - 1 : + seam_index - 1; + size_t index_of_next = + seam_index == perimeter_point.perimeter.end_index - 1 ? + perimeter_point.perimeter.start_index : + seam_index + 1; + + if ((seam_position - perimeter_point.position).squaredNorm() < depth && // seam is on perimeter point + perimeter_point.local_ccw_angle < -EPSILON // In concave angles ) { // In this case, we are at internal perimeter, where the external perimeter has seam in concave angle. We want to align - // the internal seam into the concave corner, and not on the perpendicular projection on the closest edge (which is what the split_at function does) - size_t index_of_prev = seam_index == perimeter_point.perimeter.start_index ? perimeter_point.perimeter.end_index - 1 : seam_index - 1; - size_t index_of_next = seam_index == perimeter_point.perimeter.end_index - 1 ? perimeter_point.perimeter.start_index : seam_index + 1; - - Vec2f dir_to_middle = ((perimeter_point.position - layer_perimeters.points[index_of_prev].position).head<2>().normalized() + - (perimeter_point.position - layer_perimeters.points[index_of_next].position).head<2>().normalized()) * - 0.5; - - ExtrusionLoop::ClosestPathPoint projected_point = loop.get_closest_path_and_point(seam_point, true); - // get closest projected point, determine depth of the seam point. - float depth = (float) unscale(Point(seam_point - projected_point.foot_pt)).norm(); - float angle_factor = cos(-perimeter_point.local_ccw_angle / 2.0f); // There are some nice geometric identities in determination of the correct depth of new seam point. - // overshoot the target depth, in concave angles it will correctly snap to the corner; TODO: find out why such big overshoot is needed. - Vec2f final_pos = perimeter_point.position.head<2>() + (1.4142 * depth / angle_factor) * dir_to_middle; - seam_point = Point::new_scale(final_pos.x(), final_pos.y()); + // the internal seam into the concave corner, and not on the perpendicular projection on the closest edge (which is what the split_at function does) + Vec2f dir_to_middle = + ((perimeter_point.position - layer_perimeters.points[index_of_prev].position).head<2>().normalized() + + (perimeter_point.position - layer_perimeters.points[index_of_next].position).head<2>().normalized()) + * 0.5; + depth = 1.4142 * depth / beta_angle; + // There are some nice geometric identities in determination of the correct depth of new seam point. + //overshoot the target depth, in concave angles it will correctly snap to the corner; TODO: find out why such big overshoot is needed. + Vec2f final_pos = perimeter_point.position.head<2>() + depth * dir_to_middle; + projected_point = loop.get_closest_path_and_point(Point::new_scale(final_pos.x(), final_pos.y()), false); + } else { // not concave angle, in that case the nearest point is the good candidate + // but for staggering, we also need to recompute depth of the inner perimter, because in convex corners, the distance is larger than layer width + // we want the perpendicular depth, not distance to nearest point + depth = depth * beta_angle / 1.4142; } - // Because the G-code export has 1um resolution, don't generate segments shorter than 1.5 microns, - // thus empty path segments will not be produced by G-code export. - if (!loop.split_at_vertex(seam_point, scaled(0.0015))) { - // The point is not in the original loop. - // Insert it. - loop.split_at(seam_point, true); + seam_point = projected_point.foot_pt; + + //lastly, for internal perimeters, do the staggering if requested + if (po->config().staggered_inner_seams && loop.length() > 0.0) { + //fix depth, it is sometimes strongly underestimated + depth = std::max(loop.paths[projected_point.path_idx].width, depth); + + while (depth > 0.0f) { + auto next_point = get_next_loop_point(projected_point); + Vec2f a = unscale(projected_point.foot_pt).cast(); + Vec2f b = unscale(next_point.foot_pt).cast(); + float dist = (a - b).norm(); + if (dist > depth) { + Vec2f final_pos = a + (b - a) * depth / dist; + next_point.foot_pt = Point::new_scale(final_pos.x(), final_pos.y()); + } + depth -= dist; + projected_point = next_point; + } + seam_point = projected_point.foot_pt; } + } + + // Because the G-code export has 1um resolution, don't generate segments shorter than 1.5 microns, + // thus empty path segments will not be produced by G-code export. + if (!loop.split_at_vertex(seam_point, scaled(0.0015))) { + // The point is not in the original loop. + // Insert it. + loop.split_at(seam_point, true); + } + } } // namespace Slic3r diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 43727f1731..a7bb12f4f4 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -27,138 +27,136 @@ class Grid; namespace SeamPlacerImpl { -// ************ FOR BACKPORT COMPATIBILITY ONLY *************** -// Angle from v1 to v2, returning double atan2(y, x) normalized to <-PI, PI>. -template inline double angle(const Eigen::MatrixBase &v1, const Eigen::MatrixBase &v2) -{ - static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "angle(): first parameter is not a 2D vector"); - static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "angle(): second parameter is not a 2D vector"); - auto v1d = v1.template cast(); - auto v2d = v2.template cast(); - return atan2(cross2(v1d, v2d), v1d.dot(v2d)); -} -// *************************** struct GlobalModelInfo; struct SeamComparator; enum class EnforcedBlockedSeamPoint { - Blocked = 0, - Neutral = 1, - Enforced = 2, + Blocked = 0, + Neutral = 1, + Enforced = 2, }; // struct representing single perimeter loop -struct Perimeter -{ - size_t start_index{}; - size_t end_index{}; // inclusive! - size_t seam_index{}; - float flow_width{}; +struct Perimeter { + size_t start_index{}; + size_t end_index{}; //inclusive! + size_t seam_index{}; + float flow_width{}; - // During alignment, a final position may be stored here. In that case, finalized is set to true. - // Note that final seam position is not limited to points of the perimeter loop. In theory it can be any position - // Random position also uses this flexibility to set final seam point position - bool finalized = false; - Vec3f final_seam_position = Vec3f::Zero(); + // During alignment, a final position may be stored here. In that case, finalized is set to true. + // Note that final seam position is not limited to points of the perimeter loop. In theory it can be any position + // Random position also uses this flexibility to set final seam point position + bool finalized = false; + Vec3f final_seam_position = Vec3f::Zero(); }; -// Struct over which all processing of perimeters is done. For each perimeter point, its respective candidate is created, +//Struct over which all processing of perimeters is done. For each perimeter point, its respective candidate is created, // then all the needed attributes are computed and finally, for each perimeter one point is chosen as seam. // This seam position can be then further aligned -struct SeamCandidate -{ - SeamCandidate(const Vec3f &pos, Perimeter &perimeter, float local_ccw_angle, EnforcedBlockedSeamPoint type) - : position(pos), perimeter(perimeter), visibility(0.0f), overhang(0.0f), embedded_distance(0.0f), local_ccw_angle(local_ccw_angle), type(type), central_enforcer(false) - {} - const Vec3f position; - // pointer to Perimeter loop of this point. It is shared across all points of the loop - Perimeter &perimeter; - float visibility; - float overhang; - // distance inside the merged layer regions, for detecting perimeter points which are hidden indside the print (e.g. multimaterial join) - // Negative sign means inside the print, comes from EdgeGrid structure - float embedded_distance; - float local_ccw_angle; - EnforcedBlockedSeamPoint type; - bool central_enforcer; // marks this candidate as central point of enforced segment on the perimeter - important for alignment +struct SeamCandidate { + SeamCandidate(const Vec3f &pos, Perimeter &perimeter, + float local_ccw_angle, + EnforcedBlockedSeamPoint type) : + position(pos), perimeter(perimeter), visibility(0.0f), overhang(0.0f), embedded_distance(0.0f), local_ccw_angle( + local_ccw_angle), type(type), central_enforcer(false) { + } + const Vec3f position; + // pointer to Perimeter loop of this point. It is shared across all points of the loop + Perimeter &perimeter; + float visibility; + float overhang; + // distance inside the merged layer regions, for detecting perimeter points which are hidden indside the print (e.g. multimaterial join) + // Negative sign means inside the print, comes from EdgeGrid structure + float embedded_distance; + float local_ccw_angle; + EnforcedBlockedSeamPoint type; + bool central_enforcer; //marks this candidate as central point of enforced segment on the perimeter - important for alignment }; -struct SeamCandidateCoordinateFunctor -{ - SeamCandidateCoordinateFunctor(const std::vector &seam_candidates) : seam_candidates(seam_candidates) {} - const std::vector &seam_candidates; - float operator()(size_t index, size_t dim) const { return seam_candidates[index].position[dim]; } +struct SeamCandidateCoordinateFunctor { + SeamCandidateCoordinateFunctor(const std::vector &seam_candidates) : + seam_candidates(seam_candidates) { + } + const std::vector &seam_candidates; + float operator()(size_t index, size_t dim) const { + return seam_candidates[index].position[dim]; + } }; } // namespace SeamPlacerImpl struct PrintObjectSeamData { - using SeamCandidatesTree = KDTreeIndirect<3, float, SeamPlacerImpl::SeamCandidateCoordinateFunctor>; + using SeamCandidatesTree = KDTreeIndirect<3, float, SeamPlacerImpl::SeamCandidateCoordinateFunctor>; - struct LayerSeams - { - Slic3r::deque perimeters; - std::vector points; - std::unique_ptr points_tree; - }; - // Map of PrintObjects (PO) -> vector of layers of PO -> vector of perimeter - std::vector layers; - // Map of PrintObjects (PO) -> vector of layers of PO -> unique_ptr to KD - // tree of all points of the given layer + struct LayerSeams + { + Slic3r::deque perimeters; + std::vector points; + std::unique_ptr points_tree; + }; + // Map of PrintObjects (PO) -> vector of layers of PO -> vector of perimeter + std::vector layers; + // Map of PrintObjects (PO) -> vector of layers of PO -> unique_ptr to KD + // tree of all points of the given layer - void clear() { layers.clear(); } + void clear() + { + layers.clear(); + } }; -class SeamPlacer -{ +class SeamPlacer { public: - // Number of samples generated on the mesh. There are sqr_rays_per_sample_point*sqr_rays_per_sample_point rays casted from each samples - static constexpr size_t raycasting_visibility_samples_count = 30000; - // square of number of rays per sample point - static constexpr size_t sqr_rays_per_sample_point = 5; + // Number of samples generated on the mesh. There are sqr_rays_per_sample_point*sqr_rays_per_sample_point rays casted from each samples + static constexpr size_t raycasting_visibility_samples_count = 30000; + static constexpr size_t fast_decimation_triangle_count_target = 16000; + //square of number of rays per sample point + static constexpr size_t sqr_rays_per_sample_point = 5; - // snapping angle - angles larger than this value will be snapped to during seam painting - static constexpr float sharp_angle_snapping_threshold = 55.0f * float(PI) / 180.0f; - // overhang angle for seam placement that still yields good results, in degrees, measured from vertical direction - //BBS - static constexpr float overhang_angle_threshold = 45.0f * float(PI) / 180.0f; + // snapping angle - angles larger than this value will be snapped to during seam painting + static constexpr float sharp_angle_snapping_threshold = 55.0f * float(PI) / 180.0f; + // overhang angle for seam placement that still yields good results, in degrees, measured from vertical direction + static constexpr float overhang_angle_threshold = 50.0f * float(PI) / 180.0f; - // determines angle importance compared to visibility ( neutral value is 1.0f. ) - static constexpr float angle_importance_aligned = 0.6f; - static constexpr float angle_importance_nearest = 1.0f; // use much higher angle importance for nearest mode, to combat the visibility info noise + // determines angle importance compared to visibility ( neutral value is 1.0f. ) + static constexpr float angle_importance_aligned = 0.6f; + static constexpr float angle_importance_nearest = 1.0f; // use much higher angle importance for nearest mode, to combat the visibility info noise - // For long polygon sides, if they are close to the custom seam drawings, they are oversampled with this step size - static constexpr float enforcer_oversampling_distance = 0.2f; + // For long polygon sides, if they are close to the custom seam drawings, they are oversampled with this step size + static constexpr float enforcer_oversampling_distance = 0.2f; - // When searching for seam clusters for alignment: - // following value describes, how much worse score can point have and still be picked into seam cluster instead of original seam point on the same layer - static constexpr float seam_align_score_tolerance = 0.3f; - // seam_align_tolerable_dist_factor - how far to search for seam from current position, final dist is seam_align_tolerable_dist_factor * flow_width - static constexpr float seam_align_tolerable_dist_factor = 4.0f; - // minimum number of seams needed in cluster to make alignment happen - static constexpr size_t seam_align_minimum_string_seams = 6; - // millimeters covered by spline; determines number of splines for the given string - static constexpr size_t seam_align_mm_per_segment = 4.0f; + // When searching for seam clusters for alignment: + // following value describes, how much worse score can point have and still be picked into seam cluster instead of original seam point on the same layer + static constexpr float seam_align_score_tolerance = 0.3f; + // seam_align_tolerable_dist_factor - how far to search for seam from current position, final dist is seam_align_tolerable_dist_factor * flow_width + static constexpr float seam_align_tolerable_dist_factor = 4.0f; + // minimum number of seams needed in cluster to make alignment happen + static constexpr size_t seam_align_minimum_string_seams = 6; + // millimeters covered by spline; determines number of splines for the given string + static constexpr size_t seam_align_mm_per_segment = 4.0f; - // The following data structures hold all perimeter points for all PrintObject. - std::unordered_map m_seam_per_object; + //The following data structures hold all perimeter points for all PrintObject. + std::unordered_map m_seam_per_object; - void init(const Print &print, std::function throw_if_canceled_func); + void init(const Print &print, std::function throw_if_canceled_func); - void place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, const Point &last_pos) const; + void place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, const Point &last_pos) const; private: - void gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info, const SeamPosition configured_seam_preference); - void calculate_candidates_visibility(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info); - void calculate_overhangs_and_layer_embedding(const PrintObject *po); - void align_seam_points(const PrintObject *po, const SeamPlacerImpl::SeamComparator &comparator); - std::vector> find_seam_string(const PrintObject *po, std::pair start_seam, const SeamPlacerImpl::SeamComparator &comparator) const; - std::optional> find_next_seam_in_layer(const std::vector &layers, - const Vec3f & projected_position, - const size_t layer_idx, - const float max_distance, - const SeamPlacerImpl::SeamComparator & comparator) const; + void gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info); + void calculate_candidates_visibility(const PrintObject *po, + const SeamPlacerImpl::GlobalModelInfo &global_model_info); + void calculate_overhangs_and_layer_embedding(const PrintObject *po); + void align_seam_points(const PrintObject *po, const SeamPlacerImpl::SeamComparator &comparator); + std::vector> find_seam_string(const PrintObject *po, + std::pair start_seam, + const SeamPlacerImpl::SeamComparator &comparator) const; + std::optional> find_next_seam_in_layer( + const std::vector &layers, + const Vec3f& projected_position, + const size_t layer_idx, const float max_distance, + const SeamPlacerImpl::SeamComparator &comparator) const; }; } // namespace Slic3r diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index 0b78ce96ae..e52b413b4b 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -177,14 +177,13 @@ std::string GCodeWriter::set_acceleration(unsigned int acceleration) // Use M204 P, we don't want to override travel acc by M204 S (which is deprecated anyway). gcode << "M204 P" << acceleration; } else if (FLAVOR_IS(gcfKlipper) && this->config.accel_to_decel_enable) { - gcode << "SET_VELOCITY_LIMIT ACCEL_TO_DECEL=" << acceleration * this->config.accel_to_decel_factor / 100; + gcode << "SET_VELOCITY_LIMIT ACCEL=" << acceleration + << " ACCEL_TO_DECEL=" << acceleration * this->config.accel_to_decel_factor / 100; if (GCodeWriter::full_gcode_comment) gcode << " ; adjust ACCEL_TO_DECEL"; - gcode << "\nM204 S" << acceleration; - // Set max accel to decel to half of acceleration } else gcode << "M204 S" << acceleration; - + //BBS if (GCodeWriter::full_gcode_comment) gcode << " ; adjust acceleration"; gcode << "\n"; diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index 331129ba45..47b0b78177 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -72,7 +72,7 @@ public: Flow flow(FlowRole role) const; Flow flow(FlowRole role, double layer_height) const; - Flow bridging_flow(FlowRole role, bool thick_bridge = false , float bridge_density = 1.0f) const; + Flow bridging_flow(FlowRole role, bool thick_bridge = false) const; void slices_to_fill_surfaces_clipped(); void prepare_fill_surfaces(); diff --git a/src/libslic3r/LayerRegion.cpp b/src/libslic3r/LayerRegion.cpp index 06b632eaa2..61eef17801 100644 --- a/src/libslic3r/LayerRegion.cpp +++ b/src/libslic3r/LayerRegion.cpp @@ -26,7 +26,7 @@ Flow LayerRegion::flow(FlowRole role, double layer_height) const return m_region->flow(*m_layer->object(), role, layer_height, m_layer->id() == 0); } -Flow LayerRegion::bridging_flow(FlowRole role, bool thick_bridge, float bridge_density) const +Flow LayerRegion::bridging_flow(FlowRole role, bool thick_bridge) const { const PrintRegion ®ion = this->region(); const PrintRegionConfig ®ion_config = region.config(); @@ -43,8 +43,6 @@ Flow LayerRegion::bridging_flow(FlowRole role, bool thick_bridge, float bridge_d // The same way as other slicers: Use normal extrusions. Apply bridge_flow while maintaining the original spacing. bridge_flow = this->flow(role).with_flow_ratio(region_config.bridge_flow); } - bridge_density = boost::algorithm::clamp(bridge_density, 0.1f, 1.0f); - bridge_flow.set_spacing(bridge_flow.spacing() + bridge_flow.width() * ((1.0f / bridge_density) - 1.0f)); return bridge_flow; } @@ -245,7 +243,7 @@ void LayerRegion::process_external_surfaces(const Layer *lower_layer, const Poly // Grown by 3mm. //BBS: eliminate too narrow area to avoid generating bridge on top layer when wall loop is 1 //Polygons polys = offset(bridges[i].expolygon, bridge_margin, EXTERNAL_SURFACES_OFFSET_PARAMETERS); - Polygons polys = offset2({ bridges[i].expolygon }, -scale_(nozzle_diameter * 0.1), bridge_margin + scale_((1.0 / this->region().config().bridge_density.get_abs_value(1.0) - 1.0)*nozzle_diameter/2.0), EXTERNAL_SURFACES_OFFSET_PARAMETERS); + Polygons polys = offset2({ bridges[i].expolygon }, -scale_(nozzle_diameter * 0.1), bridge_margin, EXTERNAL_SURFACES_OFFSET_PARAMETERS); if (idx_island == -1) { BOOST_LOG_TRIVIAL(trace) << "Bridge did not fall into the source region!"; } else { diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index b3df47c3a0..448eb13210 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1856,7 +1856,7 @@ void ModelObject::process_connector_cut( // Perform cut TriangleMesh upper_mesh, lower_mesh; - process_volume_cut(volume, instance_matrix, cut_matrix, attributes, upper_mesh, lower_mesh); + process_volume_cut(volume, Transform3d::Identity(), cut_matrix, attributes, upper_mesh, lower_mesh); // add small Z offset to better preview upper_mesh.translate((-0.05 * Vec3d::UnitZ()).cast()); diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 976bdeecfd..e47f10f7ac 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -1374,7 +1374,8 @@ void PerimeterGenerator::process_arachne() bool is_outer_wall_first = this->config->wall_infill_order == WallInfillOrder::OuterInnerInfill || - this->config->wall_infill_order == WallInfillOrder::InfillOuterInner; + this->config->wall_infill_order == WallInfillOrder::InfillOuterInner || + this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill; if (is_outer_wall_first) { start_perimeter = 0; end_perimeter = int(perimeters.size()); @@ -1501,17 +1502,49 @@ void PerimeterGenerator::process_arachne() } } - - if (this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill) - if (ordered_extrusions.size() > 1) { - int last_outer = 0; - int outer = 0; - for (; outer < ordered_extrusions.size(); ++outer) - if (ordered_extrusions[outer].extrusion->inset_idx == 0 && outer - last_outer > 1) { - std::swap(ordered_extrusions[outer], ordered_extrusions[outer - 1]); - last_outer = outer; + + if (this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill) { + 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 = 0; // index to run through the walls + int outer, first_internal, second_internal; // allocate index values + // run the re-ordering for all wall loops in the same island + while (position < ordered_extrusions.size()) { + outer = first_internal = second_internal = -1; // initialise all index values to -1 + // 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 + for (arr_i = position; arr_i < ordered_extrusions.size(); ++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) + first_internal = arr_i; + break; + case 2: // second internal wall + if (ordered_extrusions[arr_i].extrusion->inset_idx == 2 && second_internal == -1 && + arr_i > first_internal) + second_internal = arr_i; + break; + } + if (second_internal != -1) + break; // found all three perimeters to re-order } + if (outer > -1 && first_internal > -1 && second_internal > -1) { // found perimeters to re-order? + const auto temp = ordered_extrusions[second_internal]; + ordered_extrusions[second_internal] = ordered_extrusions[first_internal]; + ordered_extrusions[first_internal] = ordered_extrusions[outer]; + ordered_extrusions[outer] = temp; + } else + break; // did not find any more candidates to re-order, so stop the while loop early + // go to the next perimeter 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()) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 0931238298..15ef51b309 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -708,7 +708,7 @@ static std::vector s_Preset_print_options { "layer_height", "initial_layer_print_height", "wall_loops", "slice_closing_radius", "spiral_mode", "slicing_mode", "top_shell_layers", "top_shell_thickness", "bottom_shell_layers", "bottom_shell_thickness", "ensure_vertical_shell_thickness", "reduce_crossing_wall", "detect_thin_wall", "detect_overhang_wall", - "seam_position", "wall_infill_order", "sparse_infill_density", "sparse_infill_pattern", "top_surface_pattern", "bottom_surface_pattern", + "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", "ironing_type", "ironing_flow", "ironing_speed", "ironing_spacing", @@ -720,7 +720,7 @@ static std::vector s_Preset_print_options { "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", "travel_speed_z", "initial_layer_speed", - "outer_wall_acceleration", "initial_layer_acceleration", "top_surface_acceleration", "default_acceleration", "skirt_loops", "skirt_distance", "skirt_height", "draft_shield", + "outer_wall_acceleration", "initial_layer_acceleration", "top_surface_acceleration", "default_acceleration", "skirt_loops", "skirt_speed", "skirt_distance", "skirt_height", "draft_shield", "brim_width", "brim_object_gap", "brim_type", "enable_support", "support_type", "support_threshold_angle", "enforce_support_layers", "raft_layers", "raft_first_layer_density", "raft_first_layer_expansion", "raft_contact_distance", "raft_expansion", "support_base_pattern", "support_base_pattern_spacing", "support_expansion", "support_style", @@ -756,7 +756,7 @@ static std::vector s_Preset_print_options { "bridge_density", "precise_outer_wall", "overhang_speed_classic", "bridge_acceleration", "sparse_infill_acceleration", "internal_solid_infill_acceleration", "tree_support_adaptive_layer_height", "tree_support_auto_brim", "tree_support_brim_width", "gcode_comments", "gcode_label_objects", - "initial_layer_travel_speed", "exclude_object", "slow_down_layers" + "initial_layer_travel_speed", "exclude_object", "slow_down_layers", "infill_anchor", "infill_anchor_max" }; diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 1650801034..46090dcaee 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -185,6 +185,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n // These steps have no influence on the G-code whatsoever. Just ignore them. } else if ( opt_key == "skirt_loops" + || opt_key == "skirt_speed" || opt_key == "skirt_height" || opt_key == "draft_shield" || opt_key == "skirt_distance" @@ -197,6 +198,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n opt_key == "initial_layer_print_height" || opt_key == "nozzle_diameter" || opt_key == "filament_shrink" + || opt_key == "resolution" // Spiral Vase forces different kind of slicing than the normal model: // In Spiral Vase mode, holes are closed and only the largest area contour is kept at each layer. // Therefore toggling the Spiral Vase on / off requires complete reslicing. @@ -248,7 +250,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n opt_key == "initial_layer_line_width" || opt_key == "min_layer_height" || opt_key == "max_layer_height" - || opt_key == "resolution" + //|| opt_key == "resolution" //BBS: when enable arc fitting, we must re-generate perimeter || opt_key == "enable_arc_fitting" || opt_key == "wall_infill_order") { @@ -912,9 +914,29 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* return { L("No extrusions under current settings.") }; if (extruders.size() > 1 && m_config.print_sequence != PrintSequence::ByObject) { - auto ret = check_multi_filament_valid(*this); - if (!ret.string.empty()) - return ret; + if (m_config.single_extruder_multi_material) { + auto ret = check_multi_filament_valid(*this); + if (!ret.string.empty()) + return ret; + } + + if (warning) { + for (unsigned int extruder_a: extruders) { + const ConfigOptionInts* bed_temp_opt = m_config.option(get_bed_temp_key(m_config.curr_bed_type)); + const ConfigOptionInts* bed_temp_1st_opt = m_config.option(get_bed_temp_1st_layer_key(m_config.curr_bed_type)); + int bed_temp_a = bed_temp_opt->get_at(extruder_a); + int bed_temp_1st_a = bed_temp_1st_opt->get_at(extruder_a); + for (unsigned int extruder_b: extruders) { + int bed_temp_b = bed_temp_opt->get_at(extruder_b); + int bed_temp_1st_b = bed_temp_1st_opt->get_at(extruder_b); + if (std::abs(bed_temp_a - bed_temp_b) > 15 || std::abs(bed_temp_1st_a - bed_temp_1st_b) > 15) { + warning->string = L("Bed temperatures for the used filaments differ significantly."); + goto DONE; + } + } + } + DONE:; + } } if (m_config.print_sequence == PrintSequence::ByObject) { diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index f12cfcf3c3..451bb09ded 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1008,7 +1008,7 @@ void PrintConfigDef::init_fff_params() def = this->add("internal_bridge_support_thickness", coFloat); def->label = L("Internal bridge support thickness"); def->category = L("Strength"); - def->tooltip = L("If enabled, Studio will generate support loops under the contours of internal bridges." + def->tooltip = L("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"); def->sidetext = L("mm"); @@ -1434,6 +1434,55 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Lightning")); def->set_default_value(new ConfigOptionEnum(ipCubic)); + auto def_infill_anchor_min = def = this->add("infill_anchor", coFloatOrPercent); + def->label = L("Sparse infill anchor length"); + def->category = L("Strength"); + def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " + "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. 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. " + "\nSet this parameter to zero to disable anchoring perimeters connected to a single infill line."); + def->sidetext = L("mm or %"); + def->ratio_over = "sparse_infill_line_width"; + def->max_literal = 1000; + def->gui_type = ConfigOptionDef::GUIType::f_enum_open; + def->enum_values.push_back("0"); + def->enum_values.push_back("1"); + def->enum_values.push_back("2"); + def->enum_values.push_back("5"); + def->enum_values.push_back("10"); + def->enum_values.push_back("1000"); + def->enum_labels.push_back(L("0 (no open anchors)")); + def->enum_labels.push_back("1 mm"); + def->enum_labels.push_back("2 mm"); + def->enum_labels.push_back("5 mm"); + def->enum_labels.push_back("10 mm"); + def->enum_labels.push_back(L("1000 (unlimited)")); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloatOrPercent(400, true)); + + def = this->add("infill_anchor_max", coFloatOrPercent); + def->label = L("Maximum length of the infill anchor"); + def->category = L("Strength"); + def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " + "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. 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. " + "\nIf set to 0, the old algorithm for infill connection will be used, it should create the same result as with 1000 & 0."); + def->sidetext = def_infill_anchor_min->sidetext; + def->ratio_over = def_infill_anchor_min->ratio_over; + def->gui_type = def_infill_anchor_min->gui_type; + def->enum_values = def_infill_anchor_min->enum_values; + def->max_literal = def_infill_anchor_min->max_literal; + def->enum_labels.push_back(L("0 (Simple connect)")); + def->enum_labels.push_back("1 mm"); + def->enum_labels.push_back("2 mm"); + def->enum_labels.push_back("5 mm"); + def->enum_labels.push_back("10 mm"); + def->enum_labels.push_back(L("1000 (unlimited)")); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloatOrPercent(20, false)); + def = this->add("outer_wall_acceleration", coFloat); def->label = L("Outer wall"); def->tooltip = L("Acceleration of outer walls"); @@ -2564,6 +2613,12 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Random")); def->mode = comSimple; def->set_default_value(new ConfigOptionEnum(spAligned)); + + def = this->add("staggered_inner_seams", coBool); + def->label = L("Staggered inner seams"); + def->tooltip = L("This option causes the inner seams to be shifted backwards based on their depth, forming a zigzag pattern."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(false)); def = this->add("seam_gap", coFloatOrPercent); def->label = L("Seam gap"); @@ -2585,7 +2640,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Wipe on loops"); def->tooltip = L("To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop."); def->mode = comAdvanced; - def->set_default_value(new ConfigOptionBool(true)); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("wipe_speed", coFloatOrPercent); def->label = L("Wipe speed"); @@ -2642,6 +2697,15 @@ void PrintConfigDef::init_fff_params() def->mode = comSimple; def->set_default_value(new ConfigOptionInt(1)); + def = this->add("skirt_speed", coFloat); + def->label = L("Skirt speed"); + def->full_label = L("Skirt speed"); + def->tooltip = L("Speed of skirt, in mm/s. Zero means use default layer extrusion speed."); + def->min = 0; + def->sidetext = L("mm/s"); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(0.0)); + def = this->add("slow_down_layer_time", coFloats); def->label = L("Layer time"); def->tooltip = L("The printing speed in exported gcode will be slowed down, when the estimated layer time is shorter than this value, to " @@ -3287,7 +3351,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloats { 2. }); + def->set_default_value(new ConfigOptionFloats { 1. }); def = this->add("enable_prime_tower", coBool); def->label = L("Enable"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index ea78f20863..5ad5122e50 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -646,6 +646,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, raft_first_layer_expansion)) ((ConfigOptionInt, raft_layers)) ((ConfigOptionEnum, seam_position)) + ((ConfigOptionBool, staggered_inner_seams)) ((ConfigOptionFloat, slice_closing_radius)) ((ConfigOptionEnum, slicing_mode)) ((ConfigOptionBool, enable_support)) @@ -780,9 +781,8 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, small_perimeter_threshold)) ((ConfigOptionFloat, top_solid_infill_flow_ratio)) ((ConfigOptionFloat, bottom_solid_infill_flow_ratio)) - - - + ((ConfigOptionFloatOrPercent, infill_anchor)) + ((ConfigOptionFloatOrPercent, infill_anchor_max)) ) @@ -969,6 +969,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionFloat, skirt_distance)) ((ConfigOptionInt, skirt_height)) ((ConfigOptionInt, skirt_loops)) + ((ConfigOptionFloat, skirt_speed)) ((ConfigOptionFloats, slow_down_layer_time)) ((ConfigOptionBool, spiral_mode)) ((ConfigOptionInt, standby_temperature_delta)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index bbaa16a34f..890d7aab8a 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -831,6 +831,8 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "bottom_surface_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); diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index d12cc3ff0e..8be854289c 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -140,7 +140,7 @@ static std::vector slice_volumes_inner( params_base.trafo = object_trafo; //BBS: 0.0025mm is safe enough to simplify the data to speed slicing up for high-resolution model. //Also has on influence on arc fitting which has default resolution 0.0125mm. - params_base.resolution = 0.0025; + params_base.resolution = print_config.resolution <= 0.001 ? 0.0f : 0.0025; switch (print_object_config.slicing_mode.value) { case SlicingMode::Regular: params_base.mode = MeshSlicingParams::SlicingMode::Regular; break; case SlicingMode::EvenOdd: params_base.mode = MeshSlicingParams::SlicingMode::EvenOdd; break; diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp index 2eca6b343a..31db2d1488 100644 --- a/src/libslic3r/TreeSupport.cpp +++ b/src/libslic3r/TreeSupport.cpp @@ -1378,6 +1378,10 @@ void TreeSupport::generate_toolpaths() coordf_t layer_height = object_config.layer_height.value; const size_t wall_count = object_config.tree_support_wall_count.value; + // Check if set to zero, use default if so. + if (support_extrusion_width <= 0.0) + support_extrusion_width = Flow::auto_extrusion_width(FlowRole::frSupportMaterial, (float)nozzle_diameter); + // coconut: use same intensity settings as SupportMaterial.cpp auto m_support_material_interface_flow = support_material_interface_flow(m_object, float(m_slicing_params.layer_height)); coordf_t interface_spacing = object_config.support_interface_spacing.value + m_support_material_interface_flow.spacing(); diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 743c454a6a..79cc464f19 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -669,17 +669,6 @@ void AMSMaterialsSetting::on_clr_picker(wxMouseEvent &event) m_color_picker_popup.set_ams_colours(ams_colors); m_color_picker_popup.set_def_colour(m_clr_picker->m_colour); m_color_picker_popup.Popup(); - - /*auto clr_dialog = new wxColourDialog(this, m_clrData); - if (clr_dialog->ShowModal() == wxID_OK) { - m_clrData = &(clr_dialog->GetColourData()); - m_clr_picker->SetBackgroundColor(wxColour( - m_clrData->GetColour().Red(), - m_clrData->GetColour().Green(), - m_clrData->GetColour().Blue(), - 254 - )); - }*/ } bool AMSMaterialsSetting::is_virtual_tray() @@ -1114,7 +1103,7 @@ ColorPickerPopup::ColorPickerPopup(wxWindow* parent) } wxBoxSizer* m_sizer_other = new wxBoxSizer(wxHORIZONTAL); - auto m_title_other = new wxStaticText(m_def_color_box, wxID_ANY, _L("Other color"), wxDefaultPosition, wxDefaultSize, 0); + auto m_title_other = new wxStaticText(m_def_color_box, wxID_ANY, _L("Other Color"), wxDefaultPosition, wxDefaultSize, 0); m_title_other->SetFont(::Label::Body_14); m_title_other->SetBackgroundColour(wxColour(238, 238, 238)); m_sizer_other->Add(m_title_other, 0, wxALL, 5); @@ -1124,11 +1113,43 @@ ColorPickerPopup::ColorPickerPopup(wxWindow* parent) other_line->SetBackgroundColour(wxColour(0xCECECE)); m_sizer_other->Add(other_line, 1, wxALIGN_CENTER, 0); + //custom color + wxBoxSizer* m_sizer_custom = new wxBoxSizer(wxHORIZONTAL); + auto m_title_custom = new wxStaticText(m_def_color_box, wxID_ANY, _L("Custom Color"), wxDefaultPosition, wxDefaultSize, 0); + m_title_custom->SetFont(::Label::Body_14); + m_title_custom->SetBackgroundColour(wxColour(238, 238, 238)); + auto custom_line = new wxPanel(m_def_color_box, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); + custom_line->SetBackgroundColour(wxColour(0xCECECE)); + custom_line->SetMinSize(wxSize(-1, 1)); + custom_line->SetMaxSize(wxSize(-1, 1)); + m_sizer_custom->Add(m_title_custom, 0, wxALL, 5); + m_sizer_custom->Add(custom_line, 1, wxALIGN_CENTER, 0); + + m_custom_cp = new StaticBox(m_def_color_box); + m_custom_cp->SetSize(FromDIP(60), FromDIP(25)); + m_custom_cp->SetMinSize(wxSize(FromDIP(60), FromDIP(25))); + m_custom_cp->SetMaxSize(wxSize(FromDIP(60), FromDIP(25))); + m_custom_cp->SetBorderColor(StateColor(std::pair(wxColour(238, 238, 238), StateColor::Normal))); + m_custom_cp->Bind(wxEVT_LEFT_DOWN, &ColorPickerPopup::on_custom_clr_picker, this); + m_custom_cp->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { + SetCursor(wxCURSOR_HAND); + }); + m_custom_cp->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) { + SetCursor(wxCURSOR_ARROW); + }); + + m_clrData = new wxColourData(); + m_clrData->SetChooseFull(true); + m_clrData->SetChooseAlpha(false); + + m_sizer_box->Add(0, 0, 0, wxTOP, FromDIP(10)); m_sizer_box->Add(m_sizer_ams, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10)); m_sizer_box->Add(m_ams_fg_sizer, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10)); m_sizer_box->Add(m_sizer_other, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10)); m_sizer_box->Add(fg_sizer, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10)); + m_sizer_box->Add(m_sizer_custom, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10)); + m_sizer_box->Add(m_custom_cp, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(16)); m_sizer_box->Add(0, 0, 0, wxTOP, FromDIP(10)); @@ -1145,6 +1166,28 @@ ColorPickerPopup::ColorPickerPopup(wxWindow* parent) wxGetApp().UpdateDarkUIWin(this); } +void ColorPickerPopup::on_custom_clr_picker(wxMouseEvent& event) +{ + auto clr_dialog = new wxColourDialog(nullptr, m_clrData); + wxColour picker_color; + + if (clr_dialog->ShowModal() == wxID_OK) { + m_clrData = &(clr_dialog->GetColourData()); + + picker_color = wxColour( + m_clrData->GetColour().Red(), + m_clrData->GetColour().Green(), + m_clrData->GetColour().Blue(), + 254 + ); + m_custom_cp->SetBackgroundColor(picker_color); + set_def_colour(picker_color); + wxCommandEvent evt(EVT_SELECTED_COLOR); + unsigned long g_col = ((picker_color.Red() & 0xff) << 16) + ((picker_color.Green() & 0xff) << 8) + (picker_color.Blue() & 0xff); + evt.SetInt(g_col); + wxPostEvent(GetParent(), evt); + } +} void ColorPickerPopup::set_ams_colours(std::vector ams) { @@ -1202,6 +1245,8 @@ void ColorPickerPopup::set_def_colour(wxColour col) } } + m_custom_cp->SetBackgroundColor(m_def_col); + Dismiss(); } diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp index 6c0b38e408..60d7e17c0c 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.hpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp @@ -54,6 +54,8 @@ public: class ColorPickerPopup : public PopupWindow { public: + StaticBox* m_custom_cp; + wxColourData* m_clrData; StaticBox* m_def_color_box; wxFlexGridSizer* m_ams_fg_sizer; wxColour m_def_col; @@ -65,6 +67,7 @@ public: public: ColorPickerPopup(wxWindow* parent); ~ColorPickerPopup() {}; + void on_custom_clr_picker(wxMouseEvent& event); void set_ams_colours(std::vector ams); void set_def_colour(wxColour col); void paintEvent(wxPaintEvent& evt); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index cef3bc24c9..fe956d04b3 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -540,15 +540,19 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool have_perimeters = config->opt_int("wall_loops") > 0; for (auto el : { "ensure_vertical_shell_thickness", "detect_thin_wall", "detect_overhang_wall", - "seam_position", "wall_infill_order", "outer_wall_line_width", + "seam_position", "staggered_inner_seams", "wall_infill_order", "outer_wall_line_width", "inner_wall_speed", "outer_wall_speed", "small_perimeter_speed", "small_perimeter_threshold" }) toggle_field(el, have_perimeters); bool have_infill = config->option("sparse_infill_density")->value > 0; // sparse_infill_filament uses the same logic as in Print::extruders() for (auto el : { "sparse_infill_pattern", "infill_combination", - "minimum_sparse_infill_area", "sparse_infill_filament"}) + "minimum_sparse_infill_area", "sparse_infill_filament", "infill_anchor_max"}) toggle_line(el, have_infill); + + // Only allow configuration of open anchors if the anchoring is enabled. + bool has_infill_anchors = have_infill && config->option("infill_anchor_max")->value > 0; + toggle_field("infill_anchor", has_infill_anchors); bool has_spiral_vase = config->opt_bool("spiral_mode"); bool has_top_solid_infill = config->opt_int("top_shell_layers") > 0; diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 84ada0d0e0..ac7ea22c90 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -3085,7 +3085,7 @@ void GUI_App::init_fonts() // wxSYS_OEM_FIXED_FONT and wxSYS_ANSI_FIXED_FONT use the same as // DEFAULT in wxGtk. Use the TELETYPE family as a work-around m_code_font = wxFont(wxFontInfo().Family(wxFONTFAMILY_TELETYPE)); - m_code_font.SetPointSize(m_normal_font.GetPointSize()); + m_code_font.SetPointSize(m_small_font.GetPointSize()); } void GUI_App::update_fonts(const MainFrame *main_frame) @@ -3102,7 +3102,7 @@ void GUI_App::update_fonts(const MainFrame *main_frame) m_bold_font = m_normal_font.Bold(); m_link_font = m_bold_font.Underlined(); m_em_unit = main_frame->em_unit(); - m_code_font.SetPointSize(m_normal_font.GetPointSize()); + m_code_font.SetPointSize(m_small_font.GetPointSize()); } void GUI_App::set_label_clr_modified(const wxColour& clr) diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index bd28915c27..624a89d694 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -95,7 +95,7 @@ std::map> SettingsFactory::PART_CAT }}, { L("Strength"), {{"wall_loops", "",1},{"top_shell_layers", L("Top Solid Layers"),1},{"top_shell_thickness", L("Top Minimum Shell Thickness"),1}, {"bottom_shell_layers", L("Bottom Solid Layers"),1}, {"bottom_shell_thickness", L("Bottom Minimum Shell Thickness"),1}, - {"sparse_infill_density", "",1},{"sparse_infill_pattern", "",1},{"top_surface_pattern", "",1},{"bottom_surface_pattern", "",1}, + {"sparse_infill_density", "",1},{"sparse_infill_pattern", "",1},{"infill_anchor", "",1},{"infill_anchor_max", "",1},{"top_surface_pattern", "",1},{"bottom_surface_pattern", "",1}, {"infill_combination", "",1}, {"infill_wall_overlap", "",1}, {"infill_direction", "",1}, {"bridge_angle", "",1}, {"minimum_sparse_infill_area", "",1} }}, { L("Speed"), {{"outer_wall_speed", "",1},{"inner_wall_speed", "",2},{"sparse_infill_speed", "",3},{"top_surface_speed", "",4}, {"internal_solid_infill_speed", "",5}, diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index f2c236c3eb..1b676ab67f 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2900,7 +2900,10 @@ DynamicPrintConfig ObjectList::get_default_layer_config(const int obj_idx) wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("layer_height"); config.set_key_value("layer_height",new ConfigOptionFloat(layer_height)); // BBS - config.set_key_value("extruder", new ConfigOptionInt(1)); + int extruder = object(obj_idx)->config.has("extruder") ? + object(obj_idx)->config.opt_int("extruder") : + wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("extruder"); + config.set_key_value("extruder", new ConfigOptionInt(extruder)); return config; } @@ -3314,7 +3317,7 @@ void ObjectList::part_selection_changed() Sidebar& panel = wxGetApp().sidebar(); panel.Freeze(); - wxGetApp().plater()->canvas3D()->handle_sidebar_focus_event("", false); + //wxGetApp().plater()->canvas3D()->handle_sidebar_focus_event("", false); // BBS //wxGetApp().obj_manipul() ->UpdateAndShow(update_and_show_manipulations); wxGetApp().obj_settings()->UpdateAndShow(update_and_show_settings); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index 19902d0fdb..b249b06cd8 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -771,10 +771,12 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) m_imgui->text(_L("Thickness")); ImGui::SameLine(caption_size); ImGui::PushItemWidth(list_width); - if(ImGui::InputFloat("###text_thickness", &m_thickness,0.0f, 0.0f, "%.2f")) - m_need_update_text = true; + float old_value = m_thickness; + ImGui::InputFloat("###text_thickness", &m_thickness, 0.0f, 0.0f, "%.2f"); if (m_thickness < 0.1f) m_thickness = 0.1f; + if (old_value != m_thickness) + m_need_update_text = true; const float slider_icon_width = m_imgui->get_slider_icon_size().x; const float slider_width = list_width - 1.5 * slider_icon_width - space_size; @@ -806,10 +808,12 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) m_imgui->text(_L("Embeded\ndepth")); ImGui::SameLine(caption_size); ImGui::PushItemWidth(list_width); - if (ImGui::InputFloat("###text_embeded_depth", &m_embeded_depth, 0.0f, 0.0f, "%.2f")) - m_need_update_text = true; + old_value = m_embeded_depth; + ImGui::InputFloat("###text_embeded_depth", &m_embeded_depth, 0.0f, 0.0f, "%.2f"); if (m_embeded_depth < 0.f) m_embeded_depth = 0.f; + if (old_value != m_embeded_depth) + m_need_update_text = true; ImGui::AlignTextToFramePadding(); m_imgui->text(_L("Input text")); @@ -1468,6 +1472,11 @@ void GLGizmoText::generate_text_volume(bool is_temp) TextInfo text_info = get_text_info(); if (m_is_modify && m_need_update_text) { + if (m_object_idx == -1 || m_volume_idx == -1) { + BOOST_LOG_TRIVIAL(error) << boost::format("Text: selected object_idx = %1%, volume_idx = %2%") % m_object_idx % m_volume_idx; + return; + } + plater->take_snapshot("Modify Text"); const Selection &selection = m_parent.get_selection(); ModelObject * model_object = selection.get_model()->objects[m_object_idx]; diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 9c43e0899b..27dc7f8b65 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -160,6 +160,12 @@ static wxIcon main_frame_icon(GUI_App::EAppMode app_mode) wxDEFINE_EVENT(EVT_SYNC_CLOUD_PRESET, SimpleEvent); +#ifdef __APPLE__ +static const wxString ctrl = ("Ctrl+"); +#else +static const wxString ctrl = _L("Ctrl+"); +#endif + MainFrame::MainFrame() : DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_STYLE, "mainframe") , m_printhost_queue_dlg(new PrintHostQueueDialog(this)) @@ -2026,7 +2032,6 @@ static void add_common_publish_menu_items(wxMenu* publish_menu, MainFrame* mainF static void add_common_view_menu_items(wxMenu* view_menu, MainFrame* mainFrame, std::function can_change_view) { - const wxString ctrl = _L("Ctrl+"); // The camera control accelerators are captured by GLCanvas3D::on_char(). append_menu_item(view_menu, wxID_ANY, _L("Default View") + "\t" + ctrl + "0", _L("Default View"), [mainFrame](wxCommandEvent&) { mainFrame->select_view("plate"); @@ -2056,8 +2061,6 @@ void MainFrame::init_menubar_as_editor() wxMenuBar::SetAutoWindowMenu(false); m_menubar = new wxMenuBar(); #endif - - const wxString ctrl = _L("Ctrl+"); // File menu wxMenu* fileMenu = new wxMenu; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index f5c43df957..4d87f1c1ed 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2233,7 +2233,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) //BBS: add bed_exclude_area , config(Slic3r::DynamicPrintConfig::new_from_defaults_keys({ "printable_area", "bed_exclude_area", "bed_custom_texture", "bed_custom_model", "print_sequence", - "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "skirt_loops", "skirt_distance", + "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "skirt_loops", "skirt_speed", "skirt_distance", "brim_width", "brim_object_gap", "brim_type", "nozzle_diameter", "single_extruder_multi_material", "enable_prime_tower", "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_volume", "extruder_colour", "filament_colour", "material_colour", "printable_height", "printer_model", "printer_technology", diff --git a/src/slic3r/GUI/PrinterWebView.cpp b/src/slic3r/GUI/PrinterWebView.cpp index 13102fd981..5830d13798 100644 --- a/src/slic3r/GUI/PrinterWebView.cpp +++ b/src/slic3r/GUI/PrinterWebView.cpp @@ -30,6 +30,8 @@ PrinterWebView::PrinterWebView(wxWindow *parent) return; } + Bind(wxEVT_WEBVIEW_ERROR, &PrinterWebView::OnError, this); + SetSizer(topsizer); topsizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); @@ -83,6 +85,38 @@ void PrinterWebView::OnClose(wxCloseEvent& evt) this->Hide(); } +void PrinterWebView::OnError(wxWebViewEvent &evt) +{ + auto e = "unknown error"; + switch (evt.GetInt()) { + case wxWEBVIEW_NAV_ERR_CONNECTION: + e = "wxWEBVIEW_NAV_ERR_CONNECTION"; + break; + case wxWEBVIEW_NAV_ERR_CERTIFICATE: + e = "wxWEBVIEW_NAV_ERR_CERTIFICATE"; + break; + case wxWEBVIEW_NAV_ERR_AUTH: + e = "wxWEBVIEW_NAV_ERR_AUTH"; + break; + case wxWEBVIEW_NAV_ERR_SECURITY: + e = "wxWEBVIEW_NAV_ERR_SECURITY"; + break; + case wxWEBVIEW_NAV_ERR_NOT_FOUND: + e = "wxWEBVIEW_NAV_ERR_NOT_FOUND"; + break; + case wxWEBVIEW_NAV_ERR_REQUEST: + e = "wxWEBVIEW_NAV_ERR_REQUEST"; + break; + case wxWEBVIEW_NAV_ERR_USER_CANCELLED: + e = "wxWEBVIEW_NAV_ERR_USER_CANCELLED"; + break; + case wxWEBVIEW_NAV_ERR_OTHER: + e = "wxWEBVIEW_NAV_ERR_OTHER"; + break; + } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< boost::format(": error loading page %1% %2% %3% %4%") %evt.GetURL() %evt.GetTarget() %e %evt.GetString(); +} + } // GUI diff --git a/src/slic3r/GUI/PrinterWebView.hpp b/src/slic3r/GUI/PrinterWebView.hpp index 4356268d69..bdf5f4c68f 100644 --- a/src/slic3r/GUI/PrinterWebView.hpp +++ b/src/slic3r/GUI/PrinterWebView.hpp @@ -38,6 +38,7 @@ public: void load_url(wxString& url); void UpdateState(); void OnClose(wxCloseEvent& evt); + void OnError(wxWebViewEvent& evt); private: diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index d003969d5c..bb9f7fb350 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1845,6 +1845,7 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Seam"), L"param_seam"); optgroup->append_single_option_line("seam_position", "Seam"); + optgroup->append_single_option_line("staggered_inner_seams", "Seam"); optgroup->append_single_option_line("seam_gap","Seam"); optgroup->append_single_option_line("role_based_wipe_speed","Seam"); optgroup->append_single_option_line("wipe_speed", "Seam"); @@ -1905,6 +1906,9 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Infill"), L"param_infill"); optgroup->append_single_option_line("sparse_infill_density"); optgroup->append_single_option_line("sparse_infill_pattern", "fill-patterns#infill types and their properties of sparse"); + optgroup->append_single_option_line("infill_anchor"); + optgroup->append_single_option_line("infill_anchor_max"); + optgroup->append_single_option_line("filter_out_gap_fill"); optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); @@ -2030,6 +2034,7 @@ void TabPrint::build() optgroup->append_single_option_line("skirt_loops"); optgroup->append_single_option_line("skirt_distance"); optgroup->append_single_option_line("skirt_height"); + optgroup->append_single_option_line("skirt_speed"); //optgroup->append_single_option_line("draft_shield"); optgroup->append_single_option_line("brim_type", "auto-brim"); optgroup->append_single_option_line("brim_width", "auto-brim#manual"); diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index 74efaa67ba..36cf241eef 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -218,7 +218,7 @@ wxWebView* WebView::CreateWebView(wxWindow * parent, wxString const & url) #ifndef __WIN32__ }); #endif - webView->EnableContextMenu(false); + webView->EnableContextMenu(true); } else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": failed. Use fake web view."; webView = new FakeWebView; diff --git a/src/slic3r/GUI/calib_dlg.cpp b/src/slic3r/GUI/calib_dlg.cpp index d590ca8815..cfdde5cf4d 100644 --- a/src/slic3r/GUI/calib_dlg.cpp +++ b/src/slic3r/GUI/calib_dlg.cpp @@ -376,7 +376,7 @@ void Temp_Calibration_Dlg::on_filament_type_changed(wxCommandEvent& event) { end = 230; break; case tPETG: - start = 260; + start = 250; end = 230; break; case tTPU: diff --git a/src/slic3r/Utils/Repetier.cpp b/src/slic3r/Utils/Repetier.cpp index 0569d97fae..63f4384289 100644 --- a/src/slic3r/Utils/Repetier.cpp +++ b/src/slic3r/Utils/Repetier.cpp @@ -156,7 +156,7 @@ bool Repetier::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, Error bool Repetier::validate_version_text(const boost::optional &version_text) const { - return version_text ? boost::starts_with(*version_text, "Repetier") : true; + return version_text ? (!version_text->empty()) : true; } void Repetier::set_auth(Http &http) const diff --git a/src/slic3r/Utils/bambu_networking.hpp b/src/slic3r/Utils/bambu_networking.hpp index 8e46f88c72..50f29aec3d 100644 --- a/src/slic3r/Utils/bambu_networking.hpp +++ b/src/slic3r/Utils/bambu_networking.hpp @@ -41,8 +41,7 @@ namespace BBL { #define BAMBU_NETWORK_LIBRARY "bambu_networking" #define BAMBU_NETWORK_AGENT_NAME "bambu_network_agent" -#define BAMBU_NETWORK_AGENT_VERSION "01.06.00.01" - +#define BAMBU_NETWORK_AGENT_VERSION "01.06.02.01" //iot preset type strings #define IOT_PRINTER_TYPE_STRING "printer" diff --git a/version.inc b/version.inc index 62938cd02d..53f3b7f9b6 100644 --- a/version.inc +++ b/version.inc @@ -10,5 +10,5 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "1") endif() -set(SoftFever_VERSION "1.6.3-beta") -set(SLIC3R_VERSION "01.06.00.66") \ No newline at end of file +set(SoftFever_VERSION "1.6.4-dev") +set(SLIC3R_VERSION "01.06.02.04") \ No newline at end of file